From 7249c56296b93109f972faa4c0a817add9ea7e16 Mon Sep 17 00:00:00 2001 From: Yufeng Wang Date: Sun, 8 Sep 2024 11:48:33 -0700 Subject: [PATCH 01/50] [Raspi] Fix crash on RP4 when add-local-bridge (#35468) * [Raspi] Fix crash on RP4 when add-local-bridge * Restyled by clang-format --------- Co-authored-by: Restyled.io --- .../commands/pairing/PairingCommand.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/fabric-admin/commands/pairing/PairingCommand.h b/examples/fabric-admin/commands/pairing/PairingCommand.h index 293c369b25227e..73e717b93757c2 100644 --- a/examples/fabric-admin/commands/pairing/PairingCommand.h +++ b/examples/fabric-admin/commands/pairing/PairingCommand.h @@ -250,7 +250,7 @@ class PairingCommand : public CHIPCommand, const PairingNetworkType mNetworkType; const chip::Dnssd::DiscoveryFilterType mFilterType; Command::AddressWithInterface mRemoteAddr; - NodeId mNodeId; + NodeId mNodeId = chip::kUndefinedNodeId; chip::Optional mTimeout; chip::Optional mDiscoverOnce; chip::Optional mUseOnlyOnNetworkDiscovery; @@ -272,18 +272,18 @@ class PairingCommand : public CHIPCommand, TypedComplexArgument> mComplex_DSTOffsets; - uint16_t mRemotePort; - uint16_t mDiscriminator; - uint32_t mSetupPINCode; - uint16_t mIndex; + uint16_t mRemotePort = 0; + uint16_t mDiscriminator = 0; + uint32_t mSetupPINCode = 0; + uint16_t mIndex = 0; chip::ByteSpan mOperationalDataset; chip::ByteSpan mSSID; chip::ByteSpan mPassword; - char * mOnboardingPayload; - uint64_t mDiscoveryFilterCode; - char * mDiscoveryFilterInstanceName; + char * mOnboardingPayload = nullptr; + uint64_t mDiscoveryFilterCode = 0; + char * mDiscoveryFilterInstanceName = nullptr; - bool mDeviceIsICD; + bool mDeviceIsICD = false; uint8_t mRandomGeneratedICDSymmetricKey[chip::Crypto::kAES_CCM128_Key_Length]; // For unpair From 607a4a85128d5214ba5569db8a323cb1fdfaa869 Mon Sep 17 00:00:00 2001 From: Karsten Sperling <113487422+ksperling-apple@users.noreply.github.com> Date: Mon, 9 Sep 2024 17:42:41 +1200 Subject: [PATCH 02/50] Darwin: Snapshot nodeIDToDeviceMap correctly (#35476) --- src/darwin/Framework/CHIP/MTRDeviceController.mm | 16 +++++----------- .../CHIP/MTRDeviceController_Concrete.mm | 2 +- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 7eb76c4e4e17c3..021ada1852cf9c 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -364,13 +364,10 @@ - (void)suspend @synchronized(self) { _suspended = YES; - NSMutableArray * devicesToSuspend = [NSMutableArray array]; + NSArray * devicesToSuspend; { std::lock_guard lock(*self.deviceMapLock); - NSEnumerator * devices = [self.nodeIDToDeviceMap objectEnumerator]; - for (MTRDevice * device in devices) { - [devicesToSuspend addObject:device]; - } + devicesToSuspend = [self.nodeIDToDeviceMap objectEnumerator].allObjects; } for (MTRDevice * device in devicesToSuspend) { @@ -392,13 +389,10 @@ - (void)resume @synchronized(self) { _suspended = NO; - NSMutableArray * devicesToResume = [NSMutableArray array]; + NSArray * devicesToResume; { std::lock_guard lock(*self.deviceMapLock); - NSEnumerator * devices = [self.nodeIDToDeviceMap objectEnumerator]; - for (MTRDevice * device in devices) { - [devicesToResume addObject:device]; - } + devicesToResume = [self.nodeIDToDeviceMap objectEnumerator].allObjects; } for (MTRDevice * device in devicesToResume) { @@ -490,7 +484,7 @@ - (void)cleanupAfterStartup // devices before we start invalidating. MTR_LOG("%s: %@", __PRETTY_FUNCTION__, self); os_unfair_lock_lock(self.deviceMapLock); - NSEnumerator * devices = [_nodeIDToDeviceMap objectEnumerator]; + auto * devices = [self.nodeIDToDeviceMap objectEnumerator].allObjects; [_nodeIDToDeviceMap removeAllObjects]; os_unfair_lock_unlock(self.deviceMapLock); diff --git a/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm b/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm index 4f19035f27da85..1edcb4928943a1 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm @@ -426,7 +426,7 @@ - (void)cleanupAfterStartup // devices before we start invalidating. MTR_LOG("%s: %@", __PRETTY_FUNCTION__, self); os_unfair_lock_lock(self.deviceMapLock); - NSEnumerator * devices = [self.nodeIDToDeviceMap objectEnumerator]; + auto * devices = [self.nodeIDToDeviceMap objectEnumerator].allObjects; [self.nodeIDToDeviceMap removeAllObjects]; os_unfair_lock_unlock(self.deviceMapLock); From bbc524865c1815e417a1df1fc7bc025f972d0db8 Mon Sep 17 00:00:00 2001 From: Nivi Sarkar <55898241+nivi-apple@users.noreply.github.com> Date: Mon, 9 Sep 2024 05:45:46 -0700 Subject: [PATCH 03/50] =?UTF-8?q?Add=20GetNextAction=20API=20so=20that=20a?= =?UTF-8?q?=20caller=20that=20might=20want=20to=20implement=20a=E2=80=A6?= =?UTF-8?q?=20(#35462)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add GetNextAction API so that a caller that might want to implement an event driven mechanism to drive the BDX transfer can get the next output event from the TransferSession on demand Currently we have the PollOutput API where the expectation is the caller needs to poll frequently for the next output event from the TransferSession which introduces a delay based on the poll interval in handling every single BDX message or transfer session event handled by the caller. * Update src/protocols/bdx/BdxTransferSession.h Co-authored-by: Boris Zbarsky * Address review comments * Apply suggestions from code review Co-authored-by: Boris Zbarsky * Restyled by clang-format --------- Co-authored-by: Boris Zbarsky Co-authored-by: Restyled.io --- src/protocols/bdx/BdxTransferSession.cpp | 5 +++++ src/protocols/bdx/BdxTransferSession.h | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/protocols/bdx/BdxTransferSession.cpp b/src/protocols/bdx/BdxTransferSession.cpp index 99588f0770a72e..0a513d7ea77460 100644 --- a/src/protocols/bdx/BdxTransferSession.cpp +++ b/src/protocols/bdx/BdxTransferSession.cpp @@ -134,6 +134,11 @@ void TransferSession::PollOutput(OutputEvent & event, System::Clock::Timestamp c mPendingOutput = OutputEventType::kNone; } +void TransferSession::GetNextAction(OutputEvent & event) +{ + PollOutput(event, System::SystemClock().GetMonotonicTimestamp()); +} + CHIP_ERROR TransferSession::StartTransfer(TransferRole role, const TransferInitData & initData, System::Clock::Timeout timeout) { VerifyOrReturnError(mState == TransferState::kUnitialized, CHIP_ERROR_INCORRECT_STATE); diff --git a/src/protocols/bdx/BdxTransferSession.h b/src/protocols/bdx/BdxTransferSession.h index ccd241e7fe508c..4a50e70fbb6c84 100644 --- a/src/protocols/bdx/BdxTransferSession.h +++ b/src/protocols/bdx/BdxTransferSession.h @@ -165,6 +165,25 @@ class DLL_EXPORT TransferSession */ void PollOutput(OutputEvent & event, System::Clock::Timestamp curTime); + /** + * @brief + * Gets the pending output event from the transfer session in the event param passed in by the caller. + * The output event may contain some data for the caller to act upon. If there is no pending output event, + * the caller will get an event of type OutputEventType::kNone. + * + * It is possible that consecutive calls to this method may emit different outputs depending on the state of the + * TransferSession object. The caller is generally expected to keep calling this method until it gets an event of type + * OutputEventType::kNone. + * + * If the output event type is kMsgToSend, the caller is expected to send the message immediately on the + * relevant exchange. In this case the BDX session timeout timer will start when GetNextAction is called. + * + * See OutputEventType for all possible output event types. + * + * @param event Reference to an OutputEvent struct that will be filled out with any pending output event data + */ + void GetNextAction(OutputEvent & event); + /** * @brief * Initializes the TransferSession object and prepares a TransferInit message (emitted via PollOutput()). From bbce050a50d7451821fa3fedec3e7f09ed44d987 Mon Sep 17 00:00:00 2001 From: Arkadiusz Bokowy Date: Mon, 9 Sep 2024 16:38:17 +0200 Subject: [PATCH 04/50] [Fabric-Sync] Do not use stdout with non-blocking asyncio (#35446) Wrapping stdout with StreamWriter leads to setting stdout stream to non-blocking. In consequence that parent process and all child processes have stdio in non-blocking mode, which is not a standard setup. This leads to random failures (e.g. Python's print might trow BlockinIOError exception). --- .../fabric-admin/scripts/fabric-sync-app.py | 63 +++++++------------ 1 file changed, 23 insertions(+), 40 deletions(-) diff --git a/examples/fabric-admin/scripts/fabric-sync-app.py b/examples/fabric-admin/scripts/fabric-sync-app.py index 2a8508231f8fa0..78e8f84f0e1523 100755 --- a/examples/fabric-admin/scripts/fabric-sync-app.py +++ b/examples/fabric-admin/scripts/fabric-sync-app.py @@ -20,30 +20,13 @@ import shutil import signal import sys +import typing from argparse import ArgumentParser from tempfile import TemporaryDirectory -async def asyncio_stdin() -> asyncio.StreamReader: - """Wrap sys.stdin in an asyncio StreamReader.""" - loop = asyncio.get_event_loop() - reader = asyncio.StreamReader() - protocol = asyncio.StreamReaderProtocol(reader) - await loop.connect_read_pipe(lambda: protocol, sys.stdin) - return reader - - -async def asyncio_stdout(file=sys.stdout) -> asyncio.StreamWriter: - """Wrap an IO stream in an asyncio StreamWriter.""" - loop = asyncio.get_event_loop() - transport, protocol = await loop.connect_write_pipe( - lambda: asyncio.streams.FlowControlMixin(loop=loop), - os.fdopen(file.fileno(), 'wb')) - return asyncio.streams.StreamWriter(transport, protocol, None, loop) - - async def forward_f(prefix: bytes, f_in: asyncio.StreamReader, - f_out: asyncio.StreamWriter, cb=None): + f_out: typing.BinaryIO, cb=None): """Forward f_in to f_out with a prefix attached. This function can optionally feed received lines to a callback function. @@ -54,9 +37,9 @@ async def forward_f(prefix: bytes, f_in: asyncio.StreamReader, break if cb is not None: cb(line) - f_out.write(prefix) - f_out.write(line) - await f_out.drain() + f_out.buffer.write(prefix) + f_out.buffer.write(line) + f_out.flush() async def forward_pipe(pipe_path: str, f_out: asyncio.StreamWriter): @@ -72,6 +55,7 @@ async def forward_pipe(pipe_path: str, f_out: asyncio.StreamWriter): data = os.read(fd, 1024) if data: f_out.write(data) + await f_out.drain() if not data: await asyncio.sleep(0.1) except BlockingIOError: @@ -80,13 +64,17 @@ async def forward_pipe(pipe_path: str, f_out: asyncio.StreamWriter): async def forward_stdin(f_out: asyncio.StreamWriter): """Forward stdin to f_out.""" - reader = await asyncio_stdin() + loop = asyncio.get_event_loop() + reader = asyncio.StreamReader() + protocol = asyncio.StreamReaderProtocol(reader) + await loop.connect_read_pipe(lambda: protocol, sys.stdin) while True: line = await reader.readline() if not line: # Exit on Ctrl-D (EOF). sys.exit(0) f_out.write(line) + await f_out.drain() class Subprocess: @@ -109,15 +97,9 @@ async def run(self): stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE) # Add the stdout and stderr processing to the event loop. - asyncio.create_task(forward_f( - self.tag, - self.p.stderr, - await asyncio_stdout(sys.stderr))) - asyncio.create_task(forward_f( - self.tag, - self.p.stdout, - await asyncio_stdout(sys.stdout), - cb=self._check_output)) + asyncio.create_task(forward_f(self.tag, self.p.stderr, sys.stderr)) + asyncio.create_task(forward_f(self.tag, self.p.stdout, sys.stdout, + cb=self._check_output)) async def send(self, message: str, expected_output: str = None, timeout: float = None): """Send a message to a process and optionally wait for a response.""" @@ -206,14 +188,6 @@ async def main(args): if pipe and not os.path.exists(pipe): os.mkfifo(pipe) - def terminate(signum, frame): - admin.terminate() - bridge.terminate() - sys.exit(0) - - signal.signal(signal.SIGINT, terminate) - signal.signal(signal.SIGTERM, terminate) - admin, bridge = await asyncio.gather( run_admin( args.app_admin, @@ -235,6 +209,15 @@ def terminate(signum, frame): passcode=args.passcode, )) + def terminate(): + admin.terminate() + bridge.terminate() + sys.exit(0) + + loop = asyncio.get_event_loop() + loop.add_signal_handler(signal.SIGINT, terminate) + loop.add_signal_handler(signal.SIGTERM, terminate) + # Wait a bit for apps to start. await asyncio.sleep(1) From 0c15ce93380fd2aaa92a3911c80b73420105c3eb Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Mon, 9 Sep 2024 11:26:23 -0400 Subject: [PATCH 05/50] Create a script and instructions to create an aarch64 sysroot via qemu (#35420) * Prepare making a sysroot via qemu, so we do not need a raspberry pi ready (even though this is MUCH slower) * Update gitignore * Rename file for clearer naming * Start adding some documentation on sysroot generation * Restyle and update the image to 22.04 since this is what we use today * Restyle * vm is a common word * Add helper info for mkpasswd existence * More help messages * More help and have auto-install because it is convenient * Restyle * More convenient text and help * More updates for friendlyness * Fix cloudinit schema * Allocate more virtual CPUs as some things run slightly faster (a bit over 10% faster boot for me) * Created a script to upload the cipd package * Script cleanup and readme update * User friendly progress and output * Updated gitignore and script for nicer content * Script cleanup for symlinks (goes from 7GB to 1.1GB) * More updates to the rsync execution options * Single rsync invokation, so that safe symlinks works better * Restyle * Update tag to be unique, since I was missing a symlink before and that seemed more broken * Update integrations/docker/images/stage-1/chip-build-crosscompile/start-sysroot-vm.sh Co-authored-by: Kiel Oleson * Restyle * Update start-sysroot-vm.sh Update text about very weak password. --------- Co-authored-by: Andrei Litvin Co-authored-by: Kiel Oleson --- .github/.wordlist.txt | 1 + .../chip-build-crosscompile/.gitignore | 7 + .../stage-1/chip-build-crosscompile/README.md | 66 +++++- .../start-sysroot-vm.sh | 217 ++++++++++++++++++ .../upload-cidp-package.sh | 61 +++++ 5 files changed, 341 insertions(+), 11 deletions(-) create mode 100755 integrations/docker/images/stage-1/chip-build-crosscompile/start-sysroot-vm.sh create mode 100755 integrations/docker/images/stage-1/chip-build-crosscompile/upload-cidp-package.sh diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt index 9cb24bcf4d8b0b..c84d4038352101 100644 --- a/.github/.wordlist.txt +++ b/.github/.wordlist.txt @@ -1532,6 +1532,7 @@ virtualenv visualstudio vlatest VLEDs +vm vn vnc vous diff --git a/integrations/docker/images/stage-1/chip-build-crosscompile/.gitignore b/integrations/docker/images/stage-1/chip-build-crosscompile/.gitignore index 37e0c7aa5d67ba..e4e6d2a90dfcbe 100644 --- a/integrations/docker/images/stage-1/chip-build-crosscompile/.gitignore +++ b/integrations/docker/images/stage-1/chip-build-crosscompile/.gitignore @@ -1,3 +1,10 @@ .cipd +cidata.iso +cipd.yaml ensure_file.txt +meta-data +sysrootsrv.img ubuntu-21.04-aarch64-sysroot.tar.xz +ubuntu-24.04-aarch64-sysroot +ubuntu-24.04-server-cloudimg-arm64.img +user-data diff --git a/integrations/docker/images/stage-1/chip-build-crosscompile/README.md b/integrations/docker/images/stage-1/chip-build-crosscompile/README.md index d27fc2fe601233..4d97a7c81a6210 100644 --- a/integrations/docker/images/stage-1/chip-build-crosscompile/README.md +++ b/integrations/docker/images/stage-1/chip-build-crosscompile/README.md @@ -3,11 +3,55 @@ This image adds cross-compilation support files (a suitable sysroot) on top of the regular linux chip-build image. -The build assumes a file named `ubuntu-21.04-aarch64-sysroot.tar.xz` exists in +The build assumes a file named `ubuntu-22.04-aarch64-sysroot.tar.xz` exists in the current directory. This can generally be manually built using an existing Raspberry Pi device (or equivalent qemu) and a convenience copy was created in CIPD +#### Creating a Sysroot (qemu virtual emulator) + +NOTE: this approach is slower due to emulation usage, however has the advantage +of not requiring separate hardware. + +Ensure `qemu` and `virt-install` prerequisites are met: + +``` +apt-get install qemu-system-arm virtinst libvirt-daemon +``` + +Start up the sysroot virtual machine. This will be named `sysrootsrv`: + +``` +./start-sysroot-vm.sh +``` + +Connect to a console to monitor progress. The VM is configured to pre-install +packages based on CHIP BUILDING.md documentation plus any additional packages. + +``` +virsh console sysrootsrv +``` + +Once installation completed, you can also login as `ubuntu/1234` or use +`ssh ubuntu@localhost -p 5555` + +The current image is based on Ubuntu 24.04, so you can create an image via: + +``` +rsync -avL -e 'ssh -p 5555' ubuntu@localhost:/lib ubuntu-24.04-aarch64-sysroot +rsync -avL -e 'ssh -p 5555' ubuntu@localhost:/usr/lib ubuntu-24.04-aarch64-sysroot/usr +rsync -avL -e 'ssh -p 5555' ubuntu@localhost:/usr/include ubuntu-24.04-aarch64-sysroot/usr +``` + +At this point you have a sysroot in `ubuntu-24.04-aarch64-sysroot` + +To create/upload a CIPD package tagged with the current date, a script is +provided: + +``` +upload-cipd-package.sh +``` + #### Creating a Sysroot Start with a fresh Raspberry PI image: @@ -15,16 +59,16 @@ Start with a fresh Raspberry PI image: - Use the Raspberry pi imager from https://www.raspberrypi.org/software/ - Follow installation instructions from the CHIP BUILDING.md document. Generally this includes: - - Use Ubuntu 21.04 server 64 bit server image + - Use Ubuntu 22.04 server 64 bit server image - Install required compile dependencies via `apt-get`. You may skip installing git and python3 dependencies to save some image size Generate a sysroot. You can do this locally (slow due to SD performance): ``` -rsync -avL /lib ubuntu-21.04-aarch64-sysroot/ -rsync -avL /usr/lib ubuntu-21.04-aarch64-sysroot/usr -rsync -avL /usr/include ubuntu-21.04-aarch64-sysroot/usr +rsync -avL /lib ubuntu-22.04-aarch64-sysroot/ +rsync -avL /usr/lib ubuntu-22.04-aarch64-sysroot/usr +rsync -avL /usr/include ubuntu-22.04-aarch64-sysroot/usr ``` or you can copy directly to your host machine via @@ -33,9 +77,9 @@ or you can copy directly to your host machine via export PI="ip-of-raspberry-pi" ssh-copy-id ubuntu@$PI -rsync -avL ubuntu@$PI:/lib ubuntu-21.04-aarch64-sysroot -rsync -avL ubuntu@$PI:/usr/lib ubuntu-21.04-aarch64-sysroot/usr -rsync -avL ubuntu@$PI:/include/lib ubuntu-21.04-aarch64-sysroot/usr +rsync -avL ubuntu@$PI:/lib ubuntu-22.04-aarch64-sysroot +rsync -avL ubuntu@$PI:/usr/lib ubuntu-22.04-aarch64-sysroot/usr +rsync -avL ubuntu@$PI:/usr/include ubuntu-22.04-aarch64-sysroot/usr ``` NOTE: in the future, if creating a 32-bit image (not covered by this docker @@ -47,7 +91,7 @@ image yet), the following symlinks are required: Once the sysroot is on the host machine, create the corresponding `tar.xz` file: ``` -tar cvfJ ubuntu-21.04-aarch64-sysroot.tar.xz ubuntu-21.04-aarch64-sysroot +tar cvfJ ubuntu-22.04-aarch64-sysroot.tar.xz ubuntu-22.04-aarch64-sysroot ``` #### CIPD image @@ -55,12 +99,12 @@ tar cvfJ ubuntu-21.04-aarch64-sysroot.tar.xz ubuntu-21.04-aarch64-sysroot CIPD image is provided as a convenience to avoid the need to spend time rebuilding a sysroot. It is located at: -https://chrome-infra-packages.appspot.com/p/experimental/matter/sysroot/ubuntu-21.04-aarch64/+/ +https://chrome-infra-packages.appspot.com/p/experimental/matter/sysroot/ubuntu-22.04-aarch64/+/ and can be downloaded using the `cipd` script from [depot_tools](https://dev.chromium.org/developers/how-tos/depottools): ``` -echo 'experimental/matter/sysroot/ubuntu-21.04-aarch64 latest' > ensure_file.txt +echo 'experimental/matter/sysroot/ubuntu-22.04-aarch64 latest' > ensure_file.txt cipd ensure -ensure-file ensure_file.txt -root ./ ``` diff --git a/integrations/docker/images/stage-1/chip-build-crosscompile/start-sysroot-vm.sh b/integrations/docker/images/stage-1/chip-build-crosscompile/start-sysroot-vm.sh new file mode 100755 index 00000000000000..fb56c433c20666 --- /dev/null +++ b/integrations/docker/images/stage-1/chip-build-crosscompile/start-sysroot-vm.sh @@ -0,0 +1,217 @@ +#!/usr/bin/env bash + +# This script is intended to build a SYSROOT that can be used as a base to cross-compile +# CHIP for aarch64 (i.e. that runs on a RaspberryPi) from a amd64 linux machine + +set -e + +start_console=1 + +while getopts "hin" opt; do + case $opt in + h) + echo "Usage: $0 [-h] [-i]" + echo " -h Displays this help message" + echo " -i Attempt to 'sudo apt-get install' required packages" + echo " -n Do not start a console after vm is created" + exit 0 + ;; + i) + echo "Installing required packages ..." + sudo apt-get install \ + genisoimage \ + libvirt-daemon \ + qemu-system-arm \ + qemu-utils \ + virtinst \ + whois \ + ; + ;; + n) + echo "Console will not be started after virtual machine startup." + start_console=0 + ;; + esac +done + +if ! which qemu-system-aarch64 >/dev/null; then + echo "Cannot find 'qemu-system-aarch64'. Did you 'sudo apt-get install qemu-system-arm' ?" + exit 1 +fi + +if ! which virt-install >/dev/null; then + echo "Cannot find 'virt-install'. Did you 'sudo apt-get install virtinst' ?" + exit 1 +fi + +if ! [ -f /usr/sbin/libvirtd ]; then + echo "Cannot find 'virt-install'. Did you 'sudo apt-get install libvirt-daemon' ?" + exit 1 +fi + +if ! which mkpasswd >/dev/null; then + echo "Cannot find 'mkpasswd'. Did you 'sudo apt-get install whois' ?" + exit 1 +fi + +if ! which qemu-img >/dev/null; then + echo "Cannot find 'qemu-img'. Did you 'sudo apt-get install qemu-utis' ?" + exit 1 +fi + +if ! which genisoimage >/dev/null; then + echo "Cannot find 'genisoimage'. Did you 'sudo apt-get install genisoimage' ?" + exit 1 +fi + +CLOUD_IMAGE_URL="https://cloud-images.ubuntu.com/releases/24.04/release-20240821/ubuntu-24.04-server-cloudimg-arm64.img" +CLOUD_IMAGE_FILE=$(basename "$CLOUD_IMAGE_URL") + +if ! [ -f "$CLOUD_IMAGE_FILE" ]; then + echo "Image $CLOUD_IMAGE_FILE does not exist. Downloading ..." + wget "$CLOUD_IMAGE_URL" +else + echo "Using existing $CLOUD_IMAGE_FILE ..." +fi + +rm -f sysrootsrv.img +qemu-img create -b "$CLOUD_IMAGE_FILE" -f qcow2 -F qcow2 sysrootsrv.img 10G + +# local user allowed to SSH in to the host directly without a password +SSH_KEY=$(cat ~/.ssh/id_rsa.pub) + +# set a login password. +# NOTE: this is a VERY WEAK password, however this should be ok because +# this is a local and temporary virtual machine that is NOT accessible +# anywhere except through the redirected port 5555 on localhost or +# via "virsh console" (which is the primary purpose for it: debugging) +# +# This is NOT meant as a persistent vm and should be deleted after use. +PASSWORD_HASH=$(mkpasswd 1234) + +# Create cloud init files +cat >user-data <>meta-data +echo 'local-hostname: sysrootsrv' >>meta-data + +genisoimage -output cidata.iso -V cidata -r -J user-data meta-data + +# NOTE: direct qemu-system-aarch64 can also be used, however that requires +# having QEMU_EFI.fd available (and location for that varies). Using +# virt-install uses extra packages/complexity however also allows +# the use of virsh for some operations. +# +# truncate -s 64m varstore.img +# truncate -s 64m efi.img +# dd if=/usr/share/qemu-efi-aarch64/QEMU_EFI.fd of=efi.img conv=notrunc +# +# # QEMU console exit is `CTRL + a, x` +# qemu-system-aarch64 \ +# -m 8192 \ +# -M virt \ +# -cpu max \ +# -nographic \ +# -drive if=pflash,format=raw,file=efi.img,readonly=on \ +# -drive if=pflash,format=raw,file=varstore.img \ +# -drive if=none,file=sysrootsrv.img,id=hd0 \ +# -device virtio-blk-device,drive=hd0 \ +# -cdrom cidata.iso \ +# -netdev user,id=netdev0,hostfwd=tcp::5555-:22 \ +# -device virtio-net-pci,netdev=netdev0 \ +# ; # last line + +# EXAMPLE COMMANDS: +# +# View generated image: +# virsh dumpxml sysrootsrv +# +# Get a console and login (exit with `CTRL + ]`) +# virsh console sysrootsrv +# +# Delete: +# virsh destroy sysrootsrv && virsh undefine --nvram sysrootsrv +virt-install \ + --name sysrootsrv \ + --memory 8192 \ + --arch aarch64 \ + --vcpus 8 \ + --import \ + --disk path=sysrootsrv.img,format=qcow2 \ + --disk path=cidata.iso,device=cdrom \ + --os-variant=ubuntu24.04 \ + --network=user \ + --xml "xpath.delete=./devices/input[@bus = 'usb']" \ + --noautoconsole \ + ;# last-line + +# Allow ssh via: +# ssh ubuntu@localhost -p 5555 +virsh qemu-monitor-command --hmp sysrootsrv 'hostfwd_add ::5555-:22' + +echo -e "\e[32mDONE\e[0m" +echo "" +echo "To delete the VM use:" +echo "" +echo " virsh destroy sysrootsrv && virsh undefine --nvram sysrootsrv" +echo "" +echo "VM will auto-install packages via cloud-init. " +echo "Look out for a message of 'Initial installation DONE' in the console. " +echo "" + +if [ "$start_console" -eq 1 ]; then + echo "Delaying console start to have final message visible." + echo "Don't worry, vm startup takes a while anyway..." + sleep 10 + echo "Starting console ..." + virsh console sysrootsrv +else + echo "Console is not auto-started." + echo "To monitor VM startup/status you can open a console using: " + echo "" + echo " virsh console sysrootsrv" + echo "" + echo "And you can exit that console using 'CTRL + ]'" +fi diff --git a/integrations/docker/images/stage-1/chip-build-crosscompile/upload-cidp-package.sh b/integrations/docker/images/stage-1/chip-build-crosscompile/upload-cidp-package.sh new file mode 100755 index 00000000000000..eb668bb97e025d --- /dev/null +++ b/integrations/docker/images/stage-1/chip-build-crosscompile/upload-cidp-package.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +# This script is intended to be run post-install (NOTE: install takes a LONG time) +# of start-sysroot-vm. + +set -e + +OUTPUT_DIR=ubuntu-24.04-aarch64-sysroot +PACKAGE=experimental/matter/sysroot/ubuntu-24.04-aarch64 + +echo "Copying a sysroot in $OUTPUT_DIR" +mkdir -p "$OUTPUT_DIR" + +RSYNC_RSH="ssh -p 5555" + +echo "COPYING from VM (ubuntu@localhost on port 5555) ..." +rsync \ + --archive \ + --human-readable \ + --links \ + --delete-during \ + --delete-excluded \ + --safe-links \ + --info=progress2 \ + --info=name0 \ + --exclude='lib/aarch64-linux-gnu/dri' \ + --exclude='lib/firmware' \ + --exclude='lib/git-core' \ + --exclude='lib/modules' \ + --exclude='lib/ssl/private' \ + --exclude='lib/systemd' \ + ubuntu@localhost:/usr/include \ + ubuntu@localhost:/usr/lib \ + "$OUTPUT_DIR/usr" + +# Ubuntu 24.04 lib is just a symlink +rm -f "$OUTPUT_DIR/lib" +ln -s usr/lib "$OUTPUT_DIR/lib" + +echo "Creating cipd definition" +cat >cipd.yaml < Date: Mon, 9 Sep 2024 11:35:42 -0400 Subject: [PATCH 06/50] Remove LocalizationConfiguration and TimeFormatLocalization from most samples (#35450) * Remove unnecessary clusters from most samples * Regen ZAP * Remove on/off server from chef light switch * Fix test_zap_file_parser.py --- ...p_rootnode_dimmablelight_bCwGYSDpoe.matter | 76 ----- ...noip_rootnode_dimmablelight_bCwGYSDpoe.zap | 164 ---------- ...ootnode_airqualitysensor_e63187f6c9.matter | 74 ----- .../rootnode_airqualitysensor_e63187f6c9.zap | 132 -------- ...ootnode_basicvideoplayer_0ff86e943b.matter | 24 -- .../rootnode_basicvideoplayer_0ff86e943b.zap | 74 ----- .../rootnode_contactsensor_lFAGG1bfRO.matter | 76 ----- .../rootnode_contactsensor_lFAGG1bfRO.zap | 164 ---------- .../rootnode_dimmablelight_bCwGYSDpoe.matter | 76 ----- .../rootnode_dimmablelight_bCwGYSDpoe.zap | 164 ---------- ...tnode_dimmablepluginunit_f8a9a0b9d4.matter | 74 ----- ...rootnode_dimmablepluginunit_f8a9a0b9d4.zap | 132 -------- .../rootnode_dishwasher_cc105034fe.matter | 80 ----- .../rootnode_dishwasher_cc105034fe.zap | 228 -------------- .../rootnode_doorlock_aNKYAreMXE.matter | 76 ----- .../devices/rootnode_doorlock_aNKYAreMXE.zap | 164 ---------- ...tnode_extendedcolorlight_8lcaaYJVAa.matter | 76 ----- ...rootnode_extendedcolorlight_8lcaaYJVAa.zap | 164 ---------- .../devices/rootnode_fan_7N2TobIlOX.matter | 77 ----- .../chef/devices/rootnode_fan_7N2TobIlOX.zap | 180 ----------- .../rootnode_flowsensor_1zVxHedlaV.matter | 76 ----- .../rootnode_flowsensor_1zVxHedlaV.zap | 164 ---------- ...tnode_heatingcoolingunit_ncdGai1E5a.matter | 76 ----- ...rootnode_heatingcoolingunit_ncdGai1E5a.zap | 164 ---------- .../rootnode_humiditysensor_Xyj4gda6Hb.matter | 76 ----- .../rootnode_humiditysensor_Xyj4gda6Hb.zap | 164 ---------- .../rootnode_laundrywasher_fb10d238c8.matter | 80 ----- .../rootnode_laundrywasher_fb10d238c8.zap | 228 -------------- .../rootnode_lightsensor_lZQycTFcJK.matter | 76 ----- .../rootnode_lightsensor_lZQycTFcJK.zap | 164 ---------- ...rootnode_occupancysensor_iHyVgifZuo.matter | 76 ----- .../rootnode_occupancysensor_iHyVgifZuo.zap | 164 ---------- .../rootnode_onofflight_bbs1b7IaOV.matter | 76 ----- .../rootnode_onofflight_bbs1b7IaOV.zap | 166 +--------- .../rootnode_onofflight_samplemei.matter | 76 ----- .../devices/rootnode_onofflight_samplemei.zap | 164 ---------- ...ootnode_onofflightswitch_FsPlMr090Q.matter | 161 ---------- .../rootnode_onofflightswitch_FsPlMr090Q.zap | 298 +----------------- ...rootnode_onoffpluginunit_Wtf8ss5EBY.matter | 76 ----- .../rootnode_onoffpluginunit_Wtf8ss5EBY.zap | 164 ---------- .../rootnode_pressuresensor_s0qC9wLH4k.matter | 76 ----- .../rootnode_pressuresensor_s0qC9wLH4k.zap | 164 ---------- .../devices/rootnode_pump_5f904818cc.matter | 80 ----- .../chef/devices/rootnode_pump_5f904818cc.zap | 228 -------------- .../devices/rootnode_pump_a811bb33a0.matter | 80 ----- .../chef/devices/rootnode_pump_a811bb33a0.zap | 228 -------------- ...eraturecontrolledcabinet_ffdb696680.matter | 80 ----- ...emperaturecontrolledcabinet_ffdb696680.zap | 228 -------------- .../rootnode_speaker_RpzeXdimqA.matter | 76 ----- .../devices/rootnode_speaker_RpzeXdimqA.zap | 164 ---------- ...otnode_temperaturesensor_Qy1zkNW7c3.matter | 76 ----- .../rootnode_temperaturesensor_Qy1zkNW7c3.zap | 164 ---------- ...otnode_waterleakdetector_0b067acfa3.matter | 28 -- .../rootnode_waterleakdetector_0b067acfa3.zap | 138 -------- .../rootnode_windowcovering_RLCxaGi9Yx.matter | 76 ----- .../rootnode_windowcovering_RLCxaGi9Yx.zap | 164 ---------- examples/chef/devices/template.zap | 138 -------- examples/chef/kvs1 | 7 + .../test_files/sample_zap_file.zap | 164 ---------- .../test_files/sample_zap_file_meta.yaml | 6 - .../contact-sensor-app.matter | 76 ----- .../contact-sensor-app.zap | 164 ---------- .../dishwasher-common/dishwasher-app.matter | 80 ----- .../dishwasher-common/dishwasher-app.zap | 228 -------------- .../nxp/zap/laundry-washer-app.matter | 82 ----- .../nxp/zap/laundry-washer-app.zap | 260 --------------- .../light-switch-app.matter | 76 ----- .../light-switch-common/light-switch-app.zap | 164 ---------- .../lighting-common/lighting-app.matter | 76 ----- .../lighting-common/lighting-app.zap | 166 +--------- .../data_model/lighting-app-ethernet.matter | 76 ----- .../data_model/lighting-app-ethernet.zap | 164 ---------- .../data_model/lighting-app-thread.matter | 76 ----- .../data_model/lighting-app-thread.zap | 164 ---------- .../data_model/lighting-app-wifi.matter | 76 ----- .../data_model/lighting-app-wifi.zap | 164 ---------- .../lighting-common/lighting-app.matter | 76 ----- .../lighting-common/lighting-app.zap | 164 ---------- .../data_model/lighting-thread-app.matter | 76 ----- .../silabs/data_model/lighting-thread-app.zap | 164 ---------- .../data_model/lighting-wifi-app.matter | 76 ----- .../silabs/data_model/lighting-wifi-app.zap | 164 ---------- examples/lock-app/lock-common/lock-app.matter | 28 -- examples/lock-app/lock-common/lock-app.zap | 138 -------- .../network-manager-app.zap | 2 +- .../ota-provider-app.matter | 76 ----- .../ota-provider-common/ota-provider-app.zap | 164 ---------- .../ota-requestor-app.matter | 80 ----- .../ota-requestor-app.zap | 228 -------------- .../refrigerator-app.matter | 80 ----- .../refrigerator-common/refrigerator-app.zap | 228 -------------- .../smoke-co-alarm-app.matter | 76 ----- .../smoke-co-alarm-app.zap | 164 ---------- .../temperature-measurement.matter | 76 ----- .../temperature-measurement.zap | 164 ---------- .../thread-br-common/thread-br-app.matter | 76 ----- .../thread-br-common/thread-br-app.zap | 164 ---------- examples/window-app/common/window-app.matter | 84 ----- examples/window-app/common/window-app.zap | 292 ----------------- 99 files changed, 11 insertions(+), 12250 deletions(-) create mode 100644 examples/chef/kvs1 diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter index b837d4bbb6423a..1d27e85467bc08 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter @@ -988,67 +988,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2047,21 +1986,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - callback attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap index ec8d9f537cc5ed..1636d8aab6b119 100644 --- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap +++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter b/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter index ef127a4ba46cde..ee845c7c6cffda 100644 --- a/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter +++ b/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.matter @@ -693,67 +693,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ cluster PowerSource = 47 { revision 1; // NOTE: Default/not specifically set @@ -2474,19 +2413,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.zap b/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.zap index 535aa424e1d2a7..7154d9edf4c91f 100644 --- a/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.zap +++ b/examples/chef/devices/rootnode_airqualitysensor_e63187f6c9.zap @@ -929,138 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter index 60e29aeeb5f96b..bded4104eae359 100644 --- a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter +++ b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.matter @@ -890,23 +890,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2371,13 +2354,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.zap b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.zap index 8a6e75210fa6b5..43d2e0e15b5146 100644 --- a/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.zap +++ b/examples/chef/devices/rootnode_basicvideoplayer_0ff86e943b.zap @@ -929,80 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter index 3e3a4eaa84963f..fd8ddbe72bc1ca 100644 --- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter +++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter @@ -791,67 +791,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ cluster PowerSource = 47 { revision 1; // NOTE: Default/not specifically set @@ -1957,21 +1896,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap index d050409f3625c6..78408b145c9317 100644 --- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap +++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter index 4c659dcce73dee..b6ca20a4a986e9 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter @@ -988,67 +988,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1944,21 +1883,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap index 9b755037ba1aa6..fc6b2773a67e86 100644 --- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap +++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap @@ -961,170 +961,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter index 92b02371029b94..564154ce2112c6 100644 --- a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter +++ b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.matter @@ -988,67 +988,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2098,19 +2037,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.zap b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.zap index 94d7fb252c2d68..09dfe991518468 100644 --- a/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.zap +++ b/examples/chef/devices/rootnode_dimmablepluginunit_f8a9a0b9d4.zap @@ -929,138 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter b/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter index 07232aa02be8e1..9a567896dfdd24 100644 --- a/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter +++ b/examples/chef/devices/rootnode_dishwasher_cc105034fe.matter @@ -539,67 +539,6 @@ cluster BasicInformation = 40 { command MfgSpecificPing(): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -1499,25 +1438,6 @@ endpoint 0 { ram attribute clusterRevision default = 3; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { persist attribute temperatureUnit default = 0; callback attribute generatedCommandList; diff --git a/examples/chef/devices/rootnode_dishwasher_cc105034fe.zap b/examples/chef/devices/rootnode_dishwasher_cc105034fe.zap index 770fe6edaf16d3..e0ee90ac36fc3b 100644 --- a/examples/chef/devices/rootnode_dishwasher_cc105034fe.zap +++ b/examples/chef/devices/rootnode_dishwasher_cc105034fe.zap @@ -958,234 +958,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter index 2b27a22610f7b4..fc6ef7614fc562 100644 --- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter +++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter @@ -693,67 +693,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ cluster PowerSource = 47 { revision 1; // NOTE: Default/not specifically set @@ -2493,21 +2432,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap index 50e1a4bf1da25c..a08fcd9f2f02b7 100644 --- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap +++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter index 265dc262215921..70713aa72d3a44 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter @@ -988,67 +988,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2206,21 +2145,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap index 308b192c368ba9..5cfcfdfa3a27a8 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter index 19e0d8a149ea9b..1d3ab9d65ac6ad 100644 --- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter +++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter @@ -770,67 +770,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1742,22 +1681,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap b/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap index 29c2139fd0a09f..2ee1ba966b139a 100644 --- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap +++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap @@ -929,186 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter index eb578e77f624d1..522000c18f2b44 100644 --- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter +++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter @@ -791,67 +791,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1697,21 +1636,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap index 09593e5b109f30..3974dabbc27d78 100644 --- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap +++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter index 84675efc397ef9..6313ced446ae52 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter @@ -988,67 +988,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2315,21 +2254,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap index b3f7ab84762651..483f04f74af7e0 100644 --- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap +++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter index 00f7af07eed1b9..900b2933d0c4fc 100644 --- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter +++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter @@ -791,67 +791,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1697,21 +1636,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap index 9af0c6f4e97924..11d5fb7f1dee99 100644 --- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap +++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter index 42e7362bde656d..47ed02f1523ca3 100644 --- a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter +++ b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter @@ -539,67 +539,6 @@ cluster BasicInformation = 40 { command MfgSpecificPing(): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -1578,25 +1517,6 @@ endpoint 0 { ram attribute clusterRevision default = 3; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { persist attribute temperatureUnit default = 0; callback attribute generatedCommandList; diff --git a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.zap b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.zap index f023dad7d8e8a4..7b3d2d49a9a95d 100644 --- a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.zap +++ b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.zap @@ -958,234 +958,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter index 902658e2ffd476..724f3b69af8a2c 100644 --- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter +++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter @@ -791,67 +791,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1703,21 +1642,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap index e6c9ce20572a5e..459c52fe5a2570 100644 --- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap +++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter index 65a0c9cce398a4..de46def1ea4999 100644 --- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter +++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter @@ -791,67 +791,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1745,21 +1684,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap index 3f61a61d3c5b58..e6b4dcef3ed3ae 100644 --- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap +++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter index 6cbdac26fa5923..dc0c1077468544 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter @@ -988,67 +988,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1878,21 +1817,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap index aa402e3f0b0df2..53e30c1ed298cd 100644 --- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap +++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, @@ -3478,4 +3314,4 @@ "parentEndpointIdentifier": null } ] -} +} \ No newline at end of file diff --git a/examples/chef/devices/rootnode_onofflight_samplemei.matter b/examples/chef/devices/rootnode_onofflight_samplemei.matter index 35addbe1b2cac6..75c0b20fb975a7 100644 --- a/examples/chef/devices/rootnode_onofflight_samplemei.matter +++ b/examples/chef/devices/rootnode_onofflight_samplemei.matter @@ -988,67 +988,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1910,21 +1849,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_onofflight_samplemei.zap b/examples/chef/devices/rootnode_onofflight_samplemei.zap index 6670453d47603e..30dca3d1e54ebf 100644 --- a/examples/chef/devices/rootnode_onofflight_samplemei.zap +++ b/examples/chef/devices/rootnode_onofflight_samplemei.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter index 7c82c5b9b53516..18c776de2ab970 100644 --- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter +++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter @@ -433,78 +433,6 @@ cluster OnOff = 6 { command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; } -/** Attributes and commands for switching devices between 'On' and 'Off' states. */ -cluster OnOff = 6 { - revision 6; - - enum DelayedAllOffEffectVariantEnum : enum8 { - kDelayedOffFastFade = 0; - kNoFade = 1; - kDelayedOffSlowFade = 2; - } - - enum DyingLightEffectVariantEnum : enum8 { - kDyingLightFadeOff = 0; - } - - enum EffectIdentifierEnum : enum8 { - kDelayedAllOff = 0; - kDyingLight = 1; - } - - enum StartUpOnOffEnum : enum8 { - kOff = 0; - kOn = 1; - kToggle = 2; - } - - bitmap Feature : bitmap32 { - kLighting = 0x1; - kDeadFrontBehavior = 0x2; - kOffOnly = 0x4; - } - - bitmap OnOffControlBitmap : bitmap8 { - kAcceptOnlyWhenOn = 0x1; - } - - readonly attribute boolean onOff = 0; - readonly attribute optional boolean globalSceneControl = 16384; - attribute optional int16u onTime = 16385; - attribute optional int16u offWaitTime = 16386; - attribute access(write: manage) optional nullable StartUpOnOffEnum startUpOnOff = 16387; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; - - request struct OffWithEffectRequest { - EffectIdentifierEnum effectIdentifier = 0; - enum8 effectVariant = 1; - } - - request struct OnWithTimedOffRequest { - OnOffControlBitmap onOffControl = 0; - int16u onTime = 1; - int16u offWaitTime = 2; - } - - /** On receipt of this command, a device SHALL enter its ‘Off’ state. This state is device dependent, but it is recommended that it is used for power off or similar functions. On receipt of the Off command, the OnTime attribute SHALL be set to 0. */ - command Off(): DefaultSuccess = 0; - /** On receipt of this command, a device SHALL enter its ‘On’ state. This state is device dependent, but it is recommended that it is used for power on or similar functions. On receipt of the On command, if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. */ - command On(): DefaultSuccess = 1; - /** On receipt of this command, if a device is in its ‘Off’ state it SHALL enter its ‘On’ state. Otherwise, if it is in its ‘On’ state it SHALL enter its ‘Off’ state. On receipt of the Toggle command, if the value of the OnOff attribute is equal to FALSE and if the value of the OnTime attribute is equal to 0, the device SHALL set the OffWaitTime attribute to 0. If the value of the OnOff attribute is equal to TRUE, the OnTime attribute SHALL be set to 0. */ - command Toggle(): DefaultSuccess = 2; - /** The OffWithEffect command allows devices to be turned off using enhanced ways of fading. */ - command OffWithEffect(OffWithEffectRequest): DefaultSuccess = 64; - /** The OnWithRecallGlobalScene command allows the recall of the settings when the device was turned off. */ - command OnWithRecallGlobalScene(): DefaultSuccess = 65; - /** The OnWithTimedOff command allows devices to be turned on for a specific duration with a guarded off duration so that SHOULD the device be subsequently switched off, further OnWithTimedOff commands, received during this time, are prevented from turning the devices back on. */ - command OnWithTimedOff(OnWithTimedOffRequest): DefaultSuccess = 66; -} - /** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ cluster Descriptor = 29 { revision 2; @@ -935,67 +863,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1825,21 +1692,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; @@ -2013,19 +1865,6 @@ endpoint 1 { handle command AddGroupIfIdentifying; } - server cluster OnOff { - ram attribute onOff default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 5; - - handle command Off; - handle command On; - handle command Toggle; - } - server cluster Descriptor { callback attribute deviceTypeList; callback attribute serverList; diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap index be0a44c92a9b74..ff4a49b7778298 100644 --- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap +++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, @@ -2865,138 +2701,6 @@ } ] }, - { - "name": "On/Off", - "code": 6, - "mfgCode": null, - "define": "ON_OFF_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "Off", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "On", - "code": 1, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "Toggle", - "code": 2, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - } - ], - "attributes": [ - { - "name": "OnOff", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "boolean", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "5", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Descriptor", "code": 29, @@ -3198,4 +2902,4 @@ "parentEndpointIdentifier": null } ] -} \ No newline at end of file +} diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter index 5fe0482fb1e137..d8c6175497d76e 100644 --- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter +++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter @@ -863,67 +863,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1753,21 +1692,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap index 356230f6e6cd89..99f826d194b05a 100644 --- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap +++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter index 44ad0bfb504d30..db33ccdc120233 100644 --- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter +++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter @@ -791,67 +791,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1724,21 +1663,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap index 00a5272aa76766..21c60d8cef2350 100644 --- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap +++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_pump_5f904818cc.matter b/examples/chef/devices/rootnode_pump_5f904818cc.matter index e8141a4d66db35..a28cc3fe719da3 100644 --- a/examples/chef/devices/rootnode_pump_5f904818cc.matter +++ b/examples/chef/devices/rootnode_pump_5f904818cc.matter @@ -611,67 +611,6 @@ cluster BasicInformation = 40 { command MfgSpecificPing(): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -1587,25 +1526,6 @@ endpoint 0 { ram attribute clusterRevision default = 3; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { callback attribute generatedCommandList; callback attribute acceptedCommandList; diff --git a/examples/chef/devices/rootnode_pump_5f904818cc.zap b/examples/chef/devices/rootnode_pump_5f904818cc.zap index f28d7cfbab317e..77f757a6681e46 100644 --- a/examples/chef/devices/rootnode_pump_5f904818cc.zap +++ b/examples/chef/devices/rootnode_pump_5f904818cc.zap @@ -715,234 +715,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, diff --git a/examples/chef/devices/rootnode_pump_a811bb33a0.matter b/examples/chef/devices/rootnode_pump_a811bb33a0.matter index bb889d64c319e1..5faf56143e53b2 100644 --- a/examples/chef/devices/rootnode_pump_a811bb33a0.matter +++ b/examples/chef/devices/rootnode_pump_a811bb33a0.matter @@ -611,67 +611,6 @@ cluster BasicInformation = 40 { command MfgSpecificPing(): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -1530,25 +1469,6 @@ endpoint 0 { ram attribute clusterRevision default = 3; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { callback attribute generatedCommandList; callback attribute acceptedCommandList; diff --git a/examples/chef/devices/rootnode_pump_a811bb33a0.zap b/examples/chef/devices/rootnode_pump_a811bb33a0.zap index 6314e3fb0c2e3a..1d7c10b1eb33e5 100644 --- a/examples/chef/devices/rootnode_pump_a811bb33a0.zap +++ b/examples/chef/devices/rootnode_pump_a811bb33a0.zap @@ -715,234 +715,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, diff --git a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter index 13d8b98e93f7f0..cf0c9c20e47438 100644 --- a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter +++ b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.matter @@ -539,67 +539,6 @@ cluster BasicInformation = 40 { command MfgSpecificPing(): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -1465,25 +1404,6 @@ endpoint 0 { ram attribute clusterRevision default = 3; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { persist attribute temperatureUnit default = 0; callback attribute generatedCommandList; diff --git a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.zap b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.zap index bf7540df089035..b93bcb05fec24a 100644 --- a/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.zap +++ b/examples/chef/devices/rootnode_refrigerator_temperaturecontrolledcabinet_temperaturecontrolledcabinet_ffdb696680.zap @@ -958,234 +958,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter index a4fe9d839c4a48..223f47a4dfa346 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter @@ -911,67 +911,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1801,21 +1740,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap index b766b72f319f87..61325839e9d157 100644 --- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap +++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter index 60aacfe955c687..5e23267e1b9b6c 100644 --- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter +++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter @@ -791,67 +791,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1697,21 +1636,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap index 4d3f63260f57e4..2c20622caa4824 100644 --- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap +++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter b/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter index dec13bdf452e45..360771d4b05336 100644 --- a/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter +++ b/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.matter @@ -616,23 +616,6 @@ cluster BasicInformation = 40 { command MfgSpecificPing(): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1466,17 +1449,6 @@ endpoint 0 { ram attribute clusterRevision default = 2; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.zap b/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.zap index d2f3e341907a7d..a07441c6c7dbbd 100644 --- a/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.zap +++ b/examples/chef/devices/rootnode_waterleakdetector_0b067acfa3.zap @@ -722,144 +722,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "EventList", - "code": 65530, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter index a57c946cfa0f93..6056460bea24ff 100644 --- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter +++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter @@ -791,67 +791,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1834,21 +1773,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap index cc78cf315cacc2..043e0a30a7c335 100644 --- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap +++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/devices/template.zap b/examples/chef/devices/template.zap index 82c175c74fc289..2eec4460e870b9 100644 --- a/examples/chef/devices/template.zap +++ b/examples/chef/devices/template.zap @@ -722,144 +722,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "EventList", - "code": 65530, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/kvs1 b/examples/chef/kvs1 new file mode 100644 index 00000000000000..1a49d937bc6aea --- /dev/null +++ b/examples/chef/kvs1 @@ -0,0 +1,7 @@ +[DEFAULT] +g/gcc=FN5mAQ== +g/gdc=53gMAA== +g/im/ec=AAABAAAAAAA= +g/lkgt=FSYAgKi8LBg= +g/sum=MAA= + diff --git a/examples/chef/sample_app_util/test_files/sample_zap_file.zap b/examples/chef/sample_app_util/test_files/sample_zap_file.zap index 7794e2b510e669..7ad3cf51484541 100644 --- a/examples/chef/sample_app_util/test_files/sample_zap_file.zap +++ b/examples/chef/sample_app_util/test_files/sample_zap_file.zap @@ -1053,170 +1053,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/chef/sample_app_util/test_files/sample_zap_file_meta.yaml b/examples/chef/sample_app_util/test_files/sample_zap_file_meta.yaml index 798f5355b1a99a..de8678ed4f1214 100644 --- a/examples/chef/sample_app_util/test_files/sample_zap_file_meta.yaml +++ b/examples/chef/sample_app_util/test_files/sample_zap_file_meta.yaml @@ -37,9 +37,6 @@ Groups/4: attributes: FeatureMap/65532: '0' - LocalizationConfiguration/43: - attributes: - FeatureMap/65532: '0' OperationalCredentials/62: attributes: FeatureMap/65532: '0' @@ -55,9 +52,6 @@ ThreadNetworkDiagnostics/53: attributes: FeatureMap/65532: '15' - TimeFormatLocalization/44: - attributes: - FeatureMap/65532: '0' UserLabel/65: attributes: FeatureMap/65532: '0' diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter index 60e67e4c4a7c46..05fe9c8efe4a6f 100644 --- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter +++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter @@ -770,67 +770,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2061,21 +2000,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap index 90b0a3cb5de3fe..2006f483e969f6 100644 --- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap +++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap @@ -1069,170 +1069,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter b/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter index 0df498ea2952f4..578a806c9d7253 100644 --- a/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter +++ b/examples/dishwasher-app/dishwasher-common/dishwasher-app.matter @@ -637,67 +637,6 @@ cluster BasicInformation = 40 { command MfgSpecificPing(): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -1614,25 +1553,6 @@ endpoint 0 { ram attribute clusterRevision default = 3; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { persist attribute temperatureUnit default = 0; callback attribute generatedCommandList; diff --git a/examples/dishwasher-app/dishwasher-common/dishwasher-app.zap b/examples/dishwasher-app/dishwasher-common/dishwasher-app.zap index 12cad848810d09..d8804e9526b4af 100644 --- a/examples/dishwasher-app/dishwasher-common/dishwasher-app.zap +++ b/examples/dishwasher-app/dishwasher-common/dishwasher-app.zap @@ -1098,234 +1098,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, diff --git a/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter b/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter index adc4fe3de8065e..e597b02c74e841 100644 --- a/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter +++ b/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter @@ -863,67 +863,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -2284,27 +2223,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - ram attribute hourFormat; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { callback attribute generatedCommandList; callback attribute acceptedCommandList; diff --git a/examples/laundry-washer-app/nxp/zap/laundry-washer-app.zap b/examples/laundry-washer-app/nxp/zap/laundry-washer-app.zap index b58e1cdea5b257..001bfbc945f132 100644 --- a/examples/laundry-washer-app/nxp/zap/laundry-washer-app.zap +++ b/examples/laundry-washer-app/nxp/zap/laundry-washer-app.zap @@ -1157,266 +1157,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "EventList", - "code": 65530, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "EventList", - "code": 65530, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter index 46dd0d70bf43da..5da173fe9dc113 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.matter +++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter @@ -913,67 +913,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2898,21 +2837,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - ram attribute activeLocale; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat; - persist attribute activeCalendarType; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.zap b/examples/light-switch-app/light-switch-common/light-switch-app.zap index 806d45be48fb3c..e426e68bbc9063 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.zap +++ b/examples/light-switch-app/light-switch-common/light-switch-app.zap @@ -987,170 +987,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.matter b/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.matter index 8b88e7d961fe5f..66acdd254d6214 100644 --- a/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.matter +++ b/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.matter @@ -967,67 +967,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2763,21 +2702,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.zap b/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.zap index 3a071c356b8655..67cbfdedad076f 100644 --- a/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.zap +++ b/examples/lighting-app-data-mode-no-unique-id/lighting-common/lighting-app.zap @@ -913,170 +913,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, @@ -5916,4 +5752,4 @@ "parentEndpointIdentifier": null } ] -} +} \ No newline at end of file diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter index c51e6ee8ca0d7f..99280db5e6b764 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter @@ -967,67 +967,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2236,21 +2175,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap index 1f7f1aa176483b..db1960f57718af 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap @@ -823,170 +823,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter index 33d68c727dba51..2d6c439a3ea70d 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter @@ -967,67 +967,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2369,21 +2308,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap index b525204ed52d3b..31f009e23fdb3a 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter index 78eed27958bc67..bc46399ed8d0ce 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter @@ -967,67 +967,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2280,21 +2219,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap index eb23b365d01428..b5d0569687e8f6 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index 1fe4d7929d37fa..e65b407b9caa6c 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -967,67 +967,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2764,21 +2703,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/lighting-app/lighting-common/lighting-app.zap b/examples/lighting-app/lighting-common/lighting-app.zap index 68929e98da0c20..a11ef874882a93 100644 --- a/examples/lighting-app/lighting-common/lighting-app.zap +++ b/examples/lighting-app/lighting-common/lighting-app.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter index 03373bfdda8668..b81d7d1ee68e71 100644 --- a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter +++ b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter @@ -967,67 +967,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -2398,21 +2337,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/lighting-app/silabs/data_model/lighting-thread-app.zap b/examples/lighting-app/silabs/data_model/lighting-thread-app.zap index 89211683435c23..8ce49423a2afb1 100644 --- a/examples/lighting-app/silabs/data_model/lighting-thread-app.zap +++ b/examples/lighting-app/silabs/data_model/lighting-thread-app.zap @@ -883,170 +883,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter index ae68bac12e3e61..b4aa594acd6f02 100644 --- a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter +++ b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter @@ -967,67 +967,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ cluster PowerSource = 47 { revision 1; // NOTE: Default/not specifically set @@ -2689,21 +2628,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap b/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap index db1f5a39429942..fe5189980b619e 100644 --- a/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap +++ b/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap @@ -883,170 +883,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index 2f2b9dd40850d8..0b316c77592d7e 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -693,23 +693,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -2888,17 +2871,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { callback attribute generatedCommandList; callback attribute acceptedCommandList; diff --git a/examples/lock-app/lock-common/lock-app.zap b/examples/lock-app/lock-common/lock-app.zap index 4403019057a295..de7a4801225d75 100644 --- a/examples/lock-app/lock-common/lock-app.zap +++ b/examples/lock-app/lock-common/lock-app.zap @@ -1113,144 +1113,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "EventList", - "code": 65530, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, diff --git a/examples/network-manager-app/network-manager-common/network-manager-app.zap b/examples/network-manager-app/network-manager-common/network-manager-app.zap index f471bb2d3b135b..da1c431a49157f 100644 --- a/examples/network-manager-app/network-manager-common/network-manager-app.zap +++ b/examples/network-manager-app/network-manager-common/network-manager-app.zap @@ -3886,4 +3886,4 @@ "parentEndpointIdentifier": null } ] -} +} \ No newline at end of file diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter index 5958192ce981e1..c3678e0f93cdd4 100644 --- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter +++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter @@ -690,67 +690,6 @@ cluster OtaSoftwareUpdateProvider = 41 { command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1514,21 +1453,6 @@ endpoint 0 { handle command NotifyUpdateApplied; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap b/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap index c98b9e661328e5..e1cb30834e29ad 100644 --- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap +++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap @@ -880,170 +880,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter index c61a4908d01f1f..8206447e3683d0 100644 --- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter +++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter @@ -842,67 +842,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1682,25 +1621,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap index 2ae993e399dd18..c14a51d1a3d5e9 100644 --- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap +++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap @@ -1193,234 +1193,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "EventList", - "code": 65530, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter b/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter index 892012082c0d71..4840ef68f2e6fe 100644 --- a/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter +++ b/examples/refrigerator-app/refrigerator-common/refrigerator-app.matter @@ -489,67 +489,6 @@ cluster BasicInformation = 40 { command MfgSpecificPing(): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -1405,25 +1344,6 @@ endpoint 0 { ram attribute clusterRevision default = 3; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { persist attribute temperatureUnit default = 0; callback attribute generatedCommandList; diff --git a/examples/refrigerator-app/refrigerator-common/refrigerator-app.zap b/examples/refrigerator-app/refrigerator-common/refrigerator-app.zap index 64bf5b3bca8577..3040a2f479a904 100644 --- a/examples/refrigerator-app/refrigerator-common/refrigerator-app.zap +++ b/examples/refrigerator-app/refrigerator-common/refrigerator-app.zap @@ -866,234 +866,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, diff --git a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter index 1af9ccc34b0422..9f62c2ead82d95 100644 --- a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter +++ b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter @@ -770,67 +770,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to describe the configuration and capabilities of a physical power source that provides power to the Node. */ cluster PowerSource = 47 { revision 1; // NOTE: Default/not specifically set @@ -2305,21 +2244,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap index f63c63c5d33bce..36f42d7a37f794 100644 --- a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap +++ b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap @@ -867,170 +867,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter index cf4d7159fdbf52..0ed458712aabf7 100644 --- a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter +++ b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.matter @@ -643,67 +643,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -1712,21 +1651,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { persist attribute temperatureUnit default = 0; ram attribute featureMap default = 0x1; diff --git a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.zap b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.zap index 5a1f1389e3fc87..b2a1e2c7bbb3ed 100644 --- a/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.zap +++ b/examples/temperature-measurement-app/temperature-measurement-common/temperature-measurement.zap @@ -929,170 +929,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, diff --git a/examples/thread-br-app/thread-br-common/thread-br-app.matter b/examples/thread-br-app/thread-br-common/thread-br-app.matter index 9498dee8be25d3..a86d28ec5dac8e 100644 --- a/examples/thread-br-app/thread-br-common/thread-br-app.matter +++ b/examples/thread-br-app/thread-br-common/thread-br-app.matter @@ -489,67 +489,6 @@ cluster BasicInformation = 40 { command MfgSpecificPing(): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** This cluster is used to manage global aspects of the Commissioning flow. */ cluster GeneralCommissioning = 48 { revision 1; // NOTE: Default/not specifically set @@ -1511,21 +1450,6 @@ endpoint 0 { ram attribute clusterRevision default = 3; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster GeneralCommissioning { ram attribute breadcrumb default = 0x0000000000000000; callback attribute basicCommissioningInfo; diff --git a/examples/thread-br-app/thread-br-common/thread-br-app.zap b/examples/thread-br-app/thread-br-common/thread-br-app.zap index cad9d37b2d6286..09f5a2e3a90442 100644 --- a/examples/thread-br-app/thread-br-common/thread-br-app.zap +++ b/examples/thread-br-app/thread-br-common/thread-br-app.zap @@ -770,170 +770,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "General Commissioning", "code": 48, diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter index 61a8208e0cb4bf..fa7b8e536fdfe2 100644 --- a/examples/window-app/common/window-app.matter +++ b/examples/window-app/common/window-app.matter @@ -770,67 +770,6 @@ cluster OtaSoftwareUpdateRequestor = 42 { command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; } -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing common languages, units of measurements, and numerical formatting - standards. As such, Nodes that visually or audibly convey information need a mechanism by which - they can be configured to use a user’s preferred language, units, etc */ -cluster LocalizationConfiguration = 43 { - revision 1; // NOTE: Default/not specifically set - - attribute access(write: manage) char_string<35> activeLocale = 0; - readonly attribute char_string supportedLocales[] = 1; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - -/** Nodes should be expected to be deployed to any and all regions of the world. These global regions - may have differing preferences for how dates and times are conveyed. As such, Nodes that visually - or audibly convey time information need a mechanism by which they can be configured to use a - user’s preferred format. */ -cluster TimeFormatLocalization = 44 { - revision 1; // NOTE: Default/not specifically set - - enum CalendarTypeEnum : enum8 { - kBuddhist = 0; - kChinese = 1; - kCoptic = 2; - kEthiopian = 3; - kGregorian = 4; - kHebrew = 5; - kIndian = 6; - kIslamic = 7; - kJapanese = 8; - kKorean = 9; - kPersian = 10; - kTaiwanese = 11; - kUseActiveLocale = 255; - } - - enum HourFormatEnum : enum8 { - k12hr = 0; - k24hr = 1; - kUseActiveLocale = 255; - } - - bitmap Feature : bitmap32 { - kCalendarFormat = 0x1; - } - - attribute access(write: manage) HourFormatEnum hourFormat = 0; - attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; - readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; - readonly attribute command_id generatedCommandList[] = 65528; - readonly attribute command_id acceptedCommandList[] = 65529; - readonly attribute event_id eventList[] = 65530; - readonly attribute attrib_id attributeList[] = 65531; - readonly attribute bitmap32 featureMap = 65532; - readonly attribute int16u clusterRevision = 65533; -} - /** Nodes should be expected to be deployed to any and all regions of the world. These global regions may have differing preferences for the units in which values are conveyed in communication to a user. As such, Nodes that visually or audibly convey measurable values to the user need a @@ -2464,29 +2403,6 @@ endpoint 0 { handle command AnnounceOTAProvider; } - server cluster LocalizationConfiguration { - persist attribute activeLocale default = "en-US"; - callback attribute supportedLocales; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - - server cluster TimeFormatLocalization { - persist attribute hourFormat default = 0; - persist attribute activeCalendarType default = 0; - callback attribute supportedCalendarTypes; - callback attribute generatedCommandList; - callback attribute acceptedCommandList; - callback attribute eventList; - callback attribute attributeList; - ram attribute featureMap default = 0; - ram attribute clusterRevision default = 1; - } - server cluster UnitLocalization { callback attribute generatedCommandList; callback attribute acceptedCommandList; diff --git a/examples/window-app/common/window-app.zap b/examples/window-app/common/window-app.zap index 7610434e4517e6..85c01e1e6b52ff 100644 --- a/examples/window-app/common/window-app.zap +++ b/examples/window-app/common/window-app.zap @@ -1113,298 +1113,6 @@ } ] }, - { - "name": "Localization Configuration", - "code": 43, - "mfgCode": null, - "define": "LOCALIZATION_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "ActiveLocale", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "char_string", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "en-US", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedLocales", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "EventList", - "code": 65530, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Time Format Localization", - "code": 44, - "mfgCode": null, - "define": "TIME_FORMAT_LOCALIZATION_CLUSTER", - "side": "server", - "enabled": 1, - "attributes": [ - { - "name": "HourFormat", - "code": 0, - "mfgCode": null, - "side": "server", - "type": "HourFormatEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ActiveCalendarType", - "code": 1, - "mfgCode": null, - "side": "server", - "type": "CalendarTypeEnum", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "SupportedCalendarTypes", - "code": 2, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "GeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AcceptedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "EventList", - "code": 65530, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "type": "array", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": null, - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "type": "bitmap32", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, { "name": "Unit Localization", "code": 45, From 78830a086dbc093238f754f61f27d1fcf34e71be Mon Sep 17 00:00:00 2001 From: bhmanda-silabs <107180296+bhmanda-silabs@users.noreply.github.com> Date: Tue, 10 Sep 2024 00:30:56 +0530 Subject: [PATCH 07/50] [Silabs] Wi-fi: Header and source dhcp files cleanup (#35143) * dhcp client source and header files cleanup * Resolved build errors for Siwx917 BRD4338A board * Resolved build errors for efr boards * Resolved review comments * Build errors resolved * Added TO-DO cleanup for wifi files * Moved wifi include to common efr32_sdk.gni * Removed EFR platform headers from dhcp_client.cpp --- examples/platform/silabs/SiWx917/BUILD.gn | 7 +- .../platform/silabs/efr32/wf200/host_if.cpp | 12 +- src/platform/silabs/efr32/BUILD.gn | 3 +- .../silabs/efr32/wifi/dhcp_client.cpp | 150 ------------------ src/platform/silabs/efr32/wifi/dhcp_client.h | 45 ------ .../silabs/{SiWx917 => }/wifi/dhcp_client.cpp | 4 - .../silabs/{SiWx917 => }/wifi/dhcp_client.h | 0 third_party/silabs/SiWx917_sdk.gni | 2 +- third_party/silabs/efr32_sdk.gni | 3 + 9 files changed, 21 insertions(+), 205 deletions(-) delete mode 100644 src/platform/silabs/efr32/wifi/dhcp_client.cpp delete mode 100644 src/platform/silabs/efr32/wifi/dhcp_client.h rename src/platform/silabs/{SiWx917 => }/wifi/dhcp_client.cpp (94%) rename src/platform/silabs/{SiWx917 => }/wifi/dhcp_client.h (100%) diff --git a/examples/platform/silabs/SiWx917/BUILD.gn b/examples/platform/silabs/SiWx917/BUILD.gn index f2ddfd59a4347c..6ead7f31154b09 100644 --- a/examples/platform/silabs/SiWx917/BUILD.gn +++ b/examples/platform/silabs/SiWx917/BUILD.gn @@ -50,9 +50,10 @@ declare_args() { # Sanity check assert(chip_enable_wifi) +silabs_plat_dir = "${chip_root}/src/platform/silabs" silabs_plat_si91x_wifi_dir = "${chip_root}/src/platform/silabs/SiWx917/wifi" -import("${silabs_common_plat_dir}/args.gni") +import("${silabs_common_plat_dir}/args.gni") config("chip_examples_project_config") { include_dirs = [ "project_include" ] @@ -181,9 +182,11 @@ source_set("siwx917-common") { include_dirs = [ ".", "SiWx917/", + "${silabs_plat_dir}/wifi", "${silabs_plat_si91x_wifi_dir}", ] + #TO-DO Cleanup to be done for all the wifi files into common folder sources = [ "${silabs_common_plat_dir}/BaseApplication.cpp", "${silabs_common_plat_dir}/LEDWidget.cpp", @@ -193,7 +196,7 @@ source_set("siwx917-common") { "${silabs_common_plat_dir}/syscalls_stubs.cpp", "${silabs_common_plat_dir}/wifi/wfx_notify.cpp", "${silabs_common_plat_dir}/wifi/wfx_rsi_host.cpp", - "${silabs_plat_si91x_wifi_dir}/dhcp_client.cpp", + "${silabs_plat_dir}/wifi/dhcp_client.cpp", "${silabs_plat_si91x_wifi_dir}/ethernetif.cpp", "${silabs_plat_si91x_wifi_dir}/lwip_netif.cpp", "SiWx917/sl_wifi_if.cpp", diff --git a/examples/platform/silabs/efr32/wf200/host_if.cpp b/examples/platform/silabs/efr32/wf200/host_if.cpp index 44e65e2728fa4b..8247e385f61bcf 100644 --- a/examples/platform/silabs/efr32/wf200/host_if.cpp +++ b/examples/platform/silabs/efr32/wf200/host_if.cpp @@ -1197,9 +1197,19 @@ bool wfx_hw_ready(void) ******************************************************************************/ void wfx_dhcp_got_ipv4(uint32_t ip) { - /* Acquire the new IP address + /* + * Acquire the new IP address */ + uint8_t ip4_addr[4]; + + ip4_addr[0] = (ip) &HEX_VALUE_FF; + ip4_addr[1] = (ip >> 8) & HEX_VALUE_FF; + ip4_addr[2] = (ip >> 16) & HEX_VALUE_FF; + ip4_addr[3] = (ip >> 24) & HEX_VALUE_FF; + + ChipLogDetail(DeviceLayer, "DHCP IP=%d.%d.%d.%d", ip4_addr[0], ip4_addr[1], ip4_addr[2], ip4_addr[3]); sta_ip = ip; + wfx_ip_changed_notify(IP_STATUS_SUCCESS); } #endif /* CHIP_DEVICE_CONFIG_ENABLE_IPV4 */ diff --git a/src/platform/silabs/efr32/BUILD.gn b/src/platform/silabs/efr32/BUILD.gn index a71a0cd8b335e6..177cfc01fa33fe 100644 --- a/src/platform/silabs/efr32/BUILD.gn +++ b/src/platform/silabs/efr32/BUILD.gn @@ -166,8 +166,7 @@ static_library("efr32") { if (use_wf200 || use_rs9116 || use_SiWx917) { sources += [ - "wifi/dhcp_client.cpp", - "wifi/dhcp_client.h", + "${silabs_platform_dir}/wifi/dhcp_client.cpp", "wifi/ethernetif.cpp", "wifi/ethernetif.h", "wifi/lwip_netif.cpp", diff --git a/src/platform/silabs/efr32/wifi/dhcp_client.cpp b/src/platform/silabs/efr32/wifi/dhcp_client.cpp deleted file mode 100644 index c2a46d61dd6805..00000000000000 --- a/src/platform/silabs/efr32/wifi/dhcp_client.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* - * - * Copyright (c) 2022 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#if LWIP_IPV4 && LWIP_DHCP - -#include -#include -#include - -#include "em_bus.h" -#include "em_cmu.h" -#include "em_gpio.h" -#include "em_ldma.h" -#include "em_usart.h" - -#include "dhcp_client.h" -#include "lwip/dhcp.h" -#include "wfx_host_events.h" -#include "wifi_config.h" - -#include "FreeRTOS.h" -#include "event_groups.h" - -#include - -#define MAX_DHCP_TRIES 4 -#define NETIF_IPV4_ADDRESS(X, Y) (((X) >> (8 * Y)) & 0xFF) - -/* Station IP address */ -uint8_t sta_ip_addr0 = STA_IP_ADDR0_DEFAULT; -uint8_t sta_ip_addr1 = STA_IP_ADDR1_DEFAULT; -uint8_t sta_ip_addr2 = STA_IP_ADDR2_DEFAULT; -uint8_t sta_ip_addr3 = STA_IP_ADDR3_DEFAULT; -uint8_t sta_netmask_addr0 = STA_NETMASK_ADDR0_DEFAULT; -uint8_t sta_netmask_addr1 = STA_NETMASK_ADDR1_DEFAULT; -uint8_t sta_netmask_addr2 = STA_NETMASK_ADDR2_DEFAULT; -uint8_t sta_netmask_addr3 = STA_NETMASK_ADDR3_DEFAULT; -uint8_t sta_gw_addr0 = STA_GW_ADDR0_DEFAULT; -uint8_t sta_gw_addr1 = STA_GW_ADDR1_DEFAULT; -uint8_t sta_gw_addr2 = STA_GW_ADDR2_DEFAULT; -uint8_t sta_gw_addr3 = STA_GW_ADDR3_DEFAULT; - -/// Current DHCP state machine state. -static volatile uint8_t dhcp_state = DHCP_OFF; - -/***************************************************************************** - * @fn void dhcpclient_set_link_state(int link_up) - * @brief - * Notify DHCP client task about the wifi status - * @param link_up link status - * @return None - ******************************************************************************/ -void dhcpclient_set_link_state(int link_up) -{ - if (link_up) - { - dhcp_state = DHCP_START; - ChipLogProgress(DeviceLayer, "DHCP: Starting"); - } - else - { - /* Update DHCP state machine */ - dhcp_state = DHCP_LINK_DOWN; - } -} - -/********************************************************************************** - * @fn uint8_t dhcpclient_poll(void *arg) - * @brief - * Don't need a task here. We get polled every 250ms - * @return None - ************************************************************************************/ -uint8_t dhcpclient_poll(void * arg) -{ - struct netif * netif = (struct netif *) arg; - ip_addr_t ipaddr; - ip_addr_t netmask; - ip_addr_t gw; - struct dhcp * dhcp; - - switch (dhcp_state) - { - case DHCP_START: - ChipLogProgress(DeviceLayer, "DHCP: Wait addr"); - ip_addr_set_zero_ip4(&netif->ip_addr); - ip_addr_set_zero_ip4(&netif->netmask); - ip_addr_set_zero_ip4(&netif->gw); - dhcp_start(netif); - dhcp_state = DHCP_WAIT_ADDRESS; - break; - - case DHCP_WAIT_ADDRESS: - if (dhcp_supplied_address(netif)) - { - dhcp_state = DHCP_ADDRESS_ASSIGNED; - - uint64_t addr = netif->ip_addr.u_addr.ip4.addr; - ChipLogProgress(DeviceLayer, "DHCP IP: %d.%d.%d.%d", NETIF_IPV4_ADDRESS(addr, 0), NETIF_IPV4_ADDRESS(addr, 1), - NETIF_IPV4_ADDRESS(addr, 2), NETIF_IPV4_ADDRESS(addr, 3)); - } - else - { - dhcp = (struct dhcp *) netif_get_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP); - - /* DHCP timeout */ - if (dhcp->tries > MAX_DHCP_TRIES) - { - dhcp_state = DHCP_TIMEOUT; - - ChipLogProgress(DeviceLayer, "*ERR*DHCP: Failed"); - /* Stop DHCP */ - dhcp_stop(netif); - - /* TODO - I am not sure that this is best */ - /* Static address used */ - IP_ADDR4(&ipaddr, sta_ip_addr0, sta_ip_addr1, sta_ip_addr2, sta_ip_addr3); - IP_ADDR4(&netmask, sta_netmask_addr0, sta_netmask_addr1, sta_netmask_addr2, sta_netmask_addr3); - IP_ADDR4(&gw, sta_gw_addr0, sta_gw_addr1, sta_gw_addr2, sta_gw_addr3); - netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw)); - } - } - break; - - case DHCP_LINK_DOWN: - /* Stop DHCP */ - ChipLogProgress(DeviceLayer, "*ERR*DHCP Link down"); - dhcp_stop(netif); - dhcp_state = DHCP_OFF; - break; - default: - break; - } - return dhcp_state; -} - -#endif /* LWIP_IPV4 && LWIP_DHCP */ diff --git a/src/platform/silabs/efr32/wifi/dhcp_client.h b/src/platform/silabs/efr32/wifi/dhcp_client.h deleted file mode 100644 index 4ee9d2f5d0d68d..00000000000000 --- a/src/platform/silabs/efr32/wifi/dhcp_client.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * - * Copyright (c) 2022 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#if LWIP_IPV4 && LWIP_DHCP - -#pragma once -#ifdef __cplusplus -extern "C" { -#endif - -// DHCP client states -#define DHCP_OFF ((uint8_t) 0) -#define DHCP_START ((uint8_t) 1) -#define DHCP_WAIT_ADDRESS ((uint8_t) 2) -#define DHCP_ADDRESS_ASSIGNED ((uint8_t) 3) -#define DHCP_TIMEOUT ((uint8_t) 4) -#define DHCP_LINK_DOWN ((uint8_t) 5) - -/***************************************************************************** - * @fn void dhcpclient_set_link_state(int link_up) - * @brief - * Notify DHCP client task about the wifi status - * @param link_up link status - ******************************************************************************/ -void dhcpclient_set_link_state(int link_up); -uint8_t dhcpclient_poll(void * arg); -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_IPV4 && LWIP_DHCP */ diff --git a/src/platform/silabs/SiWx917/wifi/dhcp_client.cpp b/src/platform/silabs/wifi/dhcp_client.cpp similarity index 94% rename from src/platform/silabs/SiWx917/wifi/dhcp_client.cpp rename to src/platform/silabs/wifi/dhcp_client.cpp index 2ffc45d491ac66..c8b47a9f2b3735 100644 --- a/src/platform/silabs/SiWx917/wifi/dhcp_client.cpp +++ b/src/platform/silabs/wifi/dhcp_client.cpp @@ -101,10 +101,6 @@ uint8_t dhcpclient_poll(void * arg) if (dhcp_supplied_address(netif)) { dhcp_state = DHCP_ADDRESS_ASSIGNED; - - uint64_t addr = netif->ip_addr.u_addr.ip4.addr; - ChipLogProgress(DeviceLayer, "DHCP IP: %d.%d.%d.%d", NETIF_IPV4_ADDRESS(addr, 0), NETIF_IPV4_ADDRESS(addr, 1), - NETIF_IPV4_ADDRESS(addr, 2), NETIF_IPV4_ADDRESS(addr, 3)); } else { diff --git a/src/platform/silabs/SiWx917/wifi/dhcp_client.h b/src/platform/silabs/wifi/dhcp_client.h similarity index 100% rename from src/platform/silabs/SiWx917/wifi/dhcp_client.h rename to src/platform/silabs/wifi/dhcp_client.h diff --git a/third_party/silabs/SiWx917_sdk.gni b/third_party/silabs/SiWx917_sdk.gni index 1163cd28c99de3..ea9d6beaefd970 100644 --- a/third_party/silabs/SiWx917_sdk.gni +++ b/third_party/silabs/SiWx917_sdk.gni @@ -256,7 +256,7 @@ template("siwx917_sdk") { } defines += [ "LWIP_NETIF_API=1" ] - if (lwip_ipv4) { + if (chip_enable_wifi_ipv4) { defines += [ "LWIP_IPV4=1", diff --git a/third_party/silabs/efr32_sdk.gni b/third_party/silabs/efr32_sdk.gni index c75f67694e8d5c..1cd69d31e7084b 100644 --- a/third_party/silabs/efr32_sdk.gni +++ b/third_party/silabs/efr32_sdk.gni @@ -362,6 +362,9 @@ template("efr32_sdk") { if (use_rs9116 || use_SiWx917) { _include_dirs += [ "${chip_root}/src/platform/silabs/rs911x" ] } + if (use_wf200 || use_rs9116 || use_SiWx917) { + _include_dirs += [ "${chip_root}/src/platform/silabs/wifi" ] + } if (silabs_family != "mgm24") { _include_dirs += [ "${efr32_sdk_root}/platform/radio/rail_lib/hal", From 4aa1d591532108aad744f4c46945b6c6031cff91 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Mon, 9 Sep 2024 15:37:35 -0400 Subject: [PATCH 08/50] Increase allowed time for subscription setup in test013_suspendDevices. (#35486) 3 seconds is often not enough time to set up a subscription in CI. Make sure to use a longer timeout in the places where we are expecting subscription setup. --- .../Framework/CHIPTests/MTRPerControllerStorageTests.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m b/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m index ccce34792f9db8..48500f2933dcb4 100644 --- a/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m +++ b/src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m @@ -33,6 +33,7 @@ static const uint16_t kPairingTimeoutInSeconds = 10; static const uint16_t kTimeoutInSeconds = 3; +static const uint16_t kSubscriptionTimeoutInSeconds = 60; static NSString * kOnboardingPayload = @"MT:-24J0AFN00KA0648G00"; static const uint16_t kTestVendorId = 0xFFF1u; static const uint16_t kSubscriptionPoolBaseTimeoutInSeconds = 30; @@ -1690,8 +1691,8 @@ - (void)test013_suspendDevices }; [device setDelegate:delegate queue:queue]; - [self waitForExpectations:@[ initialReachableExpectation, initialSubscriptionExpectation ] timeout:60]; - // Separately wait for the unreachable bit, so we don't end up waiting 60 + [self waitForExpectations:@[ initialReachableExpectation, initialSubscriptionExpectation ] timeout:kSubscriptionTimeoutInSeconds]; + // Separately wait for the unreachable bit, so we don't end up waiting kSubscriptionTimeoutInSeconds // seconds for it. [self waitForExpectations:@[ initialUnreachableExpectation ] timeout:0]; @@ -1737,7 +1738,7 @@ - (void)test013_suspendDevices [controller resume]; XCTAssertFalse(controller.suspended); - [self waitForExpectations:@[ newSubscriptionExpectation, newReachableExpectation ] timeout:kTimeoutInSeconds]; + [self waitForExpectations:@[ newSubscriptionExpectation, newReachableExpectation ] timeout:kSubscriptionTimeoutInSeconds]; // Test that sending a command works again. Clear the delegate's onReportEnd // first, so reports from the command don't trigger it. From 2e5b7091e7f6b8cd2e6ba1276e77328e45946d8f Mon Sep 17 00:00:00 2001 From: Justin Wood Date: Mon, 9 Sep 2024 12:38:15 -0700 Subject: [PATCH 09/50] Client data has been un-used for a long time, and the two clients that use it no longer need it, let's remove (#35487) * Removing clientData * Fixing one signature, and uncommenting some others * Restyled by clang-format --------- Co-authored-by: Restyled.io --- src/darwin/Framework/CHIP/MTRDevice.h | 84 ------------------- src/darwin/Framework/CHIP/MTRDevice.mm | 80 ------------------ .../Framework/CHIP/MTRDevice_Concrete.mm | 80 ------------------ src/darwin/Framework/CHIP/MTRDevice_XPC.mm | 37 -------- .../CHIP/XPC Protocol/MTRXPCServerProtocol.h | 38 +++------ 5 files changed, 13 insertions(+), 306 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDevice.h b/src/darwin/Framework/CHIP/MTRDevice.h index 8673e18e2c5507..2858ae56924af9 100644 --- a/src/darwin/Framework/CHIP/MTRDevice.h +++ b/src/darwin/Framework/CHIP/MTRDevice.h @@ -288,90 +288,6 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) completion:(MTRDeviceOpenCommissioningWindowHandler)completion MTR_AVAILABLE(ios(17.0), macos(14.0), watchos(10.0), tvos(17.0)); -/** - * - * This set of functions allows clients to store metadata for either an entire device or for a specific endpoint. - * - * Notes: - * • Client data will be removed automatically when devices are deleted from the fabric - * • Supported client data object types are currently only: - * NSData, NSString, NSArray, NSDictionary, NSNumber - */ - -/** - * - * List of all client data types supported - * - */ -- (NSArray *)supportedClientDataClasses MTR_UNSTABLE_API; - -/** - * - * List of all client data keys stored - * - */ -- (NSArray * _Nullable)clientDataKeys MTR_UNSTABLE_API; - -/** - * - * Retrieve client metadata for a key, returns nil if no value is set - * - * @param key NSString * for the key to store the value as - */ -- (id _Nullable)clientDataForKey:(NSString *)key MTR_UNSTABLE_API; - -/** - * - * Set client metadata for a key. The value must conform to NSSecureCoding - * - * @param key NSString * for the key to store the value as - * @param value id for the value to store - */ -- (void)setClientDataForKey:(NSString *)key value:(id)value MTR_UNSTABLE_API; - -/** - * - * Remove client metadata for a key. - * - * @param key NSString * for the key to store the value as - */ -- (void)removeClientDataForKey:(NSString *)key MTR_UNSTABLE_API; - -/** - * - * List of all client data keys stored - * - */ -- (NSArray * _Nullable)clientDataKeysForEndpointID:(NSNumber *)endpointID MTR_UNSTABLE_API; - -/** - * - * Retrieve client metadata for a key, returns nil if no value is set - * - * @param key NSString * for the key to store the value as - * @param endpointID NSNumber * for the endpoint to associate the metadata with - */ -- (id _Nullable)clientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID MTR_UNSTABLE_API; - -/** - * - * Set client metadata for a key. The value must conform to NSSecureCoding. - * - * @param key NSString * for the key to store the value as. - * @param endpointID NSNumber * for the endpoint to associate the metadata with - * @param value id for the value to store - */ -- (void)setClientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID value:(id)value MTR_UNSTABLE_API; - -/** - * - * Remove client metadata for a key. - * - * @param key NSString * for the key to store the value as - * @param endpointID NSNumber * for the endpoint to associate the metadata with - */ -- (void)removeClientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID MTR_UNSTABLE_API; - /** * Download log of the desired type from the device. * diff --git a/src/darwin/Framework/CHIP/MTRDevice.mm b/src/darwin/Framework/CHIP/MTRDevice.mm index a668e02bbfa1ff..ddc47965f9c8b1 100644 --- a/src/darwin/Framework/CHIP/MTRDevice.mm +++ b/src/darwin/Framework/CHIP/MTRDevice.mm @@ -1569,86 +1569,6 @@ - (MTRBaseDevice *)newBaseDevice return [MTRBaseDevice deviceWithNodeID:self.nodeID controller:self.deviceController]; } -// Client Metadata Storage - -- (NSArray *)supportedClientDataClasses -{ - return @[ [NSData class], [NSString class], [NSNumber class], [NSDictionary class], [NSArray class] ]; -} - -- (NSArray * _Nullable)clientDataKeys -{ - return [self.temporaryMetaDataCache allKeys]; -} - -- (id _Nullable)clientDataForKey:(NSString *)key -{ - if (key == nil) - return nil; - - return [self.temporaryMetaDataCache objectForKey:[NSString stringWithFormat:@"%@:-1", key]]; -} - -- (void)setClientDataForKey:(NSString *)key value:(id)value -{ - // TODO: Check supported data types, and also if they conform to NSSecureCoding, when we store these - // TODO: Need to add a delegate method, so when this value changes we call back to the client - - if (key == nil || value == nil) - return; - - if (self.temporaryMetaDataCache == nil) { - self.temporaryMetaDataCache = [NSMutableDictionary dictionary]; - } - - [self.temporaryMetaDataCache setObject:value forKey:[NSString stringWithFormat:@"%@:-1", key]]; -} - -- (void)removeClientDataForKey:(NSString *)key -{ - if (key == nil) - return; - - [self.temporaryMetaDataCache removeObjectForKey:[NSString stringWithFormat:@"%@:-1", key]]; -} - -- (NSArray * _Nullable)clientDataKeysForEndpointID:(NSNumber *)endpointID -{ - if (endpointID == nil) - return nil; - // TODO: When hooked up to storage, enumerate this better - - return [self.temporaryMetaDataCache allKeys]; -} - -- (id _Nullable)clientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID -{ - if (key == nil || endpointID == nil) - return nil; - - return [self.temporaryMetaDataCache objectForKey:[NSString stringWithFormat:@"%@:%@", key, endpointID]]; -} - -- (void)setClientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID value:(id)value -{ - if (key == nil || value == nil || endpointID == nil) - return; - - if (self.temporaryMetaDataCache == nil) { - self.temporaryMetaDataCache = [NSMutableDictionary dictionary]; - } - - [self.temporaryMetaDataCache setObject:value forKey:[NSString stringWithFormat:@"%@:%@", key, endpointID]]; -} - -- (void)removeClientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID -{ - if (key == nil || endpointID == nil) - return; - - [self.temporaryMetaDataCache removeObjectForKey:[NSString stringWithFormat:@"%@:%@", key, endpointID]]; -} - #pragma mark Log Help - (nullable NSNumber *)_informationalNumberAtAttributePath:(MTRAttributePath *)attributePath diff --git a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm index 6e3ca4bf32b299..7d94c7585abcb0 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm @@ -3812,86 +3812,6 @@ - (MTRBaseDevice *)newBaseDevice return [MTRBaseDevice deviceWithNodeID:self.nodeID controller:self.deviceController]; } -// Client Metadata Storage - -- (NSArray *)supportedClientDataClasses -{ - return @[ [NSData class], [NSString class], [NSNumber class], [NSDictionary class], [NSArray class] ]; -} - -- (NSArray * _Nullable)clientDataKeys -{ - return [self.temporaryMetaDataCache allKeys]; -} - -- (id _Nullable)clientDataForKey:(NSString *)key -{ - if (key == nil) - return nil; - - return [self.temporaryMetaDataCache objectForKey:[NSString stringWithFormat:@"%@:-1", key]]; -} - -- (void)setClientDataForKey:(NSString *)key value:(id)value -{ - // TODO: Check supported data types, and also if they conform to NSSecureCoding, when we store these - // TODO: Need to add a delegate method, so when this value changes we call back to the client - - if (key == nil || value == nil) - return; - - if (self.temporaryMetaDataCache == nil) { - self.temporaryMetaDataCache = [NSMutableDictionary dictionary]; - } - - [self.temporaryMetaDataCache setObject:value forKey:[NSString stringWithFormat:@"%@:-1", key]]; -} - -- (void)removeClientDataForKey:(NSString *)key -{ - if (key == nil) - return; - - [self.temporaryMetaDataCache removeObjectForKey:[NSString stringWithFormat:@"%@:-1", key]]; -} - -- (NSArray * _Nullable)clientDataKeysForEndpointID:(NSNumber *)endpointID -{ - if (endpointID == nil) - return nil; - // TODO: When hooked up to storage, enumerate this better - - return [self.temporaryMetaDataCache allKeys]; -} - -- (id _Nullable)clientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID -{ - if (key == nil || endpointID == nil) - return nil; - - return [self.temporaryMetaDataCache objectForKey:[NSString stringWithFormat:@"%@:%@", key, endpointID]]; -} - -- (void)setClientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID value:(id)value -{ - if (key == nil || value == nil || endpointID == nil) - return; - - if (self.temporaryMetaDataCache == nil) { - self.temporaryMetaDataCache = [NSMutableDictionary dictionary]; - } - - [self.temporaryMetaDataCache setObject:value forKey:[NSString stringWithFormat:@"%@:%@", key, endpointID]]; -} - -- (void)removeClientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID -{ - if (key == nil || endpointID == nil) - return; - - [self.temporaryMetaDataCache removeObjectForKey:[NSString stringWithFormat:@"%@:%@", key, endpointID]]; -} - #pragma mark Log Help - (nullable NSNumber *)_informationalNumberAtAttributePath:(MTRAttributePath *)attributePath diff --git a/src/darwin/Framework/CHIP/MTRDevice_XPC.mm b/src/darwin/Framework/CHIP/MTRDevice_XPC.mm index 5279933104a11c..46f143e4bc189e 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_XPC.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_XPC.mm @@ -263,43 +263,6 @@ - (void)_invokeCommandWithEndpointID:(NSNumber *)endpointID // Not Supported via XPC //- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID openCommissioningWindowWithSetupPasscode:(NSNumber *)setupPasscode discriminator:(NSNumber *)discriminator duration:(NSNumber *)duration completion:(MTRDeviceOpenCommissioningWindowHandler)completion; -MTR_DEVICE_SIMPLE_REMOTE_XPC_GETTER(clientDataKeys, NSArray * _Nullable, nil, getClientDataKeysWithReply) -MTR_DEVICE_COMPLEX_REMOTE_XPC_GETTER(clientDataForKey - : (NSString *) key, id _Nullable, nil, clientDataForKey - : key withReply) - -MTR_DEVICE_SIMPLE_REMOTE_XPC_COMMAND(setClientDataForKey - : (NSString *) key value - : (id) value, setClientDataForKey - : key value - : value) -MTR_DEVICE_SIMPLE_REMOTE_XPC_COMMAND(removeClientDataForKey - : (NSString *) key, removeClientDataForKey - : key) - -MTR_DEVICE_COMPLEX_REMOTE_XPC_GETTER(clientDataKeysForEndpointID - : (NSNumber *) endpointID, NSArray * _Nullable, nil, clientDataKeysForEndpointID - : (NSNumber *) endpointID withReply) -MTR_DEVICE_COMPLEX_REMOTE_XPC_GETTER(clientDataForKey - : (NSString *) key endpointID - : (NSNumber *) endpointID, id _Nullable, nil, clientDataForKey - : key endpointID - : endpointID withReply) - -MTR_DEVICE_SIMPLE_REMOTE_XPC_COMMAND(setClientDataForKey - : (NSString *) key endpointID - : (NSNumber *) endpointID value - : (id) value, setClientDataForKey - : key endpointID - : endpointID value - : value) -MTR_DEVICE_SIMPLE_REMOTE_XPC_COMMAND(removeClientDataForKey - : (NSString *) key endpointID - : (NSNumber *) endpointID value - : (id) value, removeClientDataForKey - : key endpointID - : endpointID) - // Not Supported via XPC // - (oneway void)downloadLogOfType:(MTRDiagnosticLogType)type nodeID:(NSNumber *)nodeID timeout:(NSTimeInterval)timeout completion:(void (^)(NSURL * _Nullable url, NSError * _Nullable error))completion; diff --git a/src/darwin/Framework/CHIP/XPC Protocol/MTRXPCServerProtocol.h b/src/darwin/Framework/CHIP/XPC Protocol/MTRXPCServerProtocol.h index 52a5d2228fa524..eaaa4b655e18e9 100644 --- a/src/darwin/Framework/CHIP/XPC Protocol/MTRXPCServerProtocol.h +++ b/src/darwin/Framework/CHIP/XPC Protocol/MTRXPCServerProtocol.h @@ -27,25 +27,14 @@ MTR_NEWLY_AVAILABLE - (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID getEstimatedSubscriptionLatencyWithReply:(void (^)(NSNumber * _Nullable estimatedSubscriptionLatency))reply; - (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID readAttributeWithEndpointID:(NSNumber *)endpointID clusterID:(NSNumber *)clusterID attributeID:(NSNumber *)attributeID params:(MTRReadParams * _Nullable)params withReply:(void (^)(NSDictionary * _Nullable))reply; -- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID writeAttributeWithEndpointID:(NSNumber *)endpointID clusterID:(NSNumber *)clusterID attributeID:(NSNumber *)attributeID value:(id _Nullable)value expectedValueInterval:(NSNumber * _Nullable)expectedValueInterval timedWriteTimeout:(NSNumber * _Nullable)timeout; +- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID writeAttributeWithEndpointID:(NSNumber *)endpointID clusterID:(NSNumber *)clusterID attributeID:(NSNumber *)attributeID value:(id)value expectedValueInterval:(NSNumber * _Nullable)expectedValueInterval timedWriteTimeout:(NSNumber * _Nullable)timeout; - (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID invokeCommandWithEndpointID:(NSNumber *)endpointID clusterID:(NSNumber *)clusterID commandID:(NSNumber *)commandID commandFields:(id)commandFields expectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueInterval timedInvokeTimeout:(NSNumber * _Nullable)timeout serverSideProcessingTimeout:(NSNumber * _Nullable)serverSideProcessingTimeout completion:(MTRDeviceResponseHandler)completion; -// Not Supported via XPC -//- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID openCommissioningWindowWithSetupPasscode:(NSNumber *)setupPasscode discriminator:(NSNumber *)discriminator duration:(NSNumber *)duration completion:(MTRDeviceOpenCommissioningWindowHandler)completion; +- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID openCommissioningWindowWithSetupPasscode:(NSNumber *)setupPasscode discriminator:(NSNumber *)discriminator duration:(NSNumber *)duration completion:(MTRDeviceOpenCommissioningWindowHandler)completion; -- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID getClientDataKeysWithReply:(void (^)(NSArray * _Nullable))reply; -- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID clientDataForKey:(NSString *)key withReply:(void (^)(id _Nullable))reply; -- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID setClientDataForKey:(NSString *)key value:(id)value; -- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID removeClientDataForKey:(NSString *)key; -- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID clientDataKeysForEndpointID:(NSNumber *)endpointID withReply:(void (^)(NSArray * _Nullable))reply; -- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID clientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID withReply:(void (^)(id _Nullable))reply; -- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID setClientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID value:(id _Nullable)value; -- (oneway void)deviceController:(NSUUID *)controller nodeID:(NSNumber *)nodeID removeClientDataForKey:(NSString *)key endpointID:(NSNumber *)endpointID; - -// Not Supported via XPC -// - (oneway void)downloadLogOfType:(MTRDiagnosticLogType)type nodeID:(NSNumber *)nodeID timeout:(NSTimeInterval)timeout completion:(void (^)(NSURL * _Nullable url, NSError * _Nullable error))completion; +- (oneway void)downloadLogOfType:(MTRDiagnosticLogType)type nodeID:(NSNumber *)nodeID timeout:(NSTimeInterval)timeout completion:(void (^)(NSURL * _Nullable url, NSError * _Nullable error))completion; @end MTR_NEWLY_AVAILABLE @@ -55,19 +44,18 @@ MTR_NEWLY_AVAILABLE - (oneway void)deviceController:(NSUUID *)controller getUniqueIdentifierWithReply:(void (^)(NSUUID *))reply; - (oneway void)deviceController:(NSUUID *)controller controllerNodeIDWithReply:(void (^)(NSNumber * nodeID))reply; -// Not Supported via XPC -// - (oneway void)deviceController:(NSUUID *)controller setupCommissioningSessionWithPayload:(MTRSetupPayload *)payload newNodeID:(NSNumber *)newNodeID withReply:(void(^)(BOOL success, NSError * _Nullable error))reply; -// - (oneway void)deviceController:(NSUUID *)controller setupCommissioningSessionWithDiscoveredDevice:(MTRCommissionableBrowserResult *)discoveredDevice payload:(MTRSetupPayload *)payload newNodeID:(NSNumber *)newNodeID withReply:(void(^)(BOOL success, NSError * _Nullable error))reply; -// - (oneway void)deviceController:(NSUUID *)controller commissionNodeWithID:(NSNumber *)nodeID commissioningParams:(MTRCommissioningParameters *)commissioningParams withReply:(void(^)(BOOL success, NSError * _Nullable error))reply; -// - (oneway void)deviceController:(NSUUID *)controller continueCommissioningDevice:(void *)opaqueDeviceHandle ignoreAttestationFailure:(BOOL)ignoreAttestationFailure withReply:(void(^)(BOOL success, NSError * _Nullable error))reply; -// - (oneway void)deviceController:(NSUUID *)controller cancelCommissioningForNodeID:(NSNumber *)nodeID withReply:(void(^)(BOOL success, NSError * _Nullable error))reply; +// - (oneway void)deviceController:(NSUUID *)controller setupCommissioningSessionWithPayload:(MTRSetupPayload *)payload newNodeID:(NSNumber *)newNodeID withReply:(void (^)(BOOL success, NSError * _Nullable error))reply; +// - (oneway void)deviceController:(NSUUID *)controller setupCommissioningSessionWithDiscoveredDevice:(MTRCommissionableBrowserResult *)discoveredDevice payload:(MTRSetupPayload *)payload newNodeID:(NSNumber *)newNodeID withReply:(void (^)(BOOL success, NSError * _Nullable error))reply; +// - (oneway void)deviceController:(NSUUID *)controller commissionNodeWithID:(NSNumber *)nodeID commissioningParams:(MTRCommissioningParameters *)commissioningParams withReply:(void (^)(BOOL success, NSError * _Nullable error))reply; +// - (oneway void)deviceController:(NSUUID *)controller continueCommissioningDevice:(void *)opaqueDeviceHandle ignoreAttestationFailure:(BOOL)ignoreAttestationFailure withReply:(void (^)(BOOL success, NSError * _Nullable error))reply; +// - (oneway void)deviceController:(NSUUID *)controller cancelCommissioningForNodeID:(NSNumber *)nodeID withReply:(void (^)(BOOL success, NSError * _Nullable error))reply; // - (nullable MTRBaseDevice *)deviceController:(NSUUID *)controller deviceBeingCommissionedWithNodeID:(NSNumber *)nodeID error:(NSError * __autoreleasing *)error; -// - (oneway void)deviceController:(NSUUID *)controller startBrowseForCommissionables:(id)delegate withReply:(void(^)(BOOL success))reply; -// - (oneway void)deviceController:(NSUUID *)controller stopBrowseForCommissionablesWithReply:(void(^)(BOOL success))reply; -// - (oneway void)deviceController:(NSUUID *)controller attestationChallengeForDeviceID:(NSNumber *)deviceID withReply:(void(^)(NSData * _Nullable))reply; +// - (oneway void)deviceController:(NSUUID *)controller startBrowseForCommissionables:(id)delegate withReply:(void (^)(BOOL success))reply; +// - (oneway void)deviceController:(NSUUID *)controller stopBrowseForCommissionablesWithReply:(void (^)(BOOL success))reply; +// - (oneway void)deviceController:(NSUUID *)controller attestationChallengeForDeviceID:(NSNumber *)deviceID withReply:(void (^)(NSData * _Nullable))reply; -//- (oneway void)deviceController:(NSUUID *)controller addServerEndpoint:(MTRServerEndpoint *)endpoint withReply:(void(^)(BOOL success))reply; -//- (oneway void)deviceController:(NSUUID *)controller removeServerEndpoint:(MTRServerEndpoint *)endpoint; +// - (oneway void)deviceController:(NSUUID *)controller addServerEndpoint:(MTRServerEndpoint *)endpoint withReply:(void (^)(BOOL success))reply; +// - (oneway void)deviceController:(NSUUID *)controller removeServerEndpoint:(MTRServerEndpoint *)endpoint; - (oneway void)deviceController:(NSUUID *)controller shutdownDeviceController:(NSUUID *)controller; - (oneway void)deviceController:(NSUUID *)controller registerNodeID:(NSNumber *)nodeID; From 3f0f242788ab0889fdce9562fd9d8f7e7a553510 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Mon, 9 Sep 2024 18:19:44 -0400 Subject: [PATCH 10/50] Ensure that all MTRDevice state/internalState changes happen on the Matter queue. (#35490) This avoids races where we queue blocks to different queues that both try to change the state, which were resulting in non-deterministic final state. Fixes https://github.com/project-chip/connectedhomeip/issues/34796 --- .../Framework/CHIP/MTRDevice_Concrete.mm | 135 ++++++++++++------ 1 file changed, 89 insertions(+), 46 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm index 7d94c7585abcb0..5bf35f742c1e38 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm @@ -757,11 +757,16 @@ - (void)_ensureSubscriptionForExistingDelegates:(NSString *)reason if ([self _deviceUsesThread]) { MTR_LOG(" => %@ - device is a thread device, scheduling in pool", self); [self _scheduleSubscriptionPoolWork:^{ - std::lock_guard lock(self->_lock); - [self _setupSubscriptionWithReason:[NSString stringWithFormat:@"%@ and scheduled subscription is happening", reason]]; + [self->_deviceController asyncDispatchToMatterQueue:^{ + std::lock_guard lock(self->_lock); + [self _setupSubscriptionWithReason:[NSString stringWithFormat:@"%@ and scheduled subscription is happening", reason]]; + } errorHandler:nil]; } inNanoseconds:0 description:@"MTRDevice setDelegate first subscription"]; } else { - [self _setupSubscriptionWithReason:[NSString stringWithFormat:@"%@ and subscription is needed", reason]]; + [_deviceController asyncDispatchToMatterQueue:^{ + std::lock_guard lock(self->_lock); + [self _setupSubscriptionWithReason:[NSString stringWithFormat:@"%@ and subscription is needed", reason]]; + } errorHandler:nil]; } } @@ -946,6 +951,15 @@ - (void)_callDelegateDeviceCachePrimed // assume lock is held - (void)_changeState:(MTRDeviceState)state { + // We want to avoid situations where something changes our state and then an + // async block that was queued earlier in response to something changes it + // again, to a value that no longer makes sense. To avoid that: + // + // 1) All state changes happen on the Matter queue. + // 2) All state changes happen synchronously with the event that actually + // triggers the state change. + assertChipStackLockedByCurrentThread(); + os_unfair_lock_assert_owner(&self->_lock); MTRDeviceState lastState = _state; _state = state; @@ -970,6 +984,15 @@ - (void)_changeState:(MTRDeviceState)state - (void)_changeInternalState:(MTRInternalDeviceState)state { + // We want to avoid situations where something changes our state and then an + // async block that was queued earlier in response to something changes it + // again, to a value that no longer makes sense. To avoid that: + // + // 1) All state changes happen on the Matter queue. + // 2) All state changes happen synchronously with the event that actually + // triggers the state change. + assertChipStackLockedByCurrentThread(); + os_unfair_lock_assert_owner(&self->_lock); MTRInternalDeviceState lastState = _internalDeviceState; _internalDeviceState = state; @@ -1053,12 +1076,16 @@ - (void)_handleSubscriptionEstablished - (void)_handleSubscriptionError:(NSError *)error { + assertChipStackLockedByCurrentThread(); + std::lock_guard lock(_lock); [self _doHandleSubscriptionError:error]; } - (void)_doHandleSubscriptionError:(NSError *)error { + assertChipStackLockedByCurrentThread(); + os_unfair_lock_assert_owner(&_lock); [self _changeInternalState:MTRInternalDeviceStateUnsubscribed]; @@ -1174,13 +1201,23 @@ - (void)_scheduleSubscriptionPoolWork:(dispatch_block_t)workBlock inNanoseconds: - (void)_handleResubscriptionNeededWithDelay:(NSNumber *)resubscriptionDelayMs { - BOOL deviceUsesThread; + assertChipStackLockedByCurrentThread(); - os_unfair_lock_lock(&self->_lock); + std::lock_guard lock(_lock); + // Change our state before going async. [self _changeState:MTRDeviceStateUnknown]; [self _changeInternalState:MTRInternalDeviceStateResubscribing]; + dispatch_async(self.queue, ^{ + [self _handleResubscriptionNeededWithDelayOnDeviceQueue:resubscriptionDelayMs]; + }); +} + +- (void)_handleResubscriptionNeededWithDelayOnDeviceQueue:(NSNumber *)resubscriptionDelayMs +{ + os_unfair_lock_lock(&self->_lock); + // If we are here, then the ReadClient either just detected a subscription // drop or just tried again and failed. Either way, count it as "tried and // failed to subscribe": in the latter case it's actually true, and in the @@ -1192,7 +1229,7 @@ - (void)_handleResubscriptionNeededWithDelay:(NSNumber *)resubscriptionDelayMs _lastSubscriptionFailureTimeForDescription = _lastSubscriptionFailureTime; } [self _notifyDelegateOfPrivateInternalPropertiesChanges]; - deviceUsesThread = [self _deviceUsesThread]; + BOOL deviceUsesThread = [self _deviceUsesThread]; // If a previous resubscription failed, remove the item from the subscription pool. [self _clearSubscriptionPoolWork]; @@ -1228,6 +1265,8 @@ - (void)_handleResubscriptionNeededWithDelay:(NSNumber *)resubscriptionDelayMs - (void)_handleSubscriptionReset:(NSNumber * _Nullable)retryDelay { + assertChipStackLockedByCurrentThread(); + std::lock_guard lock(_lock); [self _doHandleSubscriptionReset:retryDelay]; } @@ -1247,6 +1286,8 @@ - (void)_setLastSubscriptionAttemptWait:(uint32_t)lastSubscriptionAttemptWait - (void)_doHandleSubscriptionReset:(NSNumber * _Nullable)retryDelay { + assertChipStackLockedByCurrentThread(); + os_unfair_lock_assert_owner(&_lock); if (_deviceController.isSuspended) { @@ -1309,8 +1350,11 @@ - (void)_doHandleSubscriptionReset:(NSNumber * _Nullable)retryDelay // Call _reattemptSubscriptionNowIfNeededWithReason when timer fires - if subscription is // in a better state at that time this will be a no-op. auto resubscriptionBlock = ^{ - std::lock_guard lock(self->_lock); - [self _reattemptSubscriptionNowIfNeededWithReason:@"got subscription reset"]; + [self->_deviceController asyncDispatchToMatterQueue:^{ + std::lock_guard lock(self->_lock); + [self _reattemptSubscriptionNowIfNeededWithReason:@"got subscription reset"]; + } + errorHandler:nil]; }; int64_t resubscriptionDelayNs = static_cast(secondsToWait * NSEC_PER_SEC); @@ -1326,6 +1370,8 @@ - (void)_doHandleSubscriptionReset:(NSNumber * _Nullable)retryDelay - (void)_reattemptSubscriptionNowIfNeededWithReason:(NSString *)reason { + assertChipStackLockedByCurrentThread(); + os_unfair_lock_assert_owner(&self->_lock); if (!self.reattemptingSubscription) { return; @@ -1338,6 +1384,8 @@ - (void)_reattemptSubscriptionNowIfNeededWithReason:(NSString *)reason - (void)_handleUnsolicitedMessageFromPublisher { + assertChipStackLockedByCurrentThread(); + std::lock_guard lock(_lock); [self _changeState:MTRDeviceStateReachable]; @@ -1358,18 +1406,23 @@ - (void)_handleUnsolicitedMessageFromPublisher - (void)_markDeviceAsUnreachableIfNeverSubscribed { - os_unfair_lock_assert_owner(&self->_lock); + [_deviceController asyncDispatchToMatterQueue:^{ + std::lock_guard lock(self->_lock); - if (HadSubscriptionEstablishedOnce(_internalDeviceState)) { - return; - } + if (HadSubscriptionEstablishedOnce(self->_internalDeviceState)) { + return; + } - MTR_LOG("%@ still not subscribed, marking the device as unreachable", self); - [self _changeState:MTRDeviceStateUnreachable]; + MTR_LOG("%@ still not subscribed, marking the device as unreachable", self); + [self _changeState:MTRDeviceStateUnreachable]; + } + errorHandler:nil]; } - (void)_handleReportBegin { + assertChipStackLockedByCurrentThread(); + std::lock_guard lock(_lock); _receivingReport = YES; @@ -1807,11 +1860,14 @@ - (void)unitTestInjectEventReport:(NSArray *> *)eve - (void)unitTestInjectAttributeReport:(NSArray *> *)attributeReport fromSubscription:(BOOL)isFromSubscription { - dispatch_async(self.queue, ^{ + [_deviceController asyncDispatchToMatterQueue:^{ [self _handleReportBegin]; - [self _handleAttributeReport:attributeReport fromSubscription:isFromSubscription]; - [self _handleReportEnd]; - }); + dispatch_async(self.queue, ^{ + [self _handleAttributeReport:attributeReport fromSubscription:isFromSubscription]; + [self _handleReportEnd]; + }); + } + errorHandler:nil]; } #endif @@ -2242,6 +2298,8 @@ - (void)unitTestResetSubscription // assume lock is held - (void)_setupSubscriptionWithReason:(NSString *)reason { + assertChipStackLockedByCurrentThread(); + os_unfair_lock_assert_owner(&self->_lock); if (![self _subscriptionsAllowed]) { @@ -2287,7 +2345,6 @@ - (void)_setupSubscriptionWithReason:(NSString *)reason dispatch_after(dispatch_time(DISPATCH_TIME_NOW, static_cast(kSecondsToWaitBeforeMarkingUnreachableAfterSettingUpSubscription) * static_cast(NSEC_PER_SEC)), self.queue, ^{ mtr_strongify(self); if (self != nil) { - std::lock_guard lock(self->_lock); [self _markDeviceAsUnreachableIfNeverSubscribed]; } }); @@ -2305,10 +2362,8 @@ - (void)_setupSubscriptionWithReason:(NSString *)reason NSNumber * _Nullable retryDelay) { if (error != nil) { MTR_LOG_ERROR("%@ getSessionForNode error %@", self, error); - dispatch_async(self.queue, ^{ - [self _handleSubscriptionError:error]; - [self _handleSubscriptionReset:retryDelay]; - }); + [self _handleSubscriptionError:error]; + [self _handleSubscriptionReset:retryDelay]; return; } @@ -2332,17 +2387,13 @@ - (void)_setupSubscriptionWithReason:(NSString *)reason }, ^(NSError * error) { MTR_LOG_ERROR("%@ got subscription error %@", self, error); - dispatch_async(self.queue, ^{ - // OnError - [self _handleSubscriptionError:error]; - }); + // OnError + [self _handleSubscriptionError:error]; }, ^(NSError * error, NSNumber * resubscriptionDelayMs) { MTR_LOG_ERROR("%@ got resubscription error %@ delay %@", self, error, resubscriptionDelayMs); - dispatch_async(self.queue, ^{ - // OnResubscriptionNeeded - [self _handleResubscriptionNeededWithDelay:resubscriptionDelayMs]; - }); + // OnResubscriptionNeeded + [self _handleResubscriptionNeededWithDelay:resubscriptionDelayMs]; }, ^(void) { MTR_LOG("%@ got subscription established", self); @@ -2373,23 +2424,17 @@ - (void)_setupSubscriptionWithReason:(NSString *)reason self->_currentReadClient = nullptr; self->_currentSubscriptionCallback = nullptr; - dispatch_async(self.queue, ^{ - // OnDone - [self _handleSubscriptionReset:nil]; - }); + // OnDone + [self _doHandleSubscriptionReset:nil]; }, ^(void) { MTR_LOG("%@ got unsolicited message from publisher", self); - dispatch_async(self.queue, ^{ - // OnUnsolicitedMessageFromPublisher - [self _handleUnsolicitedMessageFromPublisher]; - }); + // OnUnsolicitedMessageFromPublisher + [self _handleUnsolicitedMessageFromPublisher]; }, ^(void) { MTR_LOG("%@ got report begin", self); - dispatch_async(self.queue, ^{ - [self _handleReportBegin]; - }); + [self _handleReportBegin]; }, ^(void) { MTR_LOG("%@ got report end", self); @@ -2459,10 +2504,8 @@ - (void)_setupSubscriptionWithReason:(NSString *)reason if (err != CHIP_NO_ERROR) { NSError * error = [MTRError errorForCHIPErrorCode:err logContext:self]; MTR_LOG_ERROR("%@ SendAutoResubscribeRequest error %@", self, error); - dispatch_async(self.queue, ^{ - [self _handleSubscriptionError:error]; - [self _handleSubscriptionReset:nil]; - }); + [self _handleSubscriptionError:error]; + [self _handleSubscriptionReset:nil]; return; } From 2d0135da6de92d2550c78676aa4d862c0063ce5e Mon Sep 17 00:00:00 2001 From: Tennessee Carmel-Veilleux Date: Mon, 9 Sep 2024 21:10:23 -0400 Subject: [PATCH 11/50] Ensure all derived clusters have the base enum values (#35489) - OperationalState and ModeBase cluster enum values did not include the base enums values. This causes all sorts of pain for anything based on .matter files or code-gened enum values. - This PR fixes the situation in the short term by having the ZAP XML include the necessary values Testing done: - No changes of values, only added values --- .../all-clusters-app.matter | 108 ++++++++ .../rootnode_laundrywasher_fb10d238c8.matter | 10 + ...ode_roboticvacuumcleaner_1807ff0c49.matter | 28 ++ .../energy-management-app.matter | 30 +++ .../nxp/zap/laundry-washer-app.matter | 10 + .../microwave-oven-app.matter | 10 + examples/rvc-app/rvc-common/rvc-app.matter | 28 ++ .../device-energy-management-mode-cluster.xml | 17 +- .../chip/dishwasher-mode-cluster.xml | 18 +- .../chip/energy-evse-mode-cluster.xml | 15 ++ .../chip/laundry-washer-mode-cluster.xml | 18 +- .../chip/microwave-oven-mode-cluster.xml | 15 ++ .../zcl/data-model/chip/mode-base-cluster.xml | 2 + .../chip/operational-state-cluster.xml | 2 - .../chip/operational-state-oven-cluster.xml | 29 ++- .../chip/operational-state-rvc-cluster.xml | 20 ++ .../zcl/data-model/chip/oven-mode-cluster.xml | 15 ++ ...rature-controlled-cabinet-mode-cluster.xml | 18 +- .../chip/rvc-clean-mode-cluster.xml | 18 +- .../data-model/chip/rvc-run-mode-cluster.xml | 15 ++ .../chip/water-heater-mode-cluster.xml | 16 ++ .../data_model/controller-clusters.matter | 108 ++++++++ .../python/chip/clusters/Objects.py | 112 +++++++- .../CHIP/zap-generated/MTRBaseClusters.h | 108 ++++++++ .../zap-generated/cluster-enums-check.h | 106 ++++++-- .../app-common/zap-generated/cluster-enums.h | 242 +++++++++++++----- 26 files changed, 1023 insertions(+), 95 deletions(-) diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index 06a034512fc199..cc36d5c6160113 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -2985,6 +2985,16 @@ cluster OvenMode = 73 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kBake = 16384; kConvection = 16385; kGrill = 16386; @@ -3106,6 +3116,16 @@ cluster LaundryWasherMode = 81 { revision 2; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNormal = 16384; kDelicate = 16385; kHeavy = 16386; @@ -3157,6 +3177,16 @@ cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 { revision 2; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kRapidCool = 16384; kRapidFreeze = 16385; } @@ -3234,6 +3264,16 @@ cluster RvcRunMode = 84 { revision 3; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kIdle = 16384; kCleaning = 16385; kMapping = 16386; @@ -3293,6 +3333,16 @@ cluster RvcCleanMode = 85 { revision 3; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kDeepClean = 16384; kVacuum = 16385; kMop = 16386; @@ -3403,6 +3453,16 @@ cluster DishwasherMode = 89 { revision 2; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNormal = 16384; kHeavy = 16385; kLight = 16386; @@ -3644,6 +3704,16 @@ cluster MicrowaveOvenMode = 94 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNormal = 16384; kDefrost = 16385; } @@ -3744,6 +3814,10 @@ cluster RvcOperationalState = 97 { revision 1; enum ErrorStateEnum : enum8 { + kNoError = 0; + kUnableToStartOrResume = 1; + kUnableToCompleteOperation = 2; + kCommandInvalidInState = 3; kFailedToFindChargingDock = 64; kStuck = 65; kDustBinMissing = 66; @@ -3755,6 +3829,10 @@ cluster RvcOperationalState = 97 { } enum OperationalStateEnum : enum8 { + kStopped = 0; + kRunning = 1; + kPaused = 2; + kError = 3; kSeekingCharger = 64; kCharging = 65; kDocked = 66; @@ -4903,6 +4981,16 @@ cluster EnergyEvseMode = 157 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kManual = 16384; kTimeOfUse = 16385; kSolarCharging = 16386; @@ -4953,6 +5041,16 @@ cluster WaterHeaterMode = 158 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kOff = 16384; kManual = 16385; kTimed = 16386; @@ -5003,6 +5101,16 @@ provisional cluster DeviceEnergyManagementMode = 159 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNoOptimization = 16384; kDeviceOptimization = 16385; kLocalOptimization = 16386; diff --git a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter index 47ed02f1523ca3..e160cd4fe8cb82 100644 --- a/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter +++ b/examples/chef/devices/rootnode_laundrywasher_fb10d238c8.matter @@ -1303,6 +1303,16 @@ cluster LaundryWasherMode = 81 { revision 2; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNormal = 16384; kDelicate = 16385; kHeavy = 16386; diff --git a/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter b/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter index 2922ddca5d7ace..6870f3cd42718a 100644 --- a/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter +++ b/examples/chef/devices/rootnode_roboticvacuumcleaner_1807ff0c49.matter @@ -1583,6 +1583,16 @@ cluster RvcRunMode = 84 { revision 3; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kIdle = 16384; kCleaning = 16385; kMapping = 16386; @@ -1642,6 +1652,16 @@ cluster RvcCleanMode = 85 { revision 3; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kDeepClean = 16384; kVacuum = 16385; kMop = 16386; @@ -1694,6 +1714,10 @@ cluster RvcOperationalState = 97 { revision 1; enum ErrorStateEnum : enum8 { + kNoError = 0; + kUnableToStartOrResume = 1; + kUnableToCompleteOperation = 2; + kCommandInvalidInState = 3; kFailedToFindChargingDock = 64; kStuck = 65; kDustBinMissing = 66; @@ -1705,6 +1729,10 @@ cluster RvcOperationalState = 97 { } enum OperationalStateEnum : enum8 { + kStopped = 0; + kRunning = 1; + kPaused = 2; + kError = 3; kSeekingCharger = 64; kCharging = 65; kDocked = 66; diff --git a/examples/energy-management-app/energy-management-common/energy-management-app.matter b/examples/energy-management-app/energy-management-common/energy-management-app.matter index 9b9bf1476e0f0e..3dae5dc5d7a88f 100644 --- a/examples/energy-management-app/energy-management-common/energy-management-app.matter +++ b/examples/energy-management-app/energy-management-common/energy-management-app.matter @@ -2222,6 +2222,16 @@ cluster EnergyEvseMode = 157 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kManual = 16384; kTimeOfUse = 16385; kSolarCharging = 16386; @@ -2272,6 +2282,16 @@ cluster WaterHeaterMode = 158 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kOff = 16384; kManual = 16385; kTimed = 16386; @@ -2322,6 +2342,16 @@ provisional cluster DeviceEnergyManagementMode = 159 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNoOptimization = 16384; kDeviceOptimization = 16385; kLocalOptimization = 16386; diff --git a/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter b/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter index e597b02c74e841..e3ba743cb6f971 100644 --- a/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter +++ b/examples/laundry-washer-app/nxp/zap/laundry-washer-app.matter @@ -1963,6 +1963,16 @@ cluster LaundryWasherMode = 81 { revision 2; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNormal = 16384; kDelicate = 16385; kHeavy = 16386; diff --git a/examples/microwave-oven-app/microwave-oven-common/microwave-oven-app.matter b/examples/microwave-oven-app/microwave-oven-common/microwave-oven-app.matter index 0ac59afb131cd9..b4c1f0365b4ee7 100644 --- a/examples/microwave-oven-app/microwave-oven-common/microwave-oven-app.matter +++ b/examples/microwave-oven-app/microwave-oven-common/microwave-oven-app.matter @@ -1321,6 +1321,16 @@ cluster MicrowaveOvenMode = 94 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNormal = 16384; kDefrost = 16385; } diff --git a/examples/rvc-app/rvc-common/rvc-app.matter b/examples/rvc-app/rvc-common/rvc-app.matter index 974c0dc73a689c..9d927871f8154a 100644 --- a/examples/rvc-app/rvc-common/rvc-app.matter +++ b/examples/rvc-app/rvc-common/rvc-app.matter @@ -1247,6 +1247,16 @@ cluster RvcRunMode = 84 { revision 3; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kIdle = 16384; kCleaning = 16385; kMapping = 16386; @@ -1306,6 +1316,16 @@ cluster RvcCleanMode = 85 { revision 3; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kDeepClean = 16384; kVacuum = 16385; kMop = 16386; @@ -1358,6 +1378,10 @@ cluster RvcOperationalState = 97 { revision 1; enum ErrorStateEnum : enum8 { + kNoError = 0; + kUnableToStartOrResume = 1; + kUnableToCompleteOperation = 2; + kCommandInvalidInState = 3; kFailedToFindChargingDock = 64; kStuck = 65; kDustBinMissing = 66; @@ -1369,6 +1393,10 @@ cluster RvcOperationalState = 97 { } enum OperationalStateEnum : enum8 { + kStopped = 0; + kRunning = 1; + kPaused = 2; + kError = 3; kSeekingCharger = 64; kCharging = 65; kDocked = 66; diff --git a/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml index 043fb4a1833502..3ee32897b4df06 100644 --- a/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml @@ -19,8 +19,23 @@ limitations under the License. + + + + + + + + + + + + + - + diff --git a/src/app/zap-templates/zcl/data-model/chip/dishwasher-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/dishwasher-mode-cluster.xml index 436967be2cee89..7c7dec635f3b6c 100644 --- a/src/app/zap-templates/zcl/data-model/chip/dishwasher-mode-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/dishwasher-mode-cluster.xml @@ -19,6 +19,22 @@ limitations under the License. + + + + + + + + + + + + + + @@ -39,7 +55,7 @@ limitations under the License. - + SupportedModes CurrentMode diff --git a/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml index c4b702b701d174..b5dc56682132a5 100644 --- a/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml @@ -19,6 +19,21 @@ limitations under the License. + + + + + + + + + + + + + diff --git a/src/app/zap-templates/zcl/data-model/chip/laundry-washer-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/laundry-washer-mode-cluster.xml index 99e4ef50c9ca7b..b8afd87d76665c 100644 --- a/src/app/zap-templates/zcl/data-model/chip/laundry-washer-mode-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/laundry-washer-mode-cluster.xml @@ -19,6 +19,22 @@ limitations under the License. + + + + + + + + + + + + + + @@ -40,7 +56,7 @@ limitations under the License. - + SupportedModes CurrentMode diff --git a/src/app/zap-templates/zcl/data-model/chip/microwave-oven-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/microwave-oven-mode-cluster.xml index 3e4e9cfe84d86c..856fde36da15ee 100644 --- a/src/app/zap-templates/zcl/data-model/chip/microwave-oven-mode-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/microwave-oven-mode-cluster.xml @@ -19,6 +19,21 @@ limitations under the License. + + + + + + + + + + + + + diff --git a/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml index b8e81233473932..db99a3daba9bc0 100644 --- a/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml @@ -21,6 +21,8 @@ limitations under the License. The generic enum values for the StatusCode and ModeTag enums are defined within the ModeBase namespace in the mode-base-server source code. See mode-base-cluster-objects.h. This is because zap does not currently support generating code for clusters that do not have a cluster ID. + +Each of these enum values is also listed/copied in the derived clusters. --> diff --git a/src/app/zap-templates/zcl/data-model/chip/operational-state-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/operational-state-cluster.xml index bf296d237b8327..53b9c73cad6b3e 100644 --- a/src/app/zap-templates/zcl/data-model/chip/operational-state-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/operational-state-cluster.xml @@ -19,7 +19,6 @@ limitations under the License. - @@ -28,7 +27,6 @@ limitations under the License. - diff --git a/src/app/zap-templates/zcl/data-model/chip/operational-state-oven-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/operational-state-oven-cluster.xml index 83f2fc8b7984d4..fd52204b02fe85 100644 --- a/src/app/zap-templates/zcl/data-model/chip/operational-state-oven-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/operational-state-oven-cluster.xml @@ -16,6 +16,33 @@ limitations under the License. --> + + + + + + + + + + + + + + + + + + + + + + + Appliances Oven Cavity Operational State @@ -67,4 +94,4 @@ limitations under the License. - \ No newline at end of file + diff --git a/src/app/zap-templates/zcl/data-model/chip/operational-state-rvc-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/operational-state-rvc-cluster.xml index 27817054967fb5..e3b054fe3fedce 100644 --- a/src/app/zap-templates/zcl/data-model/chip/operational-state-rvc-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/operational-state-rvc-cluster.xml @@ -19,6 +19,16 @@ limitations under the License. + + + + + + + + @@ -26,6 +36,16 @@ limitations under the License. + + + + + + + + diff --git a/src/app/zap-templates/zcl/data-model/chip/oven-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/oven-mode-cluster.xml index 41f95e81cdd248..0faa1b037eb318 100644 --- a/src/app/zap-templates/zcl/data-model/chip/oven-mode-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/oven-mode-cluster.xml @@ -19,6 +19,21 @@ limitations under the License. + + + + + + + + + + + + + diff --git a/src/app/zap-templates/zcl/data-model/chip/refrigerator-and-temperature-controlled-cabinet-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/refrigerator-and-temperature-controlled-cabinet-mode-cluster.xml index e5ff239c18afa6..e29080ce4a43cb 100644 --- a/src/app/zap-templates/zcl/data-model/chip/refrigerator-and-temperature-controlled-cabinet-mode-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/refrigerator-and-temperature-controlled-cabinet-mode-cluster.xml @@ -19,6 +19,22 @@ limitations under the License. + + + + + + + + + + + + + + @@ -38,7 +54,7 @@ limitations under the License. - + SupportedModes CurrentMode diff --git a/src/app/zap-templates/zcl/data-model/chip/rvc-clean-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/rvc-clean-mode-cluster.xml index afd87fd18f3d54..65c2f17a3e8e75 100644 --- a/src/app/zap-templates/zcl/data-model/chip/rvc-clean-mode-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/rvc-clean-mode-cluster.xml @@ -24,6 +24,22 @@ limitations under the License. + + + + + + + + + + + + + + @@ -38,7 +54,7 @@ limitations under the License. true Attributes and commands for selecting a mode from a list of supported options. - + diff --git a/src/app/zap-templates/zcl/data-model/chip/rvc-run-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/rvc-run-mode-cluster.xml index df27b2c15e0b83..ce835576396bb8 100644 --- a/src/app/zap-templates/zcl/data-model/chip/rvc-run-mode-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/rvc-run-mode-cluster.xml @@ -31,6 +31,21 @@ limitations under the License. + + + + + + + + + + + + + diff --git a/src/app/zap-templates/zcl/data-model/chip/water-heater-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/water-heater-mode-cluster.xml index 23a1b2eec5d4c0..502f9e3f032b54 100644 --- a/src/app/zap-templates/zcl/data-model/chip/water-heater-mode-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/water-heater-mode-cluster.xml @@ -19,6 +19,22 @@ limitations under the License. + + + + + + + + + + + + + + diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index 412550214b68ec..0a2a04ee0e420c 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -3206,6 +3206,16 @@ cluster OvenMode = 73 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kBake = 16384; kConvection = 16385; kGrill = 16386; @@ -3324,6 +3334,16 @@ cluster LaundryWasherMode = 81 { revision 2; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNormal = 16384; kDelicate = 16385; kHeavy = 16386; @@ -3375,6 +3395,16 @@ cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 { revision 2; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kRapidCool = 16384; kRapidFreeze = 16385; } @@ -3452,6 +3482,16 @@ cluster RvcRunMode = 84 { revision 3; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kIdle = 16384; kCleaning = 16385; kMapping = 16386; @@ -3511,6 +3551,16 @@ cluster RvcCleanMode = 85 { revision 3; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kDeepClean = 16384; kVacuum = 16385; kMop = 16386; @@ -3621,6 +3671,16 @@ cluster DishwasherMode = 89 { revision 2; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNormal = 16384; kHeavy = 16385; kLight = 16386; @@ -3862,6 +3922,16 @@ cluster MicrowaveOvenMode = 94 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNormal = 16384; kDefrost = 16385; } @@ -4006,6 +4076,10 @@ cluster RvcOperationalState = 97 { revision 1; enum ErrorStateEnum : enum8 { + kNoError = 0; + kUnableToStartOrResume = 1; + kUnableToCompleteOperation = 2; + kCommandInvalidInState = 3; kFailedToFindChargingDock = 64; kStuck = 65; kDustBinMissing = 66; @@ -4017,6 +4091,10 @@ cluster RvcOperationalState = 97 { } enum OperationalStateEnum : enum8 { + kStopped = 0; + kRunning = 1; + kPaused = 2; + kError = 3; kSeekingCharger = 64; kCharging = 65; kDocked = 66; @@ -5454,6 +5532,16 @@ cluster EnergyEvseMode = 157 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kManual = 16384; kTimeOfUse = 16385; kSolarCharging = 16386; @@ -5504,6 +5592,16 @@ cluster WaterHeaterMode = 158 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kOff = 16384; kManual = 16385; kTimed = 16386; @@ -5554,6 +5652,16 @@ provisional cluster DeviceEnergyManagementMode = 159 { revision 1; enum ModeTag : enum16 { + kAuto = 0; + kQuick = 1; + kQuiet = 2; + kLowNoise = 3; + kLowEnergy = 4; + kVacation = 5; + kMin = 6; + kMax = 7; + kNight = 8; + kDay = 9; kNoOptimization = 16384; kDeviceOptimization = 16385; kLocalOptimization = 16386; diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index b408fb5fd57e71..89f364a79a094e 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -16030,6 +16030,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ModeTag(MatterIntEnum): + kAuto = 0x00 + kQuick = 0x01 + kQuiet = 0x02 + kLowNoise = 0x03 + kLowEnergy = 0x04 + kVacation = 0x05 + kMin = 0x06 + kMax = 0x07 + kNight = 0x08 + kDay = 0x09 kBake = 0x4000 kConvection = 0x4001 kGrill = 0x4002 @@ -16043,7 +16053,7 @@ class ModeTag(MatterIntEnum): # to kUnknownEnumValue. This is a helper enum value that should only # be used by code to process how it handles receiving an unknown # enum value. This specific value should never be transmitted. - kUnknownEnumValue = 0, + kUnknownEnumValue = 10, class Bitmaps: class Feature(IntFlag): @@ -16756,6 +16766,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ModeTag(MatterIntEnum): + kAuto = 0x00 + kQuick = 0x01 + kQuiet = 0x02 + kLowNoise = 0x03 + kLowEnergy = 0x04 + kVacation = 0x05 + kMin = 0x06 + kMax = 0x07 + kNight = 0x08 + kDay = 0x09 kNormal = 0x4000 kDelicate = 0x4001 kHeavy = 0x4002 @@ -17029,6 +17049,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ModeTag(MatterIntEnum): + kAuto = 0x00 + kQuick = 0x01 + kQuiet = 0x02 + kLowNoise = 0x03 + kLowEnergy = 0x04 + kVacation = 0x05 + kMin = 0x06 + kMax = 0x07 + kNight = 0x08 + kDay = 0x09 kRapidCool = 0x4000 kRapidFreeze = 0x4001 # kUnknownEnumValue intentionally not defined. This enum never goes @@ -17506,6 +17536,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ModeTag(MatterIntEnum): + kAuto = 0x00 + kQuick = 0x01 + kQuiet = 0x02 + kLowNoise = 0x03 + kLowEnergy = 0x04 + kVacation = 0x05 + kMin = 0x06 + kMax = 0x07 + kNight = 0x08 + kDay = 0x09 kIdle = 0x4000 kCleaning = 0x4001 kMapping = 0x4002 @@ -17757,6 +17797,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ModeTag(MatterIntEnum): + kAuto = 0x00 + kQuick = 0x01 + kQuiet = 0x02 + kLowNoise = 0x03 + kLowEnergy = 0x04 + kVacation = 0x05 + kMin = 0x06 + kMax = 0x07 + kNight = 0x08 + kDay = 0x09 kDeepClean = 0x4000 kVacuum = 0x4001 kMop = 0x4002 @@ -18464,6 +18514,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ModeTag(MatterIntEnum): + kAuto = 0x00 + kQuick = 0x01 + kQuiet = 0x02 + kLowNoise = 0x03 + kLowEnergy = 0x04 + kVacation = 0x05 + kMin = 0x06 + kMax = 0x07 + kNight = 0x08 + kDay = 0x09 kNormal = 0x4000 kHeavy = 0x4001 kLight = 0x4002 @@ -19789,13 +19849,23 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ModeTag(MatterIntEnum): + kAuto = 0x00 + kQuick = 0x01 + kQuiet = 0x02 + kLowNoise = 0x03 + kLowEnergy = 0x04 + kVacation = 0x05 + kMin = 0x06 + kMax = 0x07 + kNight = 0x08 + kDay = 0x09 kNormal = 0x4000 kDefrost = 0x4001 # All received enum values that are not listed above will be mapped # to kUnknownEnumValue. This is a helper enum value that should only # be used by code to process how it handles receiving an unknown # enum value. This specific value should never be transmitted. - kUnknownEnumValue = 0, + kUnknownEnumValue = 10, class Bitmaps: class Feature(IntFlag): @@ -20720,6 +20790,10 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ErrorStateEnum(MatterIntEnum): + kNoError = 0x00 + kUnableToStartOrResume = 0x01 + kUnableToCompleteOperation = 0x02 + kCommandInvalidInState = 0x03 kFailedToFindChargingDock = 0x40 kStuck = 0x41 kDustBinMissing = 0x42 @@ -20735,6 +20809,10 @@ class ErrorStateEnum(MatterIntEnum): # src/app/common/templates/config-data.yaml. class OperationalStateEnum(MatterIntEnum): + kStopped = 0x00 + kRunning = 0x01 + kPaused = 0x02 + kError = 0x03 kSeekingCharger = 0x40 kCharging = 0x41 kDocked = 0x42 @@ -27374,6 +27452,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ModeTag(MatterIntEnum): + kAuto = 0x00 + kQuick = 0x01 + kQuiet = 0x02 + kLowNoise = 0x03 + kLowEnergy = 0x04 + kVacation = 0x05 + kMin = 0x06 + kMax = 0x07 + kNight = 0x08 + kDay = 0x09 kManual = 0x4000 kTimeOfUse = 0x4001 kSolarCharging = 0x4002 @@ -27646,6 +27734,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ModeTag(MatterIntEnum): + kAuto = 0x00 + kQuick = 0x01 + kQuiet = 0x02 + kLowNoise = 0x03 + kLowEnergy = 0x04 + kVacation = 0x05 + kMin = 0x06 + kMax = 0x07 + kNight = 0x08 + kDay = 0x09 kOff = 0x4000 kManual = 0x4001 kTimed = 0x4002 @@ -27918,6 +28016,16 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Enums: class ModeTag(MatterIntEnum): + kAuto = 0x00 + kQuick = 0x01 + kQuiet = 0x02 + kLowNoise = 0x03 + kLowEnergy = 0x04 + kVacation = 0x05 + kMin = 0x06 + kMax = 0x07 + kNight = 0x08 + kDay = 0x09 kNoOptimization = 0x4000 kDeviceOptimization = 0x4001 kLocalOptimization = 0x4002 diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h index 60c65ac382561d..2273d8ab191bd3 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h @@ -18522,6 +18522,16 @@ typedef NS_ENUM(uint8_t, MTROvenCavityOperationalStateOperationalState) { } MTR_PROVISIONALLY_AVAILABLE; typedef NS_ENUM(uint16_t, MTROvenModeModeTag) { + MTROvenModeModeTagAuto MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTROvenModeModeTagQuick MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTROvenModeModeTagQuiet MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTROvenModeModeTagLowNoise MTR_PROVISIONALLY_AVAILABLE = 0x03, + MTROvenModeModeTagLowEnergy MTR_PROVISIONALLY_AVAILABLE = 0x04, + MTROvenModeModeTagVacation MTR_PROVISIONALLY_AVAILABLE = 0x05, + MTROvenModeModeTagMin MTR_PROVISIONALLY_AVAILABLE = 0x06, + MTROvenModeModeTagMax MTR_PROVISIONALLY_AVAILABLE = 0x07, + MTROvenModeModeTagNight MTR_PROVISIONALLY_AVAILABLE = 0x08, + MTROvenModeModeTagDay MTR_PROVISIONALLY_AVAILABLE = 0x09, MTROvenModeModeTagBake MTR_PROVISIONALLY_AVAILABLE = 0x4000, MTROvenModeModeTagConvection MTR_PROVISIONALLY_AVAILABLE = 0x4001, MTROvenModeModeTagGrill MTR_PROVISIONALLY_AVAILABLE = 0x4002, @@ -18550,6 +18560,16 @@ typedef NS_OPTIONS(uint32_t, MTRModeSelectFeature) { } MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)); typedef NS_ENUM(uint16_t, MTRLaundryWasherModeModeTag) { + MTRLaundryWasherModeModeTagAuto MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTRLaundryWasherModeModeTagQuick MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTRLaundryWasherModeModeTagQuiet MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTRLaundryWasherModeModeTagLowNoise MTR_PROVISIONALLY_AVAILABLE = 0x03, + MTRLaundryWasherModeModeTagLowEnergy MTR_PROVISIONALLY_AVAILABLE = 0x04, + MTRLaundryWasherModeModeTagVacation MTR_PROVISIONALLY_AVAILABLE = 0x05, + MTRLaundryWasherModeModeTagMin MTR_PROVISIONALLY_AVAILABLE = 0x06, + MTRLaundryWasherModeModeTagMax MTR_PROVISIONALLY_AVAILABLE = 0x07, + MTRLaundryWasherModeModeTagNight MTR_PROVISIONALLY_AVAILABLE = 0x08, + MTRLaundryWasherModeModeTagDay MTR_PROVISIONALLY_AVAILABLE = 0x09, MTRLaundryWasherModeModeTagNormal MTR_PROVISIONALLY_AVAILABLE = 0x4000, MTRLaundryWasherModeModeTagDelicate MTR_PROVISIONALLY_AVAILABLE = 0x4001, MTRLaundryWasherModeModeTagHeavy MTR_PROVISIONALLY_AVAILABLE = 0x4002, @@ -18561,6 +18581,16 @@ typedef NS_OPTIONS(uint32_t, MTRLaundryWasherModeFeature) { } MTR_PROVISIONALLY_AVAILABLE; typedef NS_ENUM(uint16_t, MTRRefrigeratorAndTemperatureControlledCabinetModeModeTag) { + MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagAuto MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagQuick MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagQuiet MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagLowNoise MTR_PROVISIONALLY_AVAILABLE = 0x03, + MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagLowEnergy MTR_PROVISIONALLY_AVAILABLE = 0x04, + MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagVacation MTR_PROVISIONALLY_AVAILABLE = 0x05, + MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagMin MTR_PROVISIONALLY_AVAILABLE = 0x06, + MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagMax MTR_PROVISIONALLY_AVAILABLE = 0x07, + MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagNight MTR_PROVISIONALLY_AVAILABLE = 0x08, + MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagDay MTR_PROVISIONALLY_AVAILABLE = 0x09, MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagRapidCool MTR_PROVISIONALLY_AVAILABLE = 0x4000, MTRRefrigeratorAndTemperatureControlledCabinetModeModeTagRapidFreeze MTR_PROVISIONALLY_AVAILABLE = 0x4001, } MTR_PROVISIONALLY_AVAILABLE; @@ -18582,6 +18612,16 @@ typedef NS_OPTIONS(uint32_t, MTRLaundryWasherControlsFeature) { } MTR_PROVISIONALLY_AVAILABLE; typedef NS_ENUM(uint16_t, MTRRVCRunModeModeTag) { + MTRRVCRunModeModeTagAuto MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTRRVCRunModeModeTagQuick MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTRRVCRunModeModeTagQuiet MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTRRVCRunModeModeTagLowNoise MTR_PROVISIONALLY_AVAILABLE = 0x03, + MTRRVCRunModeModeTagLowEnergy MTR_PROVISIONALLY_AVAILABLE = 0x04, + MTRRVCRunModeModeTagVacation MTR_PROVISIONALLY_AVAILABLE = 0x05, + MTRRVCRunModeModeTagMin MTR_PROVISIONALLY_AVAILABLE = 0x06, + MTRRVCRunModeModeTagMax MTR_PROVISIONALLY_AVAILABLE = 0x07, + MTRRVCRunModeModeTagNight MTR_PROVISIONALLY_AVAILABLE = 0x08, + MTRRVCRunModeModeTagDay MTR_PROVISIONALLY_AVAILABLE = 0x09, MTRRVCRunModeModeTagIdle MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x4000, MTRRVCRunModeModeTagCleaning MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x4001, MTRRVCRunModeModeTagMapping MTR_PROVISIONALLY_AVAILABLE = 0x4002, @@ -18603,6 +18643,16 @@ typedef NS_OPTIONS(uint32_t, MTRRVCRunModeFeature) { } MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)); typedef NS_ENUM(uint16_t, MTRRVCCleanModeModeTag) { + MTRRVCCleanModeModeTagAuto MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTRRVCCleanModeModeTagQuick MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTRRVCCleanModeModeTagQuiet MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTRRVCCleanModeModeTagLowNoise MTR_PROVISIONALLY_AVAILABLE = 0x03, + MTRRVCCleanModeModeTagLowEnergy MTR_PROVISIONALLY_AVAILABLE = 0x04, + MTRRVCCleanModeModeTagVacation MTR_PROVISIONALLY_AVAILABLE = 0x05, + MTRRVCCleanModeModeTagMin MTR_PROVISIONALLY_AVAILABLE = 0x06, + MTRRVCCleanModeModeTagMax MTR_PROVISIONALLY_AVAILABLE = 0x07, + MTRRVCCleanModeModeTagNight MTR_PROVISIONALLY_AVAILABLE = 0x08, + MTRRVCCleanModeModeTagDay MTR_PROVISIONALLY_AVAILABLE = 0x09, MTRRVCCleanModeModeTagDeepClean MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x4000, MTRRVCCleanModeModeTagVacuum MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x4001, MTRRVCCleanModeModeTagMop MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x4002, @@ -18627,6 +18677,16 @@ typedef NS_OPTIONS(uint32_t, MTRRefrigeratorAlarmAlarmBitmap) { } MTR_PROVISIONALLY_AVAILABLE; typedef NS_ENUM(uint16_t, MTRDishwasherModeModeTag) { + MTRDishwasherModeModeTagAuto MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTRDishwasherModeModeTagQuick MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTRDishwasherModeModeTagQuiet MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTRDishwasherModeModeTagLowNoise MTR_PROVISIONALLY_AVAILABLE = 0x03, + MTRDishwasherModeModeTagLowEnergy MTR_PROVISIONALLY_AVAILABLE = 0x04, + MTRDishwasherModeModeTagVacation MTR_PROVISIONALLY_AVAILABLE = 0x05, + MTRDishwasherModeModeTagMin MTR_PROVISIONALLY_AVAILABLE = 0x06, + MTRDishwasherModeModeTagMax MTR_PROVISIONALLY_AVAILABLE = 0x07, + MTRDishwasherModeModeTagNight MTR_PROVISIONALLY_AVAILABLE = 0x08, + MTRDishwasherModeModeTagDay MTR_PROVISIONALLY_AVAILABLE = 0x09, MTRDishwasherModeModeTagNormal MTR_PROVISIONALLY_AVAILABLE = 0x4000, MTRDishwasherModeModeTagHeavy MTR_PROVISIONALLY_AVAILABLE = 0x4001, MTRDishwasherModeModeTagLight MTR_PROVISIONALLY_AVAILABLE = 0x4002, @@ -18713,6 +18773,16 @@ typedef NS_OPTIONS(uint32_t, MTRDishwasherAlarmFeature) { } MTR_PROVISIONALLY_AVAILABLE; typedef NS_ENUM(uint16_t, MTRMicrowaveOvenModeModeTag) { + MTRMicrowaveOvenModeModeTagAuto MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTRMicrowaveOvenModeModeTagQuick MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTRMicrowaveOvenModeModeTagQuiet MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTRMicrowaveOvenModeModeTagLowNoise MTR_PROVISIONALLY_AVAILABLE = 0x03, + MTRMicrowaveOvenModeModeTagLowEnergy MTR_PROVISIONALLY_AVAILABLE = 0x04, + MTRMicrowaveOvenModeModeTagVacation MTR_PROVISIONALLY_AVAILABLE = 0x05, + MTRMicrowaveOvenModeModeTagMin MTR_PROVISIONALLY_AVAILABLE = 0x06, + MTRMicrowaveOvenModeModeTagMax MTR_PROVISIONALLY_AVAILABLE = 0x07, + MTRMicrowaveOvenModeModeTagNight MTR_PROVISIONALLY_AVAILABLE = 0x08, + MTRMicrowaveOvenModeModeTagDay MTR_PROVISIONALLY_AVAILABLE = 0x09, MTRMicrowaveOvenModeModeTagNormal MTR_PROVISIONALLY_AVAILABLE = 0x4000, MTRMicrowaveOvenModeModeTagDefrost MTR_PROVISIONALLY_AVAILABLE = 0x4001, } MTR_PROVISIONALLY_AVAILABLE; @@ -18742,6 +18812,10 @@ typedef NS_ENUM(uint8_t, MTROperationalState) { } MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)); typedef NS_ENUM(uint8_t, MTRRVCOperationalStateErrorState) { + MTRRVCOperationalStateErrorStateNoError MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTRRVCOperationalStateErrorStateUnableToStartOrResume MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTRRVCOperationalStateErrorStateUnableToCompleteOperation MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTRRVCOperationalStateErrorStateCommandInvalidInState MTR_PROVISIONALLY_AVAILABLE = 0x03, MTRRVCOperationalStateErrorStateFailedToFindChargingDock MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x40, MTRRVCOperationalStateErrorStateStuck MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x41, MTRRVCOperationalStateErrorStateDustBinMissing MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x42, @@ -18753,6 +18827,10 @@ typedef NS_ENUM(uint8_t, MTRRVCOperationalStateErrorState) { } MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)); typedef NS_ENUM(uint8_t, MTRRVCOperationalStateOperationalState) { + MTRRVCOperationalStateOperationalStateStopped MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTRRVCOperationalStateOperationalStateRunning MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTRRVCOperationalStateOperationalStatePaused MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTRRVCOperationalStateOperationalStateError MTR_PROVISIONALLY_AVAILABLE = 0x03, MTRRVCOperationalStateOperationalStateSeekingCharger MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x40, MTRRVCOperationalStateOperationalStateCharging MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x41, MTRRVCOperationalStateOperationalStateDocked MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x42, @@ -19202,6 +19280,16 @@ typedef NS_OPTIONS(uint32_t, MTRPowerTopologyFeature) { } MTR_PROVISIONALLY_AVAILABLE; typedef NS_ENUM(uint16_t, MTREnergyEVSEModeModeTag) { + MTREnergyEVSEModeModeTagAuto MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTREnergyEVSEModeModeTagQuick MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTREnergyEVSEModeModeTagQuiet MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTREnergyEVSEModeModeTagLowNoise MTR_PROVISIONALLY_AVAILABLE = 0x03, + MTREnergyEVSEModeModeTagLowEnergy MTR_PROVISIONALLY_AVAILABLE = 0x04, + MTREnergyEVSEModeModeTagVacation MTR_PROVISIONALLY_AVAILABLE = 0x05, + MTREnergyEVSEModeModeTagMin MTR_PROVISIONALLY_AVAILABLE = 0x06, + MTREnergyEVSEModeModeTagMax MTR_PROVISIONALLY_AVAILABLE = 0x07, + MTREnergyEVSEModeModeTagNight MTR_PROVISIONALLY_AVAILABLE = 0x08, + MTREnergyEVSEModeModeTagDay MTR_PROVISIONALLY_AVAILABLE = 0x09, MTREnergyEVSEModeModeTagManual MTR_PROVISIONALLY_AVAILABLE = 0x4000, MTREnergyEVSEModeModeTagTimeOfUse MTR_PROVISIONALLY_AVAILABLE = 0x4001, MTREnergyEVSEModeModeTagSolarCharging MTR_PROVISIONALLY_AVAILABLE = 0x4002, @@ -19212,6 +19300,16 @@ typedef NS_OPTIONS(uint32_t, MTREnergyEVSEModeFeature) { } MTR_PROVISIONALLY_AVAILABLE; typedef NS_ENUM(uint16_t, MTRWaterHeaterModeModeTag) { + MTRWaterHeaterModeModeTagAuto MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTRWaterHeaterModeModeTagQuick MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTRWaterHeaterModeModeTagQuiet MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTRWaterHeaterModeModeTagLowNoise MTR_PROVISIONALLY_AVAILABLE = 0x03, + MTRWaterHeaterModeModeTagLowEnergy MTR_PROVISIONALLY_AVAILABLE = 0x04, + MTRWaterHeaterModeModeTagVacation MTR_PROVISIONALLY_AVAILABLE = 0x05, + MTRWaterHeaterModeModeTagMin MTR_PROVISIONALLY_AVAILABLE = 0x06, + MTRWaterHeaterModeModeTagMax MTR_PROVISIONALLY_AVAILABLE = 0x07, + MTRWaterHeaterModeModeTagNight MTR_PROVISIONALLY_AVAILABLE = 0x08, + MTRWaterHeaterModeModeTagDay MTR_PROVISIONALLY_AVAILABLE = 0x09, MTRWaterHeaterModeModeTagOff MTR_PROVISIONALLY_AVAILABLE = 0x4000, MTRWaterHeaterModeModeTagManual MTR_PROVISIONALLY_AVAILABLE = 0x4001, MTRWaterHeaterModeModeTagTimed MTR_PROVISIONALLY_AVAILABLE = 0x4002, @@ -19222,6 +19320,16 @@ typedef NS_OPTIONS(uint32_t, MTRWaterHeaterModeFeature) { } MTR_PROVISIONALLY_AVAILABLE; typedef NS_ENUM(uint16_t, MTRDeviceEnergyManagementModeModeTag) { + MTRDeviceEnergyManagementModeModeTagAuto MTR_PROVISIONALLY_AVAILABLE = 0x00, + MTRDeviceEnergyManagementModeModeTagQuick MTR_PROVISIONALLY_AVAILABLE = 0x01, + MTRDeviceEnergyManagementModeModeTagQuiet MTR_PROVISIONALLY_AVAILABLE = 0x02, + MTRDeviceEnergyManagementModeModeTagLowNoise MTR_PROVISIONALLY_AVAILABLE = 0x03, + MTRDeviceEnergyManagementModeModeTagLowEnergy MTR_PROVISIONALLY_AVAILABLE = 0x04, + MTRDeviceEnergyManagementModeModeTagVacation MTR_PROVISIONALLY_AVAILABLE = 0x05, + MTRDeviceEnergyManagementModeModeTagMin MTR_PROVISIONALLY_AVAILABLE = 0x06, + MTRDeviceEnergyManagementModeModeTagMax MTR_PROVISIONALLY_AVAILABLE = 0x07, + MTRDeviceEnergyManagementModeModeTagNight MTR_PROVISIONALLY_AVAILABLE = 0x08, + MTRDeviceEnergyManagementModeModeTagDay MTR_PROVISIONALLY_AVAILABLE = 0x09, MTRDeviceEnergyManagementModeModeTagNoOptimization MTR_PROVISIONALLY_AVAILABLE = 0x4000, MTRDeviceEnergyManagementModeModeTagDeviceOptimization MTR_PROVISIONALLY_AVAILABLE = 0x4001, MTRDeviceEnergyManagementModeModeTagLocalOptimization MTR_PROVISIONALLY_AVAILABLE = 0x4002, diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h index 90d399b8e6fde7..2bde6623e6af84 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h @@ -169,20 +169,6 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(detail::DegradationDire return EnumType::kUnknownEnumValue; } } -static auto __attribute__((unused)) EnsureKnownEnumValue(detail::ErrorStateEnum val) -{ - using EnumType = detail::ErrorStateEnum; - switch (val) - { - case EnumType::kNoError: - case EnumType::kUnableToStartOrResume: - case EnumType::kUnableToCompleteOperation: - case EnumType::kCommandInvalidInState: - return val; - default: - return EnumType::kUnknownEnumValue; - } -} static auto __attribute__((unused)) EnsureKnownEnumValue(Globals::FloorSurfaceTag val) { using EnumType = Globals::FloorSurfaceTag; @@ -351,20 +337,6 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(detail::MeasurementUnit return EnumType::kUnknownEnumValue; } } -static auto __attribute__((unused)) EnsureKnownEnumValue(detail::OperationalStateEnum val) -{ - using EnumType = detail::OperationalStateEnum; - switch (val) - { - case EnumType::kStopped: - case EnumType::kRunning: - case EnumType::kPaused: - case EnumType::kError: - return val; - default: - return EnumType::kUnknownEnumValue; - } -} static auto __attribute__((unused)) EnsureKnownEnumValue(Globals::PositionTag val) { using EnumType = Globals::PositionTag; @@ -1651,11 +1623,50 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(Timer::TimerStatusEnum } } +static auto __attribute__((unused)) EnsureKnownEnumValue(OvenCavityOperationalState::ErrorStateEnum val) +{ + using EnumType = OvenCavityOperationalState::ErrorStateEnum; + switch (val) + { + case EnumType::kNoError: + case EnumType::kUnableToStartOrResume: + case EnumType::kUnableToCompleteOperation: + case EnumType::kCommandInvalidInState: + return val; + default: + return EnumType::kUnknownEnumValue; + } +} +static auto __attribute__((unused)) EnsureKnownEnumValue(OvenCavityOperationalState::OperationalStateEnum val) +{ + using EnumType = OvenCavityOperationalState::OperationalStateEnum; + switch (val) + { + case EnumType::kStopped: + case EnumType::kRunning: + case EnumType::kPaused: + case EnumType::kError: + return val; + default: + return EnumType::kUnknownEnumValue; + } +} + static auto __attribute__((unused)) EnsureKnownEnumValue(OvenMode::ModeTag val) { using EnumType = OvenMode::ModeTag; switch (val) { + case EnumType::kAuto: + case EnumType::kQuick: + case EnumType::kQuiet: + case EnumType::kLowNoise: + case EnumType::kLowEnergy: + case EnumType::kVacation: + case EnumType::kMin: + case EnumType::kMax: + case EnumType::kNight: + case EnumType::kDay: case EnumType::kBake: case EnumType::kConvection: case EnumType::kGrill: @@ -1808,6 +1819,16 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(MicrowaveOvenMode::Mode using EnumType = MicrowaveOvenMode::ModeTag; switch (val) { + case EnumType::kAuto: + case EnumType::kQuick: + case EnumType::kQuiet: + case EnumType::kLowNoise: + case EnumType::kLowEnergy: + case EnumType::kVacation: + case EnumType::kMin: + case EnumType::kMax: + case EnumType::kNight: + case EnumType::kDay: case EnumType::kNormal: case EnumType::kDefrost: return val; @@ -1816,6 +1837,35 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(MicrowaveOvenMode::Mode } } +static auto __attribute__((unused)) EnsureKnownEnumValue(OperationalState::ErrorStateEnum val) +{ + using EnumType = OperationalState::ErrorStateEnum; + switch (val) + { + case EnumType::kNoError: + case EnumType::kUnableToStartOrResume: + case EnumType::kUnableToCompleteOperation: + case EnumType::kCommandInvalidInState: + return val; + default: + return EnumType::kUnknownEnumValue; + } +} +static auto __attribute__((unused)) EnsureKnownEnumValue(OperationalState::OperationalStateEnum val) +{ + using EnumType = OperationalState::OperationalStateEnum; + switch (val) + { + case EnumType::kStopped: + case EnumType::kRunning: + case EnumType::kPaused: + case EnumType::kError: + return val; + default: + return EnumType::kUnknownEnumValue; + } +} + static auto __attribute__((unused)) EnsureKnownEnumValue(ValveConfigurationAndControl::StatusCodeEnum val) { using EnumType = ValveConfigurationAndControl::StatusCodeEnum; diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h index b1a50bcd44a722..627b5808fa7931 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h @@ -53,20 +53,6 @@ enum class DegradationDirectionEnum : uint8_t kUnknownEnumValue = 2, }; -// Enum for ErrorStateEnum -enum class ErrorStateEnum : uint8_t -{ - kNoError = 0x00, - kUnableToStartOrResume = 0x01, - kUnableToCompleteOperation = 0x02, - kCommandInvalidInState = 0x03, - // All received enum values that are not listed above will be mapped - // to kUnknownEnumValue. This is a helper enum value that should only - // be used by code to process how it handles receiving and unknown - // enum value. This specific should never be transmitted. - kUnknownEnumValue = 4, -}; - // Enum for LevelValueEnum enum class LevelValueEnum : uint8_t { @@ -138,20 +124,6 @@ enum class MeasurementUnitEnum : uint8_t kUnknownEnumValue = 8, }; -// Enum for OperationalStateEnum -enum class OperationalStateEnum : uint8_t -{ - kStopped = 0x00, - kRunning = 0x01, - kPaused = 0x02, - kError = 0x03, - // All received enum values that are not listed above will be mapped - // to kUnknownEnumValue. This is a helper enum value that should only - // be used by code to process how it handles receiving and unknown - // enum value. This specific should never be transmitted. - kUnknownEnumValue = 4, -}; - // Enum for ProductIdentifierTypeEnum enum class ProductIdentifierTypeEnum : uint8_t { @@ -1992,9 +1964,33 @@ enum class Feature : uint32_t namespace OvenCavityOperationalState { -using ErrorStateEnum = Clusters::detail::ErrorStateEnum; +// Enum for ErrorStateEnum +enum class ErrorStateEnum : uint8_t +{ + kNoError = 0x00, + kUnableToStartOrResume = 0x01, + kUnableToCompleteOperation = 0x02, + kCommandInvalidInState = 0x03, + // All received enum values that are not listed above will be mapped + // to kUnknownEnumValue. This is a helper enum value that should only + // be used by code to process how it handles receiving and unknown + // enum value. This specific should never be transmitted. + kUnknownEnumValue = 4, +}; -using OperationalStateEnum = Clusters::detail::OperationalStateEnum; +// Enum for OperationalStateEnum +enum class OperationalStateEnum : uint8_t +{ + kStopped = 0x00, + kRunning = 0x01, + kPaused = 0x02, + kError = 0x03, + // All received enum values that are not listed above will be mapped + // to kUnknownEnumValue. This is a helper enum value that should only + // be used by code to process how it handles receiving and unknown + // enum value. This specific should never be transmitted. + kUnknownEnumValue = 4, +}; } // namespace OvenCavityOperationalState namespace OvenMode { @@ -2002,6 +1998,16 @@ namespace OvenMode { // Enum for ModeTag enum class ModeTag : uint16_t { + kAuto = 0x00, + kQuick = 0x01, + kQuiet = 0x02, + kLowNoise = 0x03, + kLowEnergy = 0x04, + kVacation = 0x05, + kMin = 0x06, + kMax = 0x07, + kNight = 0x08, + kDay = 0x09, kBake = 0x4000, kConvection = 0x4001, kGrill = 0x4002, @@ -2015,7 +2021,7 @@ enum class ModeTag : uint16_t // to kUnknownEnumValue. This is a helper enum value that should only // be used by code to process how it handles receiving and unknown // enum value. This specific should never be transmitted. - kUnknownEnumValue = 0, + kUnknownEnumValue = 10, }; // Bitmap for Feature @@ -2056,10 +2062,20 @@ namespace LaundryWasherMode { // Enum for ModeTag enum class ModeTag : uint16_t { - kNormal = 0x4000, - kDelicate = 0x4001, - kHeavy = 0x4002, - kWhites = 0x4003, + kAuto = 0x00, + kQuick = 0x01, + kQuiet = 0x02, + kLowNoise = 0x03, + kLowEnergy = 0x04, + kVacation = 0x05, + kMin = 0x06, + kMax = 0x07, + kNight = 0x08, + kDay = 0x09, + kNormal = 0x4000, + kDelicate = 0x4001, + kHeavy = 0x4002, + kWhites = 0x4003, // kUnknownEnumValue intentionally not defined. This enum never goes // through DataModel::Decode, likely because it is a part of a derived // cluster. As a result having kUnknownEnumValue in this enum is error @@ -2079,6 +2095,16 @@ namespace RefrigeratorAndTemperatureControlledCabinetMode { // Enum for ModeTag enum class ModeTag : uint16_t { + kAuto = 0x00, + kQuick = 0x01, + kQuiet = 0x02, + kLowNoise = 0x03, + kLowEnergy = 0x04, + kVacation = 0x05, + kMin = 0x06, + kMax = 0x07, + kNight = 0x08, + kDay = 0x09, kRapidCool = 0x4000, kRapidFreeze = 0x4001, // kUnknownEnumValue intentionally not defined. This enum never goes @@ -2124,9 +2150,19 @@ namespace RvcRunMode { // Enum for ModeTag enum class ModeTag : uint16_t { - kIdle = 0x4000, - kCleaning = 0x4001, - kMapping = 0x4002, + kAuto = 0x00, + kQuick = 0x01, + kQuiet = 0x02, + kLowNoise = 0x03, + kLowEnergy = 0x04, + kVacation = 0x05, + kMin = 0x06, + kMax = 0x07, + kNight = 0x08, + kDay = 0x09, + kIdle = 0x4000, + kCleaning = 0x4001, + kMapping = 0x4002, // kUnknownEnumValue intentionally not defined. This enum never goes // through DataModel::Decode, likely because it is a part of a derived // cluster. As a result having kUnknownEnumValue in this enum is error @@ -2164,6 +2200,16 @@ namespace RvcCleanMode { // Enum for ModeTag enum class ModeTag : uint16_t { + kAuto = 0x00, + kQuick = 0x01, + kQuiet = 0x02, + kLowNoise = 0x03, + kLowEnergy = 0x04, + kVacation = 0x05, + kMin = 0x06, + kMax = 0x07, + kNight = 0x08, + kDay = 0x09, kDeepClean = 0x4000, kVacuum = 0x4001, kMop = 0x4002, @@ -2217,9 +2263,19 @@ namespace DishwasherMode { // Enum for ModeTag enum class ModeTag : uint16_t { - kNormal = 0x4000, - kHeavy = 0x4001, - kLight = 0x4002, + kAuto = 0x00, + kQuick = 0x01, + kQuiet = 0x02, + kLowNoise = 0x03, + kLowEnergy = 0x04, + kVacation = 0x05, + kMin = 0x06, + kMax = 0x07, + kNight = 0x08, + kDay = 0x09, + kNormal = 0x4000, + kHeavy = 0x4001, + kLight = 0x4002, // kUnknownEnumValue intentionally not defined. This enum never goes // through DataModel::Decode, likely because it is a part of a derived // cluster. As a result having kUnknownEnumValue in this enum is error @@ -2381,13 +2437,23 @@ namespace MicrowaveOvenMode { // Enum for ModeTag enum class ModeTag : uint16_t { - kNormal = 0x4000, - kDefrost = 0x4001, + kAuto = 0x00, + kQuick = 0x01, + kQuiet = 0x02, + kLowNoise = 0x03, + kLowEnergy = 0x04, + kVacation = 0x05, + kMin = 0x06, + kMax = 0x07, + kNight = 0x08, + kDay = 0x09, + kNormal = 0x4000, + kDefrost = 0x4001, // All received enum values that are not listed above will be mapped // to kUnknownEnumValue. This is a helper enum value that should only // be used by code to process how it handles receiving and unknown // enum value. This specific should never be transmitted. - kUnknownEnumValue = 0, + kUnknownEnumValue = 10, }; // Bitmap for Feature @@ -2410,9 +2476,33 @@ enum class Feature : uint32_t namespace OperationalState { -using ErrorStateEnum = Clusters::detail::ErrorStateEnum; +// Enum for ErrorStateEnum +enum class ErrorStateEnum : uint8_t +{ + kNoError = 0x00, + kUnableToStartOrResume = 0x01, + kUnableToCompleteOperation = 0x02, + kCommandInvalidInState = 0x03, + // All received enum values that are not listed above will be mapped + // to kUnknownEnumValue. This is a helper enum value that should only + // be used by code to process how it handles receiving and unknown + // enum value. This specific should never be transmitted. + kUnknownEnumValue = 4, +}; -using OperationalStateEnum = Clusters::detail::OperationalStateEnum; +// Enum for OperationalStateEnum +enum class OperationalStateEnum : uint8_t +{ + kStopped = 0x00, + kRunning = 0x01, + kPaused = 0x02, + kError = 0x03, + // All received enum values that are not listed above will be mapped + // to kUnknownEnumValue. This is a helper enum value that should only + // be used by code to process how it handles receiving and unknown + // enum value. This specific should never be transmitted. + kUnknownEnumValue = 4, +}; } // namespace OperationalState namespace RvcOperationalState { @@ -2420,14 +2510,18 @@ namespace RvcOperationalState { // Enum for ErrorStateEnum enum class ErrorStateEnum : uint8_t { - kFailedToFindChargingDock = 0x40, - kStuck = 0x41, - kDustBinMissing = 0x42, - kDustBinFull = 0x43, - kWaterTankEmpty = 0x44, - kWaterTankMissing = 0x45, - kWaterTankLidOpen = 0x46, - kMopCleaningPadMissing = 0x47, + kNoError = 0x00, + kUnableToStartOrResume = 0x01, + kUnableToCompleteOperation = 0x02, + kCommandInvalidInState = 0x03, + kFailedToFindChargingDock = 0x40, + kStuck = 0x41, + kDustBinMissing = 0x42, + kDustBinFull = 0x43, + kWaterTankEmpty = 0x44, + kWaterTankMissing = 0x45, + kWaterTankLidOpen = 0x46, + kMopCleaningPadMissing = 0x47, // kUnknownEnumValue intentionally not defined. This enum never goes // through DataModel::Decode, likely because it is a part of a derived // cluster. As a result having kUnknownEnumValue in this enum is error @@ -2438,6 +2532,10 @@ enum class ErrorStateEnum : uint8_t // Enum for OperationalStateEnum enum class OperationalStateEnum : uint8_t { + kStopped = 0x00, + kRunning = 0x01, + kPaused = 0x02, + kError = 0x03, kSeekingCharger = 0x40, kCharging = 0x41, kDocked = 0x42, @@ -3092,6 +3190,16 @@ namespace EnergyEvseMode { // Enum for ModeTag enum class ModeTag : uint16_t { + kAuto = 0x00, + kQuick = 0x01, + kQuiet = 0x02, + kLowNoise = 0x03, + kLowEnergy = 0x04, + kVacation = 0x05, + kMin = 0x06, + kMax = 0x07, + kNight = 0x08, + kDay = 0x09, kManual = 0x4000, kTimeOfUse = 0x4001, kSolarCharging = 0x4002, @@ -3114,9 +3222,19 @@ namespace WaterHeaterMode { // Enum for ModeTag enum class ModeTag : uint16_t { - kOff = 0x4000, - kManual = 0x4001, - kTimed = 0x4002, + kAuto = 0x00, + kQuick = 0x01, + kQuiet = 0x02, + kLowNoise = 0x03, + kLowEnergy = 0x04, + kVacation = 0x05, + kMin = 0x06, + kMax = 0x07, + kNight = 0x08, + kDay = 0x09, + kOff = 0x4000, + kManual = 0x4001, + kTimed = 0x4002, // kUnknownEnumValue intentionally not defined. This enum never goes // through DataModel::Decode, likely because it is a part of a derived // cluster. As a result having kUnknownEnumValue in this enum is error @@ -3136,6 +3254,16 @@ namespace DeviceEnergyManagementMode { // Enum for ModeTag enum class ModeTag : uint16_t { + kAuto = 0x00, + kQuick = 0x01, + kQuiet = 0x02, + kLowNoise = 0x03, + kLowEnergy = 0x04, + kVacation = 0x05, + kMin = 0x06, + kMax = 0x07, + kNight = 0x08, + kDay = 0x09, kNoOptimization = 0x4000, kDeviceOptimization = 0x4001, kLocalOptimization = 0x4002, From 01632c4a58725883567c72fac7096f0c8016e318 Mon Sep 17 00:00:00 2001 From: Jeff Tung <100387939+jtung-apple@users.noreply.github.com> Date: Mon, 9 Sep 2024 18:34:57 -0700 Subject: [PATCH 12/50] [Darwin] Implement delegate add/remove for device controller (#35475) * [Darwin] Implement delegate add/remove for device controller * Restyled changes * Fixed setDeviceControllerDelegate * Added unit test * Restyled * Unit test fix for TSAN * Use matter queue for device controller callback queue to avoid commandline tool main queue blockage --- .../Framework/CHIP/MTRDefines_Internal.h | 4 + .../Framework/CHIP/MTRDeviceController.h | 19 +- .../Framework/CHIP/MTRDeviceController.mm | 191 +++++++++++++++++- .../CHIP/MTRDeviceController_Concrete.h | 10 +- .../CHIP/MTRDeviceController_Concrete.mm | 13 +- src/darwin/Framework/CHIP/MTRError_Internal.h | 4 - .../Framework/CHIPTests/MTRPairingTests.m | 58 ++++++ .../TestHelpers/MTRTestDeclarations.h | 4 + 8 files changed, 271 insertions(+), 32 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDefines_Internal.h b/src/darwin/Framework/CHIP/MTRDefines_Internal.h index e22f00dd4e6a0b..94a1cbb3da61f4 100644 --- a/src/darwin/Framework/CHIP/MTRDefines_Internal.h +++ b/src/darwin/Framework/CHIP/MTRDefines_Internal.h @@ -150,3 +150,7 @@ typedef struct {} variable_hidden_by_mtr_hide; } \ } #endif + +#ifndef YES_NO +#define YES_NO(x) ((x) ? @"YES" : @"NO") +#endif diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.h b/src/darwin/Framework/CHIP/MTRDeviceController.h index ad025c87d64043..d731b13052798c 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.h +++ b/src/darwin/Framework/CHIP/MTRDeviceController.h @@ -186,7 +186,7 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - (void)preWarmCommissioningSession MTR_DEPRECATED("-[MTRDeviceControllerFactory preWarmCommissioningSession]", ios(16.4, 17.6), macos(13.3, 14.6), watchos(9.4, 10.6), tvos(16.4, 17.6)); /** - * Set the Delegate for the device controller as well as the Queue on which the Delegate callbacks will be triggered + * Set the Delegate for the device controller as well as the Queue on which the Delegate callbacks will be triggered * * @param[in] delegate The delegate the commissioning process should use * @@ -195,6 +195,23 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) - (void)setDeviceControllerDelegate:(id)delegate queue:(dispatch_queue_t)queue MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)); +/** + * Adds a Delegate to the device controller as well as the Queue on which the Delegate callbacks will be triggered + * + * @param[in] delegate The delegate the commissioning process should use + * + * @param[in] queue The queue on which the callbacks will be delivered + */ +- (void)addDeviceControllerDelegate:(id)delegate + queue:(dispatch_queue_t)queue MTR_NEWLY_AVAILABLE; + +/** + * Removes a Delegate from the device controller + * + * @param[in] delegate The delegate to be removed + */ +- (void)removeDeviceControllerDelegate:(id)delegate MTR_NEWLY_AVAILABLE; + /** * Start scanning for commissionable devices. * diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 021ada1852cf9c..9dc9f5a147db81 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -112,6 +112,27 @@ using namespace chip::Tracing::DarwinFramework; +@interface MTRDeviceControllerDelegateInfo : NSObject +- (instancetype)initWithDelegate:(id)delegate queue:(dispatch_queue_t)queue; +@property (nonatomic, weak, readonly) id delegate; +@property (nonatomic, readonly) dispatch_queue_t queue; +@end + +@implementation MTRDeviceControllerDelegateInfo +@synthesize delegate = _delegate, queue = _queue; +- (instancetype)initWithDelegate:(id)delegate queue:(dispatch_queue_t)queue +{ + if (!(self = [super init])) { + return nil; + } + + _delegate = delegate; + _queue = queue; + + return self; +} +@end + @implementation MTRDeviceController { chip::Controller::DeviceCommissioner * _cppCommissioner; chip::Credentials::PartialDACVerifier * _partialDACVerifier; @@ -139,6 +160,9 @@ @implementation MTRDeviceController { NSUInteger _keepRunningAssertionCounter; BOOL _shutdownPending; os_unfair_lock _assertionLock; + + NSMutableSet * _delegates; + id _strongDelegateForSetDelegateAPI; } @synthesize uniqueIdentifier = _uniqueIdentifier; @@ -168,6 +192,8 @@ - (instancetype)initForSubclasses:(BOOL)startSuspended _nodeIDToDeviceMap = [NSMapTable strongToWeakObjectsMapTable]; + _delegates = [NSMutableSet set]; + return self; } @@ -567,6 +593,10 @@ - (void)cleanup if (_deviceControllerDelegateBridge) { delete _deviceControllerDelegateBridge; _deviceControllerDelegateBridge = nullptr; + @synchronized(self) { + _strongDelegateForSetDelegateAPI = nil; + [_delegates removeAllObjects]; + } } } @@ -1243,15 +1273,6 @@ - (void)removeDevice:(MTRDevice *)device } #endif -- (void)setDeviceControllerDelegate:(id)delegate queue:(dispatch_queue_t)queue -{ - [self - asyncDispatchToMatterQueue:^() { - self->_deviceControllerDelegateBridge->setDelegate(self, delegate, queue); - } - errorHandler:nil]; -} - - (BOOL)setOperationalCertificateIssuer:(nullable id)operationalCertificateIssuer queue:(nullable dispatch_queue_t)queue { @@ -1751,6 +1772,158 @@ + (void)forceLocalhostAdvertisingOnly } #endif // DEBUG +#pragma mark - MTRDeviceControllerDelegate management + +// Note these are implemented in the base class so that XPC subclass can use it as well when it +- (void)setDeviceControllerDelegate:(id)delegate queue:(dispatch_queue_t)queue +{ + @synchronized(self) { + if (_strongDelegateForSetDelegateAPI) { + if (_strongDelegateForSetDelegateAPI == delegate) { + MTR_LOG("%@ setDeviceControllerDelegate: delegate %p is already set", self, delegate); + return; + } + + MTR_LOG("%@ setDeviceControllerDelegate: replacing %p with %p", self, _strongDelegateForSetDelegateAPI, delegate); + [self removeDeviceControllerDelegate:_strongDelegateForSetDelegateAPI]; + } + _strongDelegateForSetDelegateAPI = delegate; + [self addDeviceControllerDelegate:delegate queue:queue]; + } +} + +- (void)addDeviceControllerDelegate:(id)delegate queue:(dispatch_queue_t)queue +{ + @synchronized(self) { + MTRDeviceControllerDelegateInfo * newDelegateInfo = [[MTRDeviceControllerDelegateInfo alloc] initWithDelegate:delegate queue:queue]; + [_delegates addObject:newDelegateInfo]; + MTR_LOG("%@ addDeviceControllerDelegate: added %p total %lu", self, delegate, static_cast(_delegates.count)); + } +} + +- (void)removeDeviceControllerDelegate:(id)delegate +{ + @synchronized(self) { + if (_strongDelegateForSetDelegateAPI == delegate) { + _strongDelegateForSetDelegateAPI = nil; + } + + __block MTRDeviceControllerDelegateInfo * delegateInfoToRemove = nil; + [self _iterateDelegateInfoWithBlock:^(MTRDeviceControllerDelegateInfo * delegateInfo) { + if (delegateInfo.delegate == delegate) { + delegateInfoToRemove = delegateInfo; + } + }]; + + if (delegateInfoToRemove) { + [_delegates removeObject:delegateInfoToRemove]; + if (_strongDelegateForSetDelegateAPI == delegate) { + _strongDelegateForSetDelegateAPI = nil; + } + MTR_LOG("%@ removeDeviceControllerDelegate: removed %p remaining %lu", self, delegate, static_cast(_delegates.count)); + } else { + MTR_LOG("%@ removeDeviceControllerDelegate: delegate %p not found in %lu", self, delegate, static_cast(_delegates.count)); + } + } +} + +// Iterates the delegates, and remove delegate info objects if the delegate object has dealloc'ed +// Returns number of delegates called +- (NSUInteger)_iterateDelegateInfoWithBlock:(void (^_Nullable)(MTRDeviceControllerDelegateInfo * delegateInfo))block +{ + @synchronized(self) { + if (!_delegates.count) { + MTR_LOG("%@ No delegates to iterate", self); + return 0; + } + + // Opportunistically remove defunct delegate references on every iteration + NSMutableSet * delegatesToRemove = nil; + for (MTRDeviceControllerDelegateInfo * delegateInfo in _delegates) { + id strongDelegate = delegateInfo.delegate; + if (strongDelegate) { + if (block) { + block(delegateInfo); + } + } else { + if (!delegatesToRemove) { + delegatesToRemove = [NSMutableSet set]; + } + [delegatesToRemove addObject:delegateInfo]; + } + } + + if (delegatesToRemove.count) { + [_delegates minusSet:delegatesToRemove]; + MTR_LOG("%@ _iterateDelegatesWithBlock: removed %lu remaining %lu", self, static_cast(delegatesToRemove.count), static_cast(_delegates.count)); + } + + return _delegates.count; + } +} + +- (void)_callDelegatesWithBlock:(void (^_Nullable)(id delegate))block logString:(const char *)logString; +{ + NSUInteger delegatesCalled = [self _iterateDelegateInfoWithBlock:^(MTRDeviceControllerDelegateInfo * delegateInfo) { + id strongDelegate = delegateInfo.delegate; + dispatch_async(delegateInfo.queue, ^{ + block(strongDelegate); + }); + }]; + + MTR_LOG("%@ %lu delegates called for %s", self, static_cast(delegatesCalled), logString); +} + +#if DEBUG +- (NSUInteger)unitTestDelegateCount +{ + return [self _iterateDelegateInfoWithBlock:nil]; +} +#endif + +- (void)controller:(MTRDeviceController *)controller statusUpdate:(MTRCommissioningStatus)status +{ + [self _callDelegatesWithBlock:^(id delegate) { + if ([delegate respondsToSelector:@selector(controller:statusUpdate:)]) { + [delegate controller:controller statusUpdate:status]; + } + } logString:__PRETTY_FUNCTION__]; +} + +- (void)controller:(MTRDeviceController *)controller commissioningSessionEstablishmentDone:(NSError * _Nullable)error +{ + [self _callDelegatesWithBlock:^(id delegate) { + if ([delegate respondsToSelector:@selector(controller:commissioningSessionEstablishmentDone:)]) { + [delegate controller:controller commissioningSessionEstablishmentDone:error]; + } + } logString:__PRETTY_FUNCTION__]; +} + +- (void)controller:(MTRDeviceController *)controller + commissioningComplete:(NSError * _Nullable)error + nodeID:(NSNumber * _Nullable)nodeID + metrics:(MTRMetrics *)metrics +{ + [self _callDelegatesWithBlock:^(id delegate) { + if ([delegate respondsToSelector:@selector(controller:commissioningComplete:nodeID:metrics:)]) { + [delegate controller:controller commissioningComplete:error nodeID:nodeID metrics:metrics]; + } else if ([delegate respondsToSelector:@selector(controller:commissioningComplete:nodeID:)]) { + [delegate controller:controller commissioningComplete:error nodeID:nodeID]; + } else if ([delegate respondsToSelector:@selector(controller:commissioningComplete:)]) { + [delegate controller:controller commissioningComplete:error]; + } + } logString:__PRETTY_FUNCTION__]; +} + +- (void)controller:(MTRDeviceController *)controller readCommissioningInfo:(MTRProductIdentity *)info +{ + [self _callDelegatesWithBlock:^(id delegate) { + if ([delegate respondsToSelector:@selector(controller:readCommissioningInfo:)]) { + [delegate controller:controller readCommissioningInfo:info]; + } + } logString:__PRETTY_FUNCTION__]; +} + @end // TODO: This should not be in the superclass: either move to diff --git a/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.h b/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.h index 34c5ca8efad1da..3e83317d8fe780 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.h +++ b/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.h @@ -168,15 +168,7 @@ typedef void (^MTRDeviceConnectionCallback)(MTRBaseDevice * _Nullable device, NS - (void)preWarmCommissioningSession MTR_DEPRECATED("-[MTRDeviceControllerFactory preWarmCommissioningSession]", ios(16.4, 17.6), macos(13.3, 14.6), watchos(9.4, 10.6), tvos(16.4, 17.6)); -/** - * Set the Delegate for the device controller as well as the Queue on which the Delegate callbacks will be triggered - * - * @param[in] delegate The delegate the commissioning process should use - * - * @param[in] queue The queue on which the callbacks will be delivered - */ -- (void)setDeviceControllerDelegate:(id)delegate - queue:(dispatch_queue_t)queue MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)); +// Use super class implementation for -setDeviceControllerDelegate:queue: /** * Start scanning for commissionable devices. diff --git a/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm b/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm index 1edcb4928943a1..31de6111a328e3 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm @@ -717,6 +717,10 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams commissionerInitialized = YES; + // Set self as delegate, which fans out delegate callbacks to all added delegates + id selfDelegate = static_cast>(self); + self->_deviceControllerDelegateBridge->setDelegate(self, selfDelegate, _chipWorkQueue); + MTR_LOG("%@ startup succeeded for nodeID 0x%016llX", self, self->_cppCommissioner->GetNodeId()); }); @@ -1185,15 +1189,6 @@ - (void)removeDevice:(MTRDevice *)device } #endif -- (void)setDeviceControllerDelegate:(id)delegate queue:(dispatch_queue_t)queue -{ - [self - asyncDispatchToMatterQueue:^() { - self->_deviceControllerDelegateBridge->setDelegate(self, delegate, queue); - } - errorHandler:nil]; -} - - (BOOL)setOperationalCertificateIssuer:(nullable id)operationalCertificateIssuer queue:(nullable dispatch_queue_t)queue { diff --git a/src/darwin/Framework/CHIP/MTRError_Internal.h b/src/darwin/Framework/CHIP/MTRError_Internal.h index af19f4888ff050..c79cc17d95f198 100644 --- a/src/darwin/Framework/CHIP/MTRError_Internal.h +++ b/src/darwin/Framework/CHIP/MTRError_Internal.h @@ -26,10 +26,6 @@ NS_ASSUME_NONNULL_BEGIN -#ifndef YES_NO -#define YES_NO(x) ((x) ? @"YES" : @"NO") -#endif - MTR_DIRECT_MEMBERS @interface MTRError : NSObject + (NSError *)errorWithCode:(MTRErrorCode)code; diff --git a/src/darwin/Framework/CHIPTests/MTRPairingTests.m b/src/darwin/Framework/CHIPTests/MTRPairingTests.m index cd1802dff3dd47..4e597961603ee9 100644 --- a/src/darwin/Framework/CHIPTests/MTRPairingTests.m +++ b/src/darwin/Framework/CHIPTests/MTRPairingTests.m @@ -18,9 +18,11 @@ // module headers #import +#import "MTRDefines_Internal.h" #import "MTRErrorTestUtils.h" #import "MTRTestCase+ServerAppRunner.h" #import "MTRTestCase.h" +#import "MTRTestDeclarations.h" #import "MTRTestKeys.h" #import "MTRTestStorage.h" @@ -131,6 +133,42 @@ - (void)controller:(MTRDeviceController *)controller commissioningComplete:(NSEr @end +@interface MTRPairingTestMonitoringControllerDelegate : NSObject +@property (atomic, readwrite) BOOL statusUpdateCalled; +@property (atomic, readwrite) BOOL commissioningSessionEstablishmentDoneCalled; +@property (atomic, readwrite) BOOL commissioningCompleteCalled; +@property (atomic, readwrite) BOOL readCommissioningInfoCalled; +@end + +@implementation MTRPairingTestMonitoringControllerDelegate +- (NSString *)description +{ + return [NSString stringWithFormat:@"", self, YES_NO(_statusUpdateCalled), YES_NO(_commissioningSessionEstablishmentDoneCalled), YES_NO(_commissioningCompleteCalled), YES_NO(_readCommissioningInfoCalled)]; +} +- (void)controller:(MTRDeviceController *)controller statusUpdate:(MTRCommissioningStatus)status +{ + self.statusUpdateCalled = YES; +} + +- (void)controller:(MTRDeviceController *)controller commissioningSessionEstablishmentDone:(NSError * _Nullable)error +{ + self.commissioningSessionEstablishmentDoneCalled = YES; +} + +- (void)controller:(MTRDeviceController *)controller + commissioningComplete:(NSError * _Nullable)error + nodeID:(NSNumber * _Nullable)nodeID + metrics:(MTRMetrics *)metrics +{ + self.commissioningCompleteCalled = YES; +} + +- (void)controller:(MTRDeviceController *)controller readCommissioningInfo:(MTRProductIdentity *)info +{ + self.readCommissioningInfoCalled = YES; +} +@end + @interface MTRPairingTests : MTRTestCase @property (nullable) MTRPairingTestControllerDelegate * controllerDelegate; @end @@ -219,6 +257,19 @@ - (void)doPairingTestWithAttestationDelegate:(id)a [sController setDeviceControllerDelegate:controllerDelegate queue:callbackQueue]; self.controllerDelegate = controllerDelegate; + // Test that a monitoring delegate works + __auto_type * monitoringControllerDelegate = [[MTRPairingTestMonitoringControllerDelegate alloc] init]; + [sController addDeviceControllerDelegate:monitoringControllerDelegate queue:callbackQueue]; + XCTAssertEqual([sController unitTestDelegateCount], 2); + + // Test that the addDeviceControllerDelegate delegate is held weakly by the controller + @autoreleasepool { + __auto_type * monitoringControllerDelegate = [[MTRPairingTestMonitoringControllerDelegate alloc] init]; + [sController addDeviceControllerDelegate:monitoringControllerDelegate queue:callbackQueue]; + XCTAssertEqual([sController unitTestDelegateCount], 3); + } + XCTAssertEqual([sController unitTestDelegateCount], 2); + NSError * error; __auto_type * payload = [MTRSetupPayload setupPayloadWithOnboardingPayload:kOnboardingPayload error:&error]; XCTAssertNotNil(payload); @@ -229,6 +280,13 @@ - (void)doPairingTestWithAttestationDelegate:(id)a [self waitForExpectations:@[ expectation ] timeout:kPairingTimeoutInSeconds]; XCTAssertNil(controllerDelegate.commissioningCompleteError); + + // Test that the monitoring delegate got all the callbacks + XCTAssertTrue(monitoringControllerDelegate.statusUpdateCalled); + XCTAssertTrue(monitoringControllerDelegate.commissioningSessionEstablishmentDoneCalled); + XCTAssertTrue(monitoringControllerDelegate.commissioningCompleteCalled); + XCTAssertTrue(monitoringControllerDelegate.readCommissioningInfoCalled); + [sController removeDeviceControllerDelegate:monitoringControllerDelegate]; } - (void)test001_PairWithoutAttestationDelegate diff --git a/src/darwin/Framework/CHIPTests/TestHelpers/MTRTestDeclarations.h b/src/darwin/Framework/CHIPTests/TestHelpers/MTRTestDeclarations.h index 46d6c61e950f2d..22998eb4496216 100644 --- a/src/darwin/Framework/CHIPTests/TestHelpers/MTRTestDeclarations.h +++ b/src/darwin/Framework/CHIPTests/TestHelpers/MTRTestDeclarations.h @@ -18,6 +18,9 @@ #import #import +// For MTRDeviceDataValueDictionary: +#import "MTRDevice_Internal.h" + NS_ASSUME_NONNULL_BEGIN #pragma mark - Declarations for internal methods @@ -55,6 +58,7 @@ NS_ASSUME_NONNULL_BEGIN #ifdef DEBUG @interface MTRDeviceController (TestDebug) - (NSDictionary *)unitTestGetDeviceAttributeCounts; +- (NSUInteger)unitTestDelegateCount; @end @interface MTRBaseDevice (TestDebug) From 86e1974ff9acca4ab5a078c47cd498b7fb955b41 Mon Sep 17 00:00:00 2001 From: Jeff Tung <100387939+jtung-apple@users.noreply.github.com> Date: Mon, 9 Sep 2024 18:59:46 -0700 Subject: [PATCH 13/50] [Darwin] Remove Matter framework main queue usage (#35492) --- src/darwin/Framework/CHIP/MTRDeviceController.mm | 2 +- src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm | 2 +- src/darwin/Framework/CHIP/MTRDeviceController_XPC.mm | 4 ++-- src/darwin/Framework/CHIP/MTRDevice_Concrete.mm | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 9dc9f5a147db81..2029097645a89b 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -845,7 +845,7 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams // // Note that this is just an optimization to avoid throwing the information away and immediately // re-reading it from storage. - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (kSecondsToWaitBeforeAPIClientRetainsMTRDevice * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (kSecondsToWaitBeforeAPIClientRetainsMTRDevice * NSEC_PER_SEC)), self.chipWorkQueue, ^{ MTR_LOG("%@ un-retain devices loaded at startup %lu", self, static_cast(deviceList.count)); }); }]; diff --git a/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm b/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm index 31de6111a328e3..c8f8950579b350 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm @@ -761,7 +761,7 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams // // Note that this is just an optimization to avoid throwing the information away and immediately // re-reading it from storage. - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (kSecondsToWaitBeforeAPIClientRetainsMTRDevice * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (kSecondsToWaitBeforeAPIClientRetainsMTRDevice * NSEC_PER_SEC)), self.chipWorkQueue, ^{ MTR_LOG("%@ un-retain devices loaded at startup %lu", self, static_cast(deviceList.count)); }); }]; diff --git a/src/darwin/Framework/CHIP/MTRDeviceController_XPC.mm b/src/darwin/Framework/CHIP/MTRDeviceController_XPC.mm index 5b6dcf93f586f8..7ca9fde2099e03 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController_XPC.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController_XPC.mm @@ -115,7 +115,7 @@ - (void)_startXPCConnectionRetry self.xpcRetryTimeInterval = 0.5; mtr_weakify(self); - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (self.xpcRetryTimeInterval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (self.xpcRetryTimeInterval * NSEC_PER_SEC)), self.chipWorkQueue, ^{ mtr_strongify(self); [self _xpcConnectionRetry]; }); @@ -135,7 +135,7 @@ - (void)_xpcConnectionRetry self.xpcRetryTimeInterval = MIN(60.0, self.xpcRetryTimeInterval); mtr_weakify(self); - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(self.xpcRetryTimeInterval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(self.xpcRetryTimeInterval * NSEC_PER_SEC)), self.chipWorkQueue, ^{ mtr_strongify(self); [self _xpcConnectionRetry]; }); diff --git a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm index 5bf35f742c1e38..055c8a31ac45c5 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm @@ -1165,7 +1165,7 @@ - (void)_scheduleSubscriptionPoolWork:(dispatch_block_t)workBlock inNanoseconds: } // Wait the required amount of time, then put it in the subscription pool to wait additionally for a spot, if needed - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, inNanoseconds), dispatch_get_main_queue(), ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, inNanoseconds), self.queue, ^{ // In the case where a resubscription triggering event happened and already established, running the work block should result in a no-op MTRAsyncWorkItem * workItem = [[MTRAsyncWorkItem alloc] initWithQueue:self.queue]; [workItem setReadyHandler:^(id _Nonnull context, NSInteger retryCount, MTRAsyncWorkCompletionBlock _Nonnull completion) { From 7f789393d7186cb3551445c45718ea6917146995 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Mon, 9 Sep 2024 22:11:56 -0400 Subject: [PATCH 14/50] Allow passing in a `Path change listener` to ember write functions (#35455) * Cleaner usage: no need of a separate function that is used in one place only * Attempt an API update * Fix typos in the Accessors src * Fix typo and regen * More fixes on accessors * Update signature for emAfWriteAttributeExternal * Add a comment about all the checks being vague * Update src/app/util/af-types.h Co-authored-by: Boris Zbarsky * Update src/app/util/af-types.h Co-authored-by: Boris Zbarsky * Update src/app/util/attribute-storage.cpp Co-authored-by: Boris Zbarsky * Update src/app/zap-templates/templates/app/attributes/Accessors-src.zapt Co-authored-by: Boris Zbarsky * Update src/app/util/mock/CodegenEmberMocks.cpp Co-authored-by: Boris Zbarsky * Update src/app/zap-templates/templates/app/attributes/Accessors-src.zapt Co-authored-by: Boris Zbarsky * Update src/app/zap-templates/templates/app/attributes/Accessors-src.zapt Co-authored-by: Boris Zbarsky * zap regen and restyle * Update src/app/zap-templates/templates/app/attributes/Accessors-src.zapt Co-authored-by: Boris Zbarsky * Update src/app/util/attribute-table.cpp Co-authored-by: Boris Zbarsky * Update src/app/util/attribute-storage.cpp Co-authored-by: Boris Zbarsky * Update src/app/util/attribute-storage.cpp Co-authored-by: Boris Zbarsky * Update src/app/util/attribute-table.cpp Co-authored-by: Boris Zbarsky * Update src/app/util/attribute-table.cpp Co-authored-by: Boris Zbarsky * Update src/app/util/attribute-storage.cpp Co-authored-by: Boris Zbarsky * Update src/app/util/attribute-table.h Co-authored-by: Boris Zbarsky * Rename ChangedPathListener to AttributesChangedListener * Remove chip:: and chip::app * Update constructors of AttributePathParams and add nodiscard according to the linter to never call const methods without considering their return value * Restyled by clang-format * Remove auto-inserted include * Update again and zap regen: removed extra namespace prefixes in accessors.h/cpp * Add comment about uint8_t non-const usage... * Another rename given that the listener is now an attributes and not a path listener * Update src/app/util/attribute-table.h Co-authored-by: Tennessee Carmel-Veilleux * Comment update to talk more about AttributesChangedListener * Restyle --------- Co-authored-by: Andrei Litvin Co-authored-by: Boris Zbarsky Co-authored-by: Restyled.io Co-authored-by: Tennessee Carmel-Veilleux --- src/app/AttributePathParams.h | 27 +- .../CodegenDataModelProvider_Write.cpp | 4 +- .../tests/EmberReadWriteOverride.cpp | 11 +- src/app/reporting/Engine.cpp | 2 +- src/app/reporting/Engine.h | 2 +- src/app/reporting/reporting.cpp | 42 +- src/app/util/af-types.h | 11 + src/app/util/attribute-storage.cpp | 98 +- src/app/util/attribute-storage.h | 21 + src/app/util/attribute-table-detail.h | 10 +- src/app/util/attribute-table.cpp | 81 +- src/app/util/attribute-table.h | 62 +- .../util/ember-compatibility-functions.cpp | 4 +- src/app/util/mock/CodegenEmberMocks.cpp | 7 +- .../app/attributes/Accessors-src.zapt | 46 +- .../templates/app/attributes/Accessors.zapt | 14 +- .../CHIP/ServerEndpoint/MTRIMDispatch.mm | 5 +- .../zap-generated/attributes/Accessors.cpp | 10145 +++++++++------- .../zap-generated/attributes/Accessors.h | 6759 +++++----- 19 files changed, 9092 insertions(+), 8259 deletions(-) diff --git a/src/app/AttributePathParams.h b/src/app/AttributePathParams.h index ff1de58cbe91b0..dc3b71236d25c1 100644 --- a/src/app/AttributePathParams.h +++ b/src/app/AttributePathParams.h @@ -30,6 +30,12 @@ class ReadClient; #endif // CHIP_CONFIG_ENABLE_READ_CLIENT struct AttributePathParams { + AttributePathParams() = default; + + explicit AttributePathParams(EndpointId aEndpointId) : + AttributePathParams(aEndpointId, kInvalidClusterId, kInvalidAttributeId, kInvalidListIndex) + {} + // // TODO: (Issue #10596) Need to ensure that we do not encode the NodeId over the wire // if it is either not 'set', or is set to a value that matches accessing fabric @@ -50,9 +56,10 @@ struct AttributePathParams mClusterId(aClusterId), mAttributeId(aAttributeId), mEndpointId(aEndpointId), mListIndex(aListIndex) {} - AttributePathParams() {} - - bool IsWildcardPath() const { return HasWildcardEndpointId() || HasWildcardClusterId() || HasWildcardAttributeId(); } + [[nodiscard]] bool IsWildcardPath() const + { + return HasWildcardEndpointId() || HasWildcardClusterId() || HasWildcardAttributeId(); + } bool operator==(const AttributePathParams & aOther) const { @@ -66,12 +73,12 @@ struct AttributePathParams * be wildcard. This does not verify that the attribute being targeted is actually of list type when the list index is not * wildcard. */ - bool IsValidAttributePath() const { return HasWildcardListIndex() || !HasWildcardAttributeId(); } + [[nodiscard]] bool IsValidAttributePath() const { return HasWildcardListIndex() || !HasWildcardAttributeId(); } - inline bool HasWildcardEndpointId() const { return mEndpointId == kInvalidEndpointId; } - inline bool HasWildcardClusterId() const { return mClusterId == kInvalidClusterId; } - inline bool HasWildcardAttributeId() const { return mAttributeId == kInvalidAttributeId; } - inline bool HasWildcardListIndex() const { return mListIndex == kInvalidListIndex; } + [[nodiscard]] inline bool HasWildcardEndpointId() const { return mEndpointId == kInvalidEndpointId; } + [[nodiscard]] inline bool HasWildcardClusterId() const { return mClusterId == kInvalidClusterId; } + [[nodiscard]] inline bool HasWildcardAttributeId() const { return mAttributeId == kInvalidAttributeId; } + [[nodiscard]] inline bool HasWildcardListIndex() const { return mListIndex == kInvalidListIndex; } inline void SetWildcardEndpointId() { mEndpointId = kInvalidEndpointId; } inline void SetWildcardClusterId() { mClusterId = kInvalidClusterId; } inline void SetWildcardAttributeId() @@ -80,7 +87,7 @@ struct AttributePathParams mListIndex = kInvalidListIndex; } - bool IsAttributePathSupersetOf(const AttributePathParams & other) const + [[nodiscard]] bool IsAttributePathSupersetOf(const AttributePathParams & other) const { VerifyOrReturnError(HasWildcardEndpointId() || mEndpointId == other.mEndpointId, false); VerifyOrReturnError(HasWildcardClusterId() || mClusterId == other.mClusterId, false); @@ -90,7 +97,7 @@ struct AttributePathParams return true; } - bool IsAttributePathSupersetOf(const ConcreteAttributePath & other) const + [[nodiscard]] bool IsAttributePathSupersetOf(const ConcreteAttributePath & other) const { VerifyOrReturnError(HasWildcardEndpointId() || mEndpointId == other.mEndpointId, false); VerifyOrReturnError(HasWildcardClusterId() || mClusterId == other.mClusterId, false); diff --git a/src/app/codegen-data-model-provider/CodegenDataModelProvider_Write.cpp b/src/app/codegen-data-model-provider/CodegenDataModelProvider_Write.cpp index d5f50454b18085..ffb44eb492dc5a 100644 --- a/src/app/codegen-data-model-provider/CodegenDataModelProvider_Write.cpp +++ b/src/app/codegen-data-model-provider/CodegenDataModelProvider_Write.cpp @@ -386,8 +386,8 @@ DataModel::ActionReturnStatus CodegenDataModelProvider::WriteAttribute(const Dat } else { - status = emAfWriteAttributeExternal(request.path.mEndpointId, request.path.mClusterId, request.path.mAttributeId, - dataBuffer.data(), (*attributeMetadata)->attributeType); + status = + emAfWriteAttributeExternal(request.path, EmberAfWriteDataInput(dataBuffer.data(), (*attributeMetadata)->attributeType)); } if (status != Protocols::InteractionModel::Status::Success) diff --git a/src/app/codegen-data-model-provider/tests/EmberReadWriteOverride.cpp b/src/app/codegen-data-model-provider/tests/EmberReadWriteOverride.cpp index d3c3b9975f8176..ac918049b860f4 100644 --- a/src/app/codegen-data-model-provider/tests/EmberReadWriteOverride.cpp +++ b/src/app/codegen-data-model-provider/tests/EmberReadWriteOverride.cpp @@ -17,6 +17,7 @@ #include "EmberReadWriteOverride.h" #include +#include #include #include @@ -100,8 +101,7 @@ Status emAfReadOrWriteAttribute(const EmberAfAttributeSearchRecord * attRecord, return Status::Success; } -Status emAfWriteAttributeExternal(chip::EndpointId endpoint, chip::ClusterId cluster, chip::AttributeId attributeID, - uint8_t * dataPtr, EmberAfAttributeType dataType) +Status emAfWriteAttributeExternal(const chip::app::ConcreteAttributePath & path, const EmberAfWriteDataInput & input) { if (gEmberStatusCode != Status::Success) { @@ -110,13 +110,13 @@ Status emAfWriteAttributeExternal(chip::EndpointId endpoint, chip::ClusterId clu // ember here deduces the size of dataPtr. For testing however, we KNOW we read // out of the ember IO buffer, so we try to use that - VerifyOrDie(dataPtr == chip::app::Compatibility::Internal::gEmberAttributeIOBufferSpan.data()); + VerifyOrDie(input.dataPtr == chip::app::Compatibility::Internal::gEmberAttributeIOBufferSpan.data()); // In theory this should do type validation and sizes. This is NOT done for testing. // copy over as much data as possible // NOTE: we do NOT use (*metadata)->size since it is unclear if our mocks set that correctly size_t len = std::min(sizeof(gEmberIoBuffer), chip::app::Compatibility::Internal::gEmberAttributeIOBufferSpan.size()); - memcpy(gEmberIoBuffer, dataPtr, len); + memcpy(gEmberIoBuffer, input.dataPtr, len); gEmberIoBufferFill = len; return Status::Success; @@ -125,5 +125,6 @@ Status emAfWriteAttributeExternal(chip::EndpointId endpoint, chip::ClusterId clu Status emberAfWriteAttribute(chip::EndpointId endpoint, chip::ClusterId cluster, chip::AttributeId attributeID, uint8_t * dataPtr, EmberAfAttributeType dataType) { - return emAfWriteAttributeExternal(endpoint, cluster, attributeID, dataPtr, dataType); + return emAfWriteAttributeExternal(chip::app::ConcreteAttributePath(endpoint, cluster, attributeID), + EmberAfWriteDataInput(dataPtr, dataType)); } diff --git a/src/app/reporting/Engine.cpp b/src/app/reporting/Engine.cpp index 2dfbec1fdf5d6d..072aa100e10312 100644 --- a/src/app/reporting/Engine.cpp +++ b/src/app/reporting/Engine.cpp @@ -855,7 +855,7 @@ CHIP_ERROR Engine::InsertPathIntoDirtySet(const AttributePathParams & aAttribute return CHIP_NO_ERROR; } -CHIP_ERROR Engine::SetDirty(AttributePathParams & aAttributePath) +CHIP_ERROR Engine::SetDirty(const AttributePathParams & aAttributePath) { BumpDirtySetGeneration(); diff --git a/src/app/reporting/Engine.h b/src/app/reporting/Engine.h index 070db9947b5f1c..cff36ff41ccb5b 100644 --- a/src/app/reporting/Engine.h +++ b/src/app/reporting/Engine.h @@ -93,7 +93,7 @@ class Engine /** * Application marks mutated change path and would be sent out in later report. */ - CHIP_ERROR SetDirty(AttributePathParams & aAttributePathParams); + CHIP_ERROR SetDirty(const AttributePathParams & aAttributePathParams); /** * @brief diff --git a/src/app/reporting/reporting.cpp b/src/app/reporting/reporting.cpp index 0ee0ca954aaf6c..10f58f575612a4 100644 --- a/src/app/reporting/reporting.cpp +++ b/src/app/reporting/reporting.cpp @@ -24,44 +24,23 @@ using namespace chip; using namespace chip::app; -namespace { - -void IncreaseClusterDataVersion(const ConcreteClusterPath & aConcreteClusterPath) -{ - DataVersion * version = emberAfDataVersionStorage(aConcreteClusterPath); - if (version == nullptr) - { - ChipLogError(DataManagement, "Endpoint %x, Cluster " ChipLogFormatMEI " not found in IncreaseClusterDataVersion!", - aConcreteClusterPath.mEndpointId, ChipLogValueMEI(aConcreteClusterPath.mClusterId)); - } - else - { - (*(version))++; - ChipLogDetail(DataManagement, "Endpoint %x, Cluster " ChipLogFormatMEI " update version to %" PRIx32, - aConcreteClusterPath.mEndpointId, ChipLogValueMEI(aConcreteClusterPath.mClusterId), *(version)); - } -} - -} // namespace - void MatterReportingAttributeChangeCallback(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId) { // Attribute writes have asserted this already, but this assert should catch // applications notifying about changes from their end. assertChipStackLockedByCurrentThread(); - AttributePathParams info; - info.mClusterId = clusterId; - info.mAttributeId = attributeId; - info.mEndpointId = endpoint; - - IncreaseClusterDataVersion(ConcreteClusterPath(endpoint, clusterId)); - InteractionModelEngine::GetInstance()->GetReportingEngine().SetDirty(info); + emberAfAttributeChanged(endpoint, clusterId, attributeId, emberAfGlobalInteractionModelAttributesChangedListener()); } void MatterReportingAttributeChangeCallback(const ConcreteAttributePath & aPath) { - return MatterReportingAttributeChangeCallback(aPath.mEndpointId, aPath.mClusterId, aPath.mAttributeId); + // Attribute writes have asserted this already, but this assert should catch + // applications notifying about changes from their end. + assertChipStackLockedByCurrentThread(); + + emberAfAttributeChanged(aPath.mEndpointId, aPath.mClusterId, aPath.mAttributeId, + emberAfGlobalInteractionModelAttributesChangedListener()); } void MatterReportingAttributeChangeCallback(EndpointId endpoint) @@ -70,10 +49,5 @@ void MatterReportingAttributeChangeCallback(EndpointId endpoint) // applications notifying about changes from their end. assertChipStackLockedByCurrentThread(); - AttributePathParams info; - info.mEndpointId = endpoint; - - // We are adding or enabling a whole endpoint, in this case, we do not touch the cluster data version. - - InteractionModelEngine::GetInstance()->GetReportingEngine().SetDirty(info); + emberAfEndpointChanged(endpoint, emberAfGlobalInteractionModelAttributesChangedListener()); } diff --git a/src/app/util/af-types.h b/src/app/util/af-types.h index bd5b5ed68ce4bb..04275a2515c23c 100644 --- a/src/app/util/af-types.h +++ b/src/app/util/af-types.h @@ -32,6 +32,7 @@ #include // EmberAfAttributeMetadata +#include #include #include #include @@ -314,5 +315,15 @@ enum class MarkAttributeDirty kYes, }; +/// Notification object of a specific path being changed +class AttributesChangedListener +{ +public: + virtual ~AttributesChangedListener() = default; + + /// Called when the set of attributes identified by AttributePathParams (which may contain wildcards) is to be considered dirty. + virtual void MarkDirty(const AttributePathParams & path) = 0; +}; + } // namespace app } // namespace chip diff --git a/src/app/util/attribute-storage.cpp b/src/app/util/attribute-storage.cpp index b9d54fceb85fb5..7247031b071042 100644 --- a/src/app/util/attribute-storage.cpp +++ b/src/app/util/attribute-storage.cpp @@ -64,7 +64,7 @@ uint8_t attributeData[ACTUAL_ATTRIBUTE_SIZE]; // ----- internal-only methods, not part of the external API ----- // Loads the attributes from built-in default and storage. -static void emAfLoadAttributeDefaults(chip::EndpointId endpoint, chip::Optional = chip::NullOptional); +static void emAfLoadAttributeDefaults(EndpointId endpoint, Optional = NullOptional); static bool emAfMatchCluster(const EmberAfCluster * cluster, const EmberAfAttributeSearchRecord * attRecord); static bool emAfMatchAttribute(const EmberAfCluster * cluster, const EmberAfAttributeMetadata * am, @@ -80,7 +80,7 @@ static uint8_t emberAfClusterCountByIndex(uint16_t endpointIndex, bool server); // Check whether there is an endpoint defined with the given endpoint id that is // enabled. -static bool emberAfEndpointIsEnabled(chip::EndpointId endpoint); +static bool emberAfEndpointIsEnabled(EndpointId endpoint); namespace { @@ -116,12 +116,12 @@ GENERATED_FUNCTION_ARRAYS #endif #ifdef GENERATED_COMMANDS -constexpr const chip::CommandId generatedCommands[] = GENERATED_COMMANDS; +constexpr const CommandId generatedCommands[] = GENERATED_COMMANDS; #define ZAP_GENERATED_COMMANDS_INDEX(index) (&generatedCommands[index]) #endif // GENERATED_COMMANDS #if (defined(GENERATED_EVENTS) && (GENERATED_EVENT_COUNT > 0)) -constexpr const chip::EventId generatedEvents[] = GENERATED_EVENTS; +constexpr const EventId generatedEvents[] = GENERATED_EVENTS; #define ZAP_GENERATED_EVENTS_INDEX(index) (&generatedEvents[index]) #endif // GENERATED_EVENTS @@ -262,8 +262,8 @@ uint16_t emberAfGetDynamicIndexFromEndpoint(EndpointId id) } CHIP_ERROR emberAfSetDynamicEndpoint(uint16_t index, EndpointId id, const EmberAfEndpointType * ep, - const chip::Span & dataVersionStorage, - chip::Span deviceTypeList, EndpointId parentEndpointId) + const Span & dataVersionStorage, Span deviceTypeList, + EndpointId parentEndpointId) { auto realIndex = index + FIXED_ENDPOINT_COUNT; @@ -351,7 +351,7 @@ bool emberAfEndpointIndexIsEnabled(uint16_t index) } // This function is used to call the per-cluster attribute changed callback -void emAfClusterAttributeChangedCallback(const app::ConcreteAttributePath & attributePath) +void emAfClusterAttributeChangedCallback(const ConcreteAttributePath & attributePath) { const EmberAfCluster * cluster = emberAfFindServerCluster(attributePath.mEndpointId, attributePath.mClusterId); if (cluster != nullptr) @@ -365,7 +365,7 @@ void emAfClusterAttributeChangedCallback(const app::ConcreteAttributePath & attr } // This function is used to call the per-cluster pre-attribute changed callback -Status emAfClusterPreAttributeChangedCallback(const app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, +Status emAfClusterPreAttributeChangedCallback(const ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value) { const EmberAfCluster * cluster = emberAfFindServerCluster(attributePath.mEndpointId, attributePath.mClusterId); @@ -686,7 +686,7 @@ Status emAfReadOrWriteAttribute(const EmberAfAttributeSearchRecord * attRecord, return Status::UnsupportedEndpoint; // Sorry, endpoint was not found. } -const EmberAfEndpointType * emberAfFindEndpointType(chip::EndpointId endpointId) +const EmberAfEndpointType * emberAfFindEndpointType(EndpointId endpointId) { uint16_t ep = emberAfIndexFromEndpoint(endpointId); if (ep == kEmberInvalidEndpointIndex) @@ -918,7 +918,7 @@ bool emberAfEndpointEnableDisable(EndpointId endpoint, bool enable) if (enable) { initializeEndpoint(&(emAfEndpoints[index])); - MatterReportingAttributeChangeCallback(endpoint); + emberAfEndpointChanged(endpoint, emberAfGlobalInteractionModelAttributesChangedListener()); } else { @@ -929,8 +929,8 @@ bool emberAfEndpointEnableDisable(EndpointId endpoint, bool enable) EndpointId parentEndpointId = emberAfParentEndpointFromIndex(index); while (parentEndpointId != kInvalidEndpointId) { - MatterReportingAttributeChangeCallback(parentEndpointId, app::Clusters::Descriptor::Id, - app::Clusters::Descriptor::Attributes::PartsList::Id); + emberAfAttributeChanged(parentEndpointId, Clusters::Descriptor::Id, Clusters::Descriptor::Attributes::PartsList::Id, + emberAfGlobalInteractionModelAttributesChangedListener()); uint16_t parentIndex = emberAfIndexFromEndpoint(parentEndpointId); if (parentIndex == kEmberInvalidEndpointIndex) { @@ -940,8 +940,8 @@ bool emberAfEndpointEnableDisable(EndpointId endpoint, bool enable) parentEndpointId = emberAfParentEndpointFromIndex(parentIndex); } - MatterReportingAttributeChangeCallback(/* endpoint = */ 0, app::Clusters::Descriptor::Id, - app::Clusters::Descriptor::Attributes::PartsList::Id); + emberAfAttributeChanged(/* endpoint = */ 0, Clusters::Descriptor::Id, Clusters::Descriptor::Attributes::PartsList::Id, + emberAfGlobalInteractionModelAttributesChangedListener()); } return true; @@ -1005,10 +1005,10 @@ uint8_t emberAfGetClusterCountForEndpoint(EndpointId endpoint) return emAfEndpoints[index].endpointType->clusterCount; } -chip::Span emberAfDeviceTypeListFromEndpoint(chip::EndpointId endpoint, CHIP_ERROR & err) +Span emberAfDeviceTypeListFromEndpoint(EndpointId endpoint, CHIP_ERROR & err) { uint16_t endpointIndex = emberAfIndexFromEndpoint(endpoint); - chip::Span ret; + Span ret; if (endpointIndex == 0xFFFF) { @@ -1136,14 +1136,14 @@ void emAfLoadAttributeDefaults(EndpointId endpoint, Optional clusterI uint8_t * ptr; uint16_t epCount = emberAfEndpointCount(); uint8_t attrData[ATTRIBUTE_LARGEST]; - auto * attrStorage = app::GetAttributePersistenceProvider(); + auto * attrStorage = GetAttributePersistenceProvider(); // Don't check whether we actually have an attrStorage here, because it's OK // to have one if none of our attributes have NVM storage. for (ep = 0; ep < epCount; ep++) { EmberAfDefinedEndpoint * de; - if (endpoint != chip::kInvalidEndpointId) + if (endpoint != kInvalidEndpointId) { ep = emberAfIndexFromEndpoint(endpoint); if (ep == kEmberInvalidEndpointIndex) @@ -1182,8 +1182,8 @@ void emAfLoadAttributeDefaults(EndpointId endpoint, Optional clusterI { VerifyOrDieWithMsg(attrStorage != nullptr, Zcl, "Attribute persistence needs a persistence provider"); MutableByteSpan bytes(attrData); - CHIP_ERROR err = attrStorage->ReadValue( - app::ConcreteAttributePath(de->endpoint, cluster->clusterId, am->attributeId), am, bytes); + CHIP_ERROR err = + attrStorage->ReadValue(ConcreteAttributePath(de->endpoint, cluster->clusterId, am->attributeId), am, bytes); if (err == CHIP_NO_ERROR) { ptr = attrData; @@ -1264,7 +1264,7 @@ void emAfLoadAttributeDefaults(EndpointId endpoint, Optional clusterI } } } - if (endpoint != chip::kInvalidEndpointId) + if (endpoint != kInvalidEndpointId) { break; } @@ -1306,10 +1306,10 @@ void emAfSaveAttributeToStorageIfNeeded(uint8_t * data, EndpointId endpoint, Clu dataSize = metadata->size; } - auto * attrStorage = app::GetAttributePersistenceProvider(); + auto * attrStorage = GetAttributePersistenceProvider(); if (attrStorage) { - attrStorage->WriteValue(app::ConcreteAttributePath(endpoint, clusterId, metadata->attributeId), ByteSpan(data, dataSize)); + attrStorage->WriteValue(ConcreteAttributePath(endpoint, clusterId, metadata->attributeId), ByteSpan(data, dataSize)); } else { @@ -1403,15 +1403,14 @@ bool IsTreeCompositionForEndpoint(EndpointId endpoint) } // namespace app } // namespace chip -uint16_t emberAfGetServerAttributeCount(chip::EndpointId endpoint, chip::ClusterId cluster) +uint16_t emberAfGetServerAttributeCount(EndpointId endpoint, ClusterId cluster) { const EmberAfCluster * clusterObj = emberAfFindServerCluster(endpoint, cluster); VerifyOrReturnError(clusterObj != nullptr, 0); return clusterObj->attributeCount; } -uint16_t emberAfGetServerAttributeIndexByAttributeId(chip::EndpointId endpoint, chip::ClusterId cluster, - chip::AttributeId attributeId) +uint16_t emberAfGetServerAttributeIndexByAttributeId(EndpointId endpoint, ClusterId cluster, AttributeId attributeId) { const EmberAfCluster * clusterObj = emberAfFindServerCluster(endpoint, cluster); VerifyOrReturnError(clusterObj != nullptr, UINT16_MAX); @@ -1436,7 +1435,7 @@ Optional emberAfGetServerAttributeIdByIndex(EndpointId endpoint, Cl return Optional(clusterObj->attributes[attributeIndex].attributeId); } -DataVersion * emberAfDataVersionStorage(const chip::app::ConcreteClusterPath & aConcreteClusterPath) +DataVersion * emberAfDataVersionStorage(const ConcreteClusterPath & aConcreteClusterPath) { uint16_t index = emberAfIndexFromEndpoint(aConcreteClusterPath.mEndpointId); if (index == kEmberInvalidEndpointIndex) @@ -1462,3 +1461,48 @@ DataVersion * emberAfDataVersionStorage(const chip::app::ConcreteClusterPath & a return ep.dataVersions + clusterIndex; } + +namespace { +class GlobalInteractionModelEngineChangedpathListener : public AttributesChangedListener +{ +public: + ~GlobalInteractionModelEngineChangedpathListener() = default; + + void MarkDirty(const AttributePathParams & path) override + { + InteractionModelEngine::GetInstance()->GetReportingEngine().SetDirty(path); + } +}; + +} // namespace + +AttributesChangedListener * emberAfGlobalInteractionModelAttributesChangedListener() +{ + static GlobalInteractionModelEngineChangedpathListener listener; + return &listener; +} + +void emberAfAttributeChanged(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId, + AttributesChangedListener * listener) +{ + // Increase cluster data path + DataVersion * version = emberAfDataVersionStorage(ConcreteClusterPath(endpoint, clusterId)); + if (version == nullptr) + { + ChipLogError(DataManagement, "Endpoint %x, Cluster " ChipLogFormatMEI " not found in IncreaseClusterDataVersion!", endpoint, + ChipLogValueMEI(clusterId)); + } + else + { + (*(version))++; + ChipLogDetail(DataManagement, "Endpoint %x, Cluster " ChipLogFormatMEI " update version to %" PRIx32, endpoint, + ChipLogValueMEI(clusterId), *(version)); + } + + listener->MarkDirty(AttributePathParams(endpoint, clusterId, attributeId)); +} + +void emberAfEndpointChanged(EndpointId endpoint, AttributesChangedListener * listener) +{ + listener->MarkDirty(AttributePathParams(endpoint)); +} diff --git a/src/app/util/attribute-storage.h b/src/app/util/attribute-storage.h index 005f109181360d..b45bfe43cff43e 100644 --- a/src/app/util/attribute-storage.h +++ b/src/app/util/attribute-storage.h @@ -284,6 +284,27 @@ chip::Span emberAfDeviceTypeListFromEndpoint(chip::Endp // CHIP_ERROR emberAfSetDeviceTypeList(chip::EndpointId endpoint, chip::Span deviceTypeList); +/// Returns a change listener that uses the global InteractionModelEngine +/// instance to report dirty paths +chip::app::AttributesChangedListener * emberAfGlobalInteractionModelAttributesChangedListener(); + +/// Mark the given attribute as having changed: +/// - increases the cluster data version for the given cluster +/// - uses `listener` to `MarkDirty` the given path. This is typically done to mark an +/// attribute as dirty within the matter attribute reporting engine, so that subscriptions +/// receive updated attribute values for a cluster. +/// +/// This is a convenience function to make it clear when a `emberAfDataVersionStorage` increase +/// and a `AttributesChangeListener::MarkDirty` always occur in lock-step. +void emberAfAttributeChanged(chip::EndpointId endpoint, chip::ClusterId clusterId, chip::AttributeId attributeId, + chip::app::AttributesChangedListener * listener); + +/// Mark attributes on the given endpoint as having changed. +/// +/// Schedules reporting engine to consider the endpoint dirty, however does NOT increase/alter +/// any cluster data versions. +void emberAfEndpointChanged(chip::EndpointId endpoint, chip::app::AttributesChangedListener * listener); + namespace chip { namespace app { diff --git a/src/app/util/attribute-table-detail.h b/src/app/util/attribute-table-detail.h index d755f9cd23cbac..06d5d400f5942f 100644 --- a/src/app/util/attribute-table-detail.h +++ b/src/app/util/attribute-table-detail.h @@ -17,9 +17,8 @@ #pragma once -#include -#include -#include +#include +#include /** * Write an attribute for a request arriving from external sources. @@ -27,6 +26,5 @@ * This will check attribute writeability and that * the provided data type matches the expected data type. */ -chip::Protocols::InteractionModel::Status emAfWriteAttributeExternal(chip::EndpointId endpoint, chip::ClusterId cluster, - chip::AttributeId attributeID, uint8_t * dataPtr, - EmberAfAttributeType dataType); +chip::Protocols::InteractionModel::Status emAfWriteAttributeExternal(const chip::app::ConcreteAttributePath & path, + const EmberAfWriteDataInput & input); diff --git a/src/app/util/attribute-table.cpp b/src/app/util/attribute-table.cpp index ab59e56016e544..0d68701b6389b4 100644 --- a/src/app/util/attribute-table.cpp +++ b/src/app/util/attribute-table.cpp @@ -159,28 +159,43 @@ int8_t emberAfCompareValues(const uint8_t * val1, const uint8_t * val2, uint16_t * the attribute * - Status::Success: if the attribute was found and successfully written */ -Status emAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId attributeID, uint8_t * data, - EmberAfAttributeType dataType, bool overrideReadOnlyAndDataType, MarkAttributeDirty markDirty); +Status emAfWriteAttribute(const ConcreteAttributePath & path, const EmberAfWriteDataInput & input, + bool overrideReadOnlyAndDataType); + } // anonymous namespace -Status emAfWriteAttributeExternal(EndpointId endpoint, ClusterId cluster, AttributeId attributeID, uint8_t * dataPtr, - EmberAfAttributeType dataType) +Protocols::InteractionModel::Status emAfWriteAttributeExternal(const ConcreteAttributePath & path, + const EmberAfWriteDataInput & input) { - return emAfWriteAttribute(endpoint, cluster, attributeID, dataPtr, dataType, false /* override read-only */, - MarkAttributeDirty::kIfChanged); + EmberAfWriteDataInput completeInput = input; + + if (completeInput.changeListener == nullptr) + { + completeInput.SetChangeListener(emberAfGlobalInteractionModelAttributesChangedListener()); + } + + return emAfWriteAttribute(path, completeInput, false /* overrideReadOnlyAndDataType */); } Status emberAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId attributeID, uint8_t * dataPtr, EmberAfAttributeType dataType) { - return emAfWriteAttribute(endpoint, cluster, attributeID, dataPtr, dataType, true /* override read-only */, - MarkAttributeDirty::kIfChanged); + + return emberAfWriteAttribute( + ConcreteAttributePath(endpoint, cluster, attributeID), + EmberAfWriteDataInput(dataPtr, dataType).SetChangeListener(emberAfGlobalInteractionModelAttributesChangedListener())); } -Status emberAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId attributeID, uint8_t * dataPtr, - EmberAfAttributeType dataType, MarkAttributeDirty markDirty) +Status emberAfWriteAttribute(const ConcreteAttributePath & path, const EmberAfWriteDataInput & input) { - return emAfWriteAttribute(endpoint, cluster, attributeID, dataPtr, dataType, true /* override read-only */, markDirty); + EmberAfWriteDataInput completeInput = input; + + if (completeInput.changeListener == nullptr) + { + completeInput.SetChangeListener(emberAfGlobalInteractionModelAttributesChangedListener()); + } + + return emAfWriteAttribute(path, completeInput, true /* overrideReadOnlyAndDataType */); } //------------------------------------------------------------------------------ @@ -312,14 +327,13 @@ Status AttributeValueIsChanging(EndpointId endpoint, ClusterId cluster, Attribut return Status::Success; } -Status emAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId attributeID, uint8_t * data, - EmberAfAttributeType dataType, bool overrideReadOnlyAndDataType, MarkAttributeDirty markDirty) +Status emAfWriteAttribute(const ConcreteAttributePath & path, const EmberAfWriteDataInput & input, bool overrideReadOnlyAndDataType) { const EmberAfAttributeMetadata * metadata = nullptr; EmberAfAttributeSearchRecord record; - record.endpoint = endpoint; - record.clusterId = cluster; - record.attributeId = attributeID; + record.endpoint = path.mEndpointId; + record.clusterId = path.mClusterId; + record.attributeId = path.mAttributeId; Status status = emAfReadOrWriteAttribute(&record, &metadata, nullptr, // buffer 0, // buffer size @@ -328,15 +342,15 @@ Status emAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId at // if we dont support that attribute if (metadata == nullptr) { - ChipLogProgress(Zcl, "%p ep %x clus " ChipLogFormatMEI " attr " ChipLogFormatMEI " not supported", "WRITE ERR: ", endpoint, - ChipLogValueMEI(cluster), ChipLogValueMEI(attributeID)); + ChipLogProgress(Zcl, "%p ep %x clus " ChipLogFormatMEI " attr " ChipLogFormatMEI " not supported", + "WRITE ERR: ", path.mEndpointId, ChipLogValueMEI(path.mClusterId), ChipLogValueMEI(path.mAttributeId)); return status; } // if the data type specified by the caller is incorrect if (!(overrideReadOnlyAndDataType)) { - if (dataType != metadata->attributeType) + if (input.dataType != metadata->attributeType) { ChipLogProgress(Zcl, "%p invalid data type", "WRITE ERR: "); return Status::InvalidDataType; @@ -380,12 +394,12 @@ Status emAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId at } bool isAttributeSigned = metadata->IsSignedIntegerAttribute(); - bool isOutOfRange = emberAfCompareValues(minBytes, data, dataLen, isAttributeSigned) == 1 || - emberAfCompareValues(maxBytes, data, dataLen, isAttributeSigned) == -1; + bool isOutOfRange = emberAfCompareValues(minBytes, input.dataPtr, dataLen, isAttributeSigned) == 1 || + emberAfCompareValues(maxBytes, input.dataPtr, dataLen, isAttributeSigned) == -1; if (isOutOfRange && // null value is always in-range for a nullable attribute. - (!metadata->IsNullable() || !IsNullValue(data, dataLen, isAttributeSigned))) + (!metadata->IsNullable() || !IsNullValue(input.dataPtr, dataLen, isAttributeSigned))) { return Status::ConstraintError; } @@ -393,7 +407,8 @@ Status emAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId at // Check whether anything is actually changing, before we do any work here. bool valueChanging; - Status imStatus = AttributeValueIsChanging(endpoint, cluster, attributeID, metadata, data, &valueChanging); + Status imStatus = + AttributeValueIsChanging(path.mEndpointId, path.mClusterId, path.mAttributeId, metadata, input.dataPtr, &valueChanging); if (imStatus != Status::Success) { return imStatus; @@ -402,19 +417,19 @@ Status emAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId at if (!valueChanging) { // Just do nothing, except triggering reporting if forced. - if (markDirty == MarkAttributeDirty::kYes) + if (input.markDirty == MarkAttributeDirty::kYes) { - MatterReportingAttributeChangeCallback(endpoint, cluster, attributeID); + emberAfAttributeChanged(path.mEndpointId, path.mClusterId, path.mAttributeId, input.changeListener); } return Status::Success; } - const app::ConcreteAttributePath attributePath(endpoint, cluster, attributeID); + const app::ConcreteAttributePath attributePath(path.mEndpointId, path.mClusterId, path.mAttributeId); // Pre write attribute callback for all attribute changes, // regardless of cluster. - imStatus = MatterPreAttributeChangeCallback(attributePath, dataType, emberAfAttributeSize(metadata), data); + imStatus = MatterPreAttributeChangeCallback(attributePath, input.dataType, emberAfAttributeSize(metadata), input.dataPtr); if (imStatus != Protocols::InteractionModel::Status::Success) { return imStatus; @@ -422,7 +437,7 @@ Status emAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId at // Pre-write attribute callback specific // to the cluster that the attribute lives in. - status = emAfClusterPreAttributeChangedCallback(attributePath, dataType, emberAfAttributeSize(metadata), data); + status = emAfClusterPreAttributeChangedCallback(attributePath, input.dataType, emberAfAttributeSize(metadata), input.dataPtr); // Ignore the following write operation and return success if (status == Status::WriteIgnored) @@ -438,7 +453,7 @@ Status emAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId at // write the attribute status = emAfReadOrWriteAttribute(&record, nullptr, // metadata - data, + input.dataPtr, 0, // buffer size - unused true); // write? @@ -449,16 +464,16 @@ Status emAfWriteAttribute(EndpointId endpoint, ClusterId cluster, AttributeId at // Save the attribute to persistent storage if needed // The callee will weed out attributes that do not need to be stored. - emAfSaveAttributeToStorageIfNeeded(data, endpoint, cluster, metadata); + emAfSaveAttributeToStorageIfNeeded(input.dataPtr, path.mEndpointId, path.mClusterId, metadata); - if (markDirty != MarkAttributeDirty::kNo) + if (input.markDirty != MarkAttributeDirty::kNo) { - MatterReportingAttributeChangeCallback(endpoint, cluster, attributeID); + emberAfAttributeChanged(path.mEndpointId, path.mClusterId, path.mAttributeId, input.changeListener); } // Post write attribute callback for all attributes changes, regardless // of cluster. - MatterPostAttributeChangeCallback(attributePath, dataType, emberAfAttributeSize(metadata), data); + MatterPostAttributeChangeCallback(attributePath, input.dataType, emberAfAttributeSize(metadata), input.dataPtr); // Post-write attribute callback specific // to the cluster that the attribute lives in. diff --git a/src/app/util/attribute-table.h b/src/app/util/attribute-table.h index 0527e855d4350d..afa8bf88012f54 100644 --- a/src/app/util/attribute-table.h +++ b/src/app/util/attribute-table.h @@ -17,14 +17,62 @@ #pragma once +#include #include #include #include #include +#include + +struct EmberAfWriteDataInput +{ + // Where the input data originates from. + // + // NOTE: at this time there is no information regarding + // input buffer size and it is assumed "correct" for the given data type. + // + // NOTE: technically this should be `const uint8_t*`, however ember internal logic uses a + // `emAfReadOrWriteAttribute` method and because of the duality of read/write it needs + // a non-const input. This is odd and should probably be fixed. + uint8_t * dataPtr; + + // The data type that dataPtr points to + EmberAfAttributeType dataType; + + // Controls when `changeListener` is called to flag an attribute dirty. It allows for things like: + // kIfChanged - only if the dataPtr contains a different value than what currenty exists + // kNo - never called + // kYes - always called + chip::app::MarkAttributeDirty markDirty = chip::app::MarkAttributeDirty::kIfChanged; + + // Listener called when when the written data is consided changed/dirty. + // This being called depends on settings of `markDirty` combined with the actual contents of dataPtr + // vs the contents of the current attribute storage. + chip::app::AttributesChangedListener * changeListener = nullptr; + + EmberAfWriteDataInput(uint8_t * data, EmberAfAttributeType type) : dataPtr(data), dataType(type) {} + + EmberAfWriteDataInput & SetMarkDirty(chip::app::MarkAttributeDirty value) + { + markDirty = value; + return *this; + } + + EmberAfWriteDataInput & SetChangeListener(chip::app::AttributesChangedListener * listener) + { + changeListener = listener; + return *this; + } +}; + /** * @brief write an attribute, performing all the checks. * + * TODO: what are "all the checks"? There are limitations below + * and generally input data pointer does not even have a size, + * hence data validity check capabilities seem limited. + * * This function will attempt to write the attribute value from * the provided pointer. This function will only check that the * attribute exists. If it does it will write the value into @@ -41,20 +89,16 @@ * data type (as Accessors.h/cpp have this correct by default). * TODO: this not checking seems off - what if this is run without Accessors.h ? */ -chip::Protocols::InteractionModel::Status emberAfWriteAttribute(chip::EndpointId endpoint, chip::ClusterId cluster, - chip::AttributeId attributeID, uint8_t * dataPtr, - EmberAfAttributeType dataType); +chip::Protocols::InteractionModel::Status emberAfWriteAttribute(const chip::app::ConcreteAttributePath & path, + const EmberAfWriteDataInput & input); /** - * A version of emberAfWriteAttribute that allows controlling when the attribute - * should be marked dirty. This is an overload, not an optional argument, to - * reduce codesize at all the callsites that want to write without doing - * anything special to control the dirty marking. + * Override of emberAfWriteAttribute to reduce code size for calls that default + * markDirty/changeListener and any other future customization calls. */ chip::Protocols::InteractionModel::Status emberAfWriteAttribute(chip::EndpointId endpoint, chip::ClusterId cluster, chip::AttributeId attributeID, uint8_t * dataPtr, - EmberAfAttributeType dataType, - chip::app::MarkAttributeDirty markDirty); + EmberAfAttributeType dataType); /** * @brief Read the attribute value, performing all the checks. diff --git a/src/app/util/ember-compatibility-functions.cpp b/src/app/util/ember-compatibility-functions.cpp index 00f06dd32a858d..3ec9a8298b481e 100644 --- a/src/app/util/ember-compatibility-functions.cpp +++ b/src/app/util/ember-compatibility-functions.cpp @@ -752,8 +752,8 @@ CHIP_ERROR WriteSingleClusterData(const SubjectDescriptor & aSubjectDescriptor, return apWriteHandler->AddStatus(aPath, Protocols::InteractionModel::Status::InvalidValue); } - auto status = emAfWriteAttributeExternal(aPath.mEndpointId, aPath.mClusterId, aPath.mAttributeId, - gEmberAttributeIOBufferSpan.data(), attributeMetadata->attributeType); + auto status = emAfWriteAttributeExternal( + aPath, EmberAfWriteDataInput(gEmberAttributeIOBufferSpan.data(), attributeMetadata->attributeType)); return apWriteHandler->AddStatus(aPath, status); } diff --git a/src/app/util/mock/CodegenEmberMocks.cpp b/src/app/util/mock/CodegenEmberMocks.cpp index e1f0b2436084a7..521f36c9569647 100644 --- a/src/app/util/mock/CodegenEmberMocks.cpp +++ b/src/app/util/mock/CodegenEmberMocks.cpp @@ -16,6 +16,7 @@ */ #include #include +#include using chip::Protocols::InteractionModel::Status; @@ -34,8 +35,7 @@ Status emAfReadOrWriteAttribute(const EmberAfAttributeSearchRecord * attRecord, return Status::Success; } -Status emAfWriteAttributeExternal(chip::EndpointId endpoint, chip::ClusterId cluster, chip::AttributeId attributeID, - uint8_t * dataPtr, EmberAfAttributeType dataType) +Status emAfWriteAttributeExternal(const chip::app::ConcreteAttributePath & path, const EmberAfWriteDataInput & input) { return Status::Success; } @@ -43,5 +43,6 @@ Status emAfWriteAttributeExternal(chip::EndpointId endpoint, chip::ClusterId clu Status emberAfWriteAttribute(chip::EndpointId endpoint, chip::ClusterId cluster, chip::AttributeId attributeID, uint8_t * dataPtr, EmberAfAttributeType dataType) { - return emAfWriteAttributeExternal(endpoint, cluster, attributeID, dataPtr, dataType); + return emAfWriteAttributeExternal(chip::app::ConcreteAttributePath(endpoint, cluster, attributeID), + EmberAfWriteDataInput(dataPtr, dataType)); } diff --git a/src/app/zap-templates/templates/app/attributes/Accessors-src.zapt b/src/app/zap-templates/templates/app/attributes/Accessors-src.zapt index 4a2ca16e49d960..7af9a625964690 100644 --- a/src/app/zap-templates/templates/app/attributes/Accessors-src.zapt +++ b/src/app/zap-templates/templates/app/attributes/Accessors-src.zapt @@ -36,7 +36,7 @@ namespace {{asUpperCamelCase label}} { {{#*inline "clusterId"}}Clusters::{{asUpperCamelCase parent.label}}::Id{{/inline}} {{#*inline "sizingBytes"}}{{#if (isShortString type)}}1{{else}}2{{/if}}{{/inline}} -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, {{accessorGetterType this}} value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, {{accessorGetterType this}} value) { {{~#if (isString type)}} {{#if isNullable}} @@ -109,7 +109,13 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, {{accessorGet Encoding::LittleEndian::Put16(zclString, length); {{/if}} memcpy(&zclString[{{>sizingBytes}}], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, {{>clusterId}}, Id, zclString, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE{{#if passMarkDirty}}, markDirty{{/if}}); + {{#if passMarkDirty}} + return emberAfWriteAttribute( + ConcreteAttributePath(endpoint, {{>clusterId}}, Id), + EmberAfWriteDataInput(zclString, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); + {{else}} + return emberAfWriteAttribute(endpoint, {{>clusterId}}, Id, zclString, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE); + {{/if}} {{else}} using Traits = NumericAttributeTraits<{{accessorTraitType type}}>; if (!Traits::CanRepresentValue(/* isNullable = */ {{isNullable}}, value)) @@ -119,16 +125,22 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, {{accessorGet Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, {{>clusterId}}, Id, writable, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE{{#if passMarkDirty}}, markDirty{{/if}}); + {{#if passMarkDirty}} + return emberAfWriteAttribute( + ConcreteAttributePath(endpoint, {{>clusterId}}, Id), + EmberAfWriteDataInput(writable, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); + {{else}} + return emberAfWriteAttribute(endpoint, {{>clusterId}}, Id, writable, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE); + {{/if}} {{/if}} {{/inline}} -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value, MarkAttributeDirty markDirty) { {{> setBody passMarkDirty=true}} } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value) { {{> setBody passMarkDirty=false}} } @@ -138,27 +150,39 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEn {{#*inline "setNullBody"}} {{#if (isString type)}} uint8_t zclString[{{>sizingBytes}}] = { {{#if (isShortString type)}}0xFF{{else}}0xFF, 0xFF{{/if}} }; - return emberAfWriteAttribute(endpoint, {{>clusterId}}, Id, zclString, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE{{#if passMarkDirty}}, markDirty{{/if}}); + {{#if passMarkDirty}} + return emberAfWriteAttribute( + ConcreteAttributePath(endpoint, {{>clusterId}}, Id), + EmberAfWriteDataInput(zclString, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); + {{else}} + return emberAfWriteAttribute(endpoint, {{>clusterId}}, Id, zclString, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE); + {{/if}} {{else}} using Traits = NumericAttributeTraits<{{accessorTraitType type}}>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, {{>clusterId}}, Id, writable, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE{{#if passMarkDirty}}, markDirty{{/if}}); + {{#if passMarkDirty}} + return emberAfWriteAttribute( + ConcreteAttributePath(endpoint, {{>clusterId}}, Id), + EmberAfWriteDataInput(writable, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); + {{else}} + return emberAfWriteAttribute(endpoint, {{>clusterId}}, Id, writable, ZCL_{{typeAsDelimitedMacro type}}_ATTRIBUTE_TYPE); + {{/if}} {{/if}} {{/inline}} -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { {{> setNullBody passMarkDirty=true}} } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { {{> setNullBody passMarkDirty=false}} } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value, MarkAttributeDirty markDirty) { if (value.IsNull()) { return SetNull(endpoint, markDirty); @@ -167,7 +191,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEn return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value) { if (value.IsNull()) { return SetNull(endpoint); diff --git a/src/app/zap-templates/templates/app/attributes/Accessors.zapt b/src/app/zap-templates/templates/app/attributes/Accessors.zapt index fd8c4fad3dc87a..52e17cdf83a015 100644 --- a/src/app/zap-templates/templates/app/attributes/Accessors.zapt +++ b/src/app/zap-templates/templates/app/attributes/Accessors.zapt @@ -28,16 +28,16 @@ namespace Attributes { {{/first}} {{#unless (isStrEqual storagePolicy "attributeAccessInterface")}} namespace {{asUpperCamelCase label}} { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, {{accessorGetterType this}} value); // {{type}} +Protocols::InteractionModel::Status Get(EndpointId endpoint, {{accessorGetterType this}} value); // {{type}} {{! NOTE: Adding an optional arg instead of an overload can break API consumers that are using the function type (e.g. in templates). }} -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value, MarkAttributeDirty markDirty); {{#if isNullable}} -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value, MarkAttributeDirty markDirty); {{/if}} } // namespace {{asUpperCamelCase label}} diff --git a/src/darwin/Framework/CHIP/ServerEndpoint/MTRIMDispatch.mm b/src/darwin/Framework/CHIP/ServerEndpoint/MTRIMDispatch.mm index 1e2b7dc636f4f2..d21242956b01bf 100644 --- a/src/darwin/Framework/CHIP/ServerEndpoint/MTRIMDispatch.mm +++ b/src/darwin/Framework/CHIP/ServerEndpoint/MTRIMDispatch.mm @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -39,8 +40,8 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) // clusters dont use it. } -Protocols::InteractionModel::Status emAfWriteAttributeExternal(EndpointId endpoint, ClusterId cluster, AttributeId attributeID, uint8_t * dataPtr, - EmberAfAttributeType dataType) +Protocols::InteractionModel::Status emAfWriteAttributeExternal(const ConcreteAttributePath & path, + const EmberAfWriteDataInput & input) { assertChipStackLockedByCurrentThread(); diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp index ed3e70fb6c9d1a..4088d638e85c98 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp @@ -42,7 +42,7 @@ namespace Attributes { namespace IdentifyTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -57,7 +57,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -67,10 +67,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Identify::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Identify::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -87,7 +88,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace IdentifyType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -102,7 +103,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -113,10 +114,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Identify::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Identify::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -133,7 +135,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -148,7 +150,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -158,10 +160,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Identify::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Identify::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -178,7 +181,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -193,7 +196,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -203,10 +206,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Identify::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Identify::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -229,8 +233,7 @@ namespace Attributes { namespace NameSupport { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::BitMask * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -245,8 +248,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -256,11 +259,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -277,7 +280,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -292,7 +295,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -302,10 +305,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Groups::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Groups::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -322,7 +326,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -337,7 +341,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -347,10 +351,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Groups::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Groups::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -373,7 +378,7 @@ namespace Attributes { namespace OnOff { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -388,7 +393,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -398,10 +403,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOff::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOff::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -418,7 +424,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace GlobalSceneControl { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -433,7 +439,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -443,10 +449,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOff::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOff::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -463,7 +470,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace OnTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -478,7 +485,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -488,10 +495,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOff::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOff::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -508,7 +516,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace OffWaitTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -523,7 +531,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -533,10 +541,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOff::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOff::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -553,7 +562,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace StartUpOnOff { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; @@ -572,7 +581,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::OnOff::StartUpOnOffEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OnOff::StartUpOnOffEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -583,10 +592,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOff::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOff::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::OnOff::StartUpOnOffEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OnOff::StartUpOnOffEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -599,16 +609,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl return emberAfWriteAttribute(endpoint, Clusters::OnOff::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::OnOff::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOff::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -617,7 +628,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::OnOff::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { @@ -629,7 +640,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) @@ -644,7 +655,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -659,7 +670,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -669,10 +680,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOff::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOff::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -689,7 +701,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -704,7 +716,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -714,10 +726,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOff::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOff::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -740,7 +753,7 @@ namespace Attributes { namespace SwitchType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -756,7 +769,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -766,11 +779,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOffSwitchConfiguration::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOffSwitchConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -787,7 +800,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace SwitchActions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -803,7 +816,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -813,11 +826,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOffSwitchConfiguration::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOffSwitchConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -834,7 +847,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -850,7 +863,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -860,11 +873,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOffSwitchConfiguration::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOffSwitchConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -881,7 +894,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -897,7 +910,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -907,11 +920,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OnOffSwitchConfiguration::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OnOffSwitchConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -934,7 +947,7 @@ namespace Attributes { namespace CurrentLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -953,7 +966,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -963,10 +976,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -979,16 +993,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -997,7 +1012,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -1008,7 +1023,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -1022,7 +1037,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace RemainingTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1038,7 +1053,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1048,10 +1063,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1068,7 +1084,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace MinLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1084,7 +1100,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1094,10 +1110,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1114,7 +1131,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace MaxLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1130,7 +1147,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1140,10 +1157,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1160,7 +1178,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace CurrentFrequency { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1176,7 +1194,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1186,10 +1204,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1206,7 +1225,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace MinFrequency { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1222,7 +1241,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1232,10 +1251,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1252,7 +1272,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace MaxFrequency { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1268,7 +1288,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1278,10 +1298,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1298,7 +1319,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Options { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -1315,8 +1336,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1326,11 +1347,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1347,7 +1368,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace OnOffTransitionTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1363,7 +1384,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1373,10 +1394,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1393,7 +1415,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace OnLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1412,7 +1434,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -1422,10 +1444,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -1438,16 +1461,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -1456,7 +1480,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -1467,7 +1491,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -1481,7 +1505,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OnTransitionTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1500,7 +1524,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -1510,10 +1534,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -1526,16 +1551,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -1544,7 +1570,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -1555,7 +1581,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -1569,7 +1595,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OffTransitionTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1588,7 +1614,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -1598,10 +1624,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -1614,16 +1641,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -1632,7 +1660,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -1643,7 +1671,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -1657,7 +1685,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace DefaultMoveRate { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1676,7 +1704,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -1686,10 +1714,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -1702,16 +1731,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -1720,7 +1750,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -1731,7 +1761,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -1745,7 +1775,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace StartUpCurrentLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1764,7 +1794,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -1774,10 +1804,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -1790,16 +1821,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -1808,7 +1840,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -1819,7 +1851,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -1833,7 +1865,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1849,7 +1881,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1859,10 +1891,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1879,7 +1912,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -1895,7 +1928,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1905,10 +1938,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LevelControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LevelControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -1931,7 +1965,7 @@ namespace Attributes { namespace ActiveText { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[16 + 1]; Protocols::InteractionModel::Status status = @@ -1949,7 +1983,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -1958,11 +1992,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -1978,7 +2012,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace Description { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[16 + 1]; Protocols::InteractionModel::Status status = @@ -1996,7 +2030,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -2005,11 +2039,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -2025,7 +2059,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace InactiveText { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[16 + 1]; Protocols::InteractionModel::Status status = @@ -2043,7 +2077,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -2052,11 +2086,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -2072,7 +2106,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace OutOfService { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2088,7 +2122,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2098,10 +2132,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2118,7 +2153,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace Polarity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2134,7 +2169,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2144,10 +2179,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2164,7 +2200,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace PresentValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2180,7 +2216,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2190,10 +2226,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2210,7 +2247,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace Reliability { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2226,7 +2263,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2236,10 +2273,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2256,7 +2294,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace StatusFlags { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2272,7 +2310,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2282,10 +2320,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2302,7 +2341,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace ApplicationType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2318,7 +2357,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2328,10 +2367,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2348,7 +2388,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2364,7 +2404,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2374,10 +2414,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2394,7 +2435,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2410,7 +2451,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2420,10 +2461,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BinaryInputBasic::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BinaryInputBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2446,7 +2488,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2462,7 +2504,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2472,11 +2514,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PulseWidthModulation::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PulseWidthModulation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2493,7 +2535,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2509,7 +2551,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2519,10 +2561,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PulseWidthModulation::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PulseWidthModulation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2549,7 +2592,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2564,7 +2607,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2574,10 +2617,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Binding::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Binding::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2594,7 +2638,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2609,7 +2653,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2619,10 +2663,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Binding::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Binding::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2645,7 +2690,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2661,7 +2706,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2671,10 +2716,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::AccessControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::AccessControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2697,7 +2743,7 @@ namespace Attributes { namespace SetupURL { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[512 + 2]; Protocols::InteractionModel::Status status = @@ -2715,7 +2761,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(512 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -2724,10 +2770,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::LittleEndian::Put16(zclString, length); memcpy(&zclString[2], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::Actions::Id, Id, zclString, ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Actions::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(512 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -2743,7 +2790,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2758,7 +2805,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2768,10 +2815,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Actions::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Actions::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2788,7 +2836,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2803,7 +2851,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2813,10 +2861,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Actions::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Actions::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2839,7 +2888,7 @@ namespace Attributes { namespace NodeLabel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[32 + 1]; Protocols::InteractionModel::Status status = @@ -2857,7 +2906,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -2866,11 +2915,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -2886,7 +2935,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace LocalConfigDisabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2902,7 +2951,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2912,10 +2961,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2932,7 +2982,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace Reachable { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2948,7 +2998,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2958,10 +3008,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -2978,7 +3029,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -2994,7 +3045,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3004,10 +3055,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3024,7 +3076,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3040,7 +3092,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3050,10 +3102,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3076,7 +3129,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3092,7 +3145,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3102,11 +3155,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OtaSoftwareUpdateProvider::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OtaSoftwareUpdateProvider::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3123,7 +3176,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3139,7 +3192,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3149,11 +3202,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OtaSoftwareUpdateProvider::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OtaSoftwareUpdateProvider::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3176,7 +3229,7 @@ namespace Attributes { namespace UpdatePossible { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3192,7 +3245,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3202,11 +3255,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3223,7 +3276,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace UpdateState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::OtaSoftwareUpdateRequestor::UpdateStateEnum * value) { using Traits = NumericAttributeTraits; @@ -3240,8 +3293,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::OtaSoftwareUpdateRequestor::UpdateStateEnum value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OtaSoftwareUpdateRequestor::UpdateStateEnum value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3251,12 +3304,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::OtaSoftwareUpdateRequestor:: Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::OtaSoftwareUpdateRequestor::UpdateStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OtaSoftwareUpdateRequestor::UpdateStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3273,7 +3325,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace UpdateStateProgress { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3292,7 +3344,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -3302,11 +3354,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -3319,17 +3371,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -3338,7 +3390,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -3349,7 +3401,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -3363,7 +3415,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3379,7 +3431,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3389,11 +3441,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3410,7 +3462,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3426,7 +3478,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3436,11 +3488,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OtaSoftwareUpdateRequestor::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3463,7 +3515,7 @@ namespace Attributes { namespace ActiveLocale { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[35 + 1]; Protocols::InteractionModel::Status status = @@ -3481,7 +3533,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(35 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -3490,11 +3542,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::LocalizationConfiguration::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LocalizationConfiguration::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(35 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -3510,7 +3562,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3526,7 +3578,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3536,11 +3588,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LocalizationConfiguration::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LocalizationConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3557,7 +3609,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3573,7 +3625,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3583,11 +3635,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LocalizationConfiguration::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LocalizationConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3610,8 +3662,7 @@ namespace Attributes { namespace HourFormat { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::TimeFormatLocalization::HourFormatEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::HourFormatEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3627,8 +3678,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::HourFormatEnum value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::HourFormatEnum value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3638,11 +3689,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::Hour Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TimeFormatLocalization::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TimeFormatLocalization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::TimeFormatLocalization::HourFormatEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::HourFormatEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3659,8 +3710,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace ActiveCalendarType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3676,8 +3726,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3687,11 +3737,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::Cale Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TimeFormatLocalization::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TimeFormatLocalization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3708,7 +3758,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3724,7 +3774,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3734,11 +3784,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TimeFormatLocalization::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TimeFormatLocalization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3755,7 +3805,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3771,7 +3821,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3781,11 +3831,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TimeFormatLocalization::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TimeFormatLocalization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3808,7 +3858,7 @@ namespace Attributes { namespace TemperatureUnit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3824,7 +3874,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -3835,10 +3885,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitLocalization::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitLocalization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3855,7 +3906,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3871,7 +3922,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3881,10 +3932,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitLocalization::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitLocalization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3901,7 +3953,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3917,7 +3969,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3927,10 +3979,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitLocalization::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitLocalization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3953,7 +4006,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -3969,7 +4022,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -3979,11 +4032,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSourceConfiguration::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSourceConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4000,7 +4053,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4016,7 +4069,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4026,11 +4079,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSourceConfiguration::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSourceConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4053,7 +4106,7 @@ namespace Attributes { namespace Status { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4069,7 +4122,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -4080,10 +4133,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4100,7 +4154,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace Order { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4116,7 +4170,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4126,10 +4180,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4146,7 +4201,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace Description { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[60 + 1]; Protocols::InteractionModel::Status status = @@ -4164,7 +4219,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(60 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -4173,10 +4228,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(60 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -4192,7 +4248,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace WiredAssessedInputVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4211,7 +4267,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4221,10 +4277,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4237,16 +4294,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -4255,7 +4313,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -4266,7 +4324,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -4280,7 +4338,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace WiredAssessedInputFrequency { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4299,7 +4357,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4309,10 +4367,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4325,16 +4384,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -4343,7 +4403,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -4354,7 +4414,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -4368,7 +4428,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace WiredCurrentType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4384,7 +4444,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -4395,10 +4455,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4415,7 +4476,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace WiredAssessedCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4434,7 +4495,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4444,10 +4505,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4460,16 +4522,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -4478,7 +4541,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -4489,7 +4552,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -4503,7 +4566,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace WiredNominalVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4519,7 +4582,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4529,10 +4592,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4549,7 +4613,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace WiredMaximumCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4565,7 +4629,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4575,10 +4639,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4595,7 +4660,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace WiredPresent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4611,7 +4676,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4621,10 +4686,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4641,7 +4707,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace BatVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4660,7 +4726,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4670,10 +4736,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4686,16 +4753,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -4704,7 +4772,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -4715,7 +4783,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -4729,7 +4797,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace BatPercentRemaining { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4748,7 +4816,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4758,10 +4826,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4774,16 +4843,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -4792,7 +4862,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -4803,7 +4873,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -4817,7 +4887,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace BatTimeRemaining { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4836,7 +4906,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4846,10 +4916,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -4862,16 +4933,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -4880,7 +4952,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -4891,7 +4963,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -4905,7 +4977,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace BatChargeLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4921,7 +4993,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -4932,10 +5004,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4952,7 +5025,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace BatReplacementNeeded { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -4968,7 +5041,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4978,10 +5051,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -4998,7 +5072,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace BatReplaceability { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5014,7 +5088,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -5025,10 +5099,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5045,7 +5120,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace BatPresent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5061,7 +5136,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5071,10 +5146,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5091,7 +5167,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace BatReplacementDescription { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[60 + 1]; Protocols::InteractionModel::Status status = @@ -5109,7 +5185,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(60 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -5118,10 +5194,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(60 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -5137,8 +5214,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace BatCommonDesignation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::PowerSource::BatCommonDesignationEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::BatCommonDesignationEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5154,7 +5230,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatCommonDesignationEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatCommonDesignationEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -5165,10 +5241,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatCommonDesignationEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatCommonDesignationEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5185,7 +5262,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace BatANSIDesignation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[20 + 1]; Protocols::InteractionModel::Status status = @@ -5203,7 +5280,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(20 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -5212,10 +5289,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(20 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -5231,7 +5309,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace BatIECDesignation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[20 + 1]; Protocols::InteractionModel::Status status = @@ -5249,7 +5327,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(20 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -5258,10 +5336,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(20 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -5277,8 +5356,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace BatApprovedChemistry { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::PowerSource::BatApprovedChemistryEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::BatApprovedChemistryEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5294,7 +5372,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatApprovedChemistryEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatApprovedChemistryEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -5305,10 +5383,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatApprovedChemistryEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatApprovedChemistryEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5325,7 +5404,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace BatCapacity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5341,7 +5420,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5351,10 +5430,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5371,7 +5451,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace BatQuantity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5387,7 +5467,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5397,10 +5477,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5417,7 +5498,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace BatChargeState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5433,7 +5514,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -5444,10 +5525,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5464,7 +5546,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace BatTimeToFullCharge { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5483,7 +5565,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -5493,10 +5575,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -5509,16 +5592,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -5527,7 +5611,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -5538,7 +5622,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -5552,7 +5636,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace BatFunctionalWhileCharging { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5568,7 +5652,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5578,10 +5662,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5598,7 +5683,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace BatChargingCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5617,7 +5702,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -5627,10 +5712,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -5643,16 +5729,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -5661,7 +5748,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -5672,7 +5759,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -5686,7 +5773,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5702,7 +5789,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5712,10 +5799,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5732,7 +5820,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5748,7 +5836,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5758,10 +5846,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerSource::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerSource::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5784,7 +5873,7 @@ namespace Attributes { namespace Breadcrumb { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5800,7 +5889,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5810,10 +5899,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::GeneralCommissioning::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::GeneralCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5830,7 +5920,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu namespace TCAcceptedVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5846,7 +5936,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5856,10 +5946,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::GeneralCommissioning::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::GeneralCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5876,7 +5967,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace TCMinRequiredVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5892,7 +5983,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5902,10 +5993,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::GeneralCommissioning::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::GeneralCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5922,7 +6014,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace TCAcknowledgements { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5938,7 +6030,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5948,11 +6040,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::GeneralCommissioning::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::GeneralCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5969,7 +6061,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace TCAcknowledgementsRequired { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -5985,7 +6077,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -5995,10 +6087,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::GeneralCommissioning::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::GeneralCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6015,7 +6108,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6031,7 +6124,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6041,11 +6134,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::GeneralCommissioning::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::GeneralCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6062,7 +6155,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6078,7 +6171,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6088,10 +6181,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::GeneralCommissioning::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::GeneralCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6114,7 +6208,7 @@ namespace Attributes { namespace MaxNetworks { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6130,7 +6224,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6140,10 +6234,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6160,7 +6255,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace ScanMaxTimeSeconds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6176,7 +6271,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6186,10 +6281,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6206,7 +6302,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace ConnectMaxTimeSeconds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6222,7 +6318,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6232,10 +6328,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6252,7 +6349,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace InterfaceEnabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6268,7 +6365,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6278,10 +6375,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6299,8 +6397,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace LastNetworkingStatus { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, - DataModel::Nullable & value) +Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6319,7 +6416,7 @@ Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::NetworkCommissioning::NetworkCommissioningStatusEnum value, MarkAttributeDirty markDirty) { @@ -6331,10 +6428,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::NetworkCommissioning::NetworkCommissioningStatusEnum value) { using Traits = NumericAttributeTraits; @@ -6348,16 +6446,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -6367,7 +6466,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { @@ -6380,7 +6479,7 @@ Set(chip::EndpointId endpoint, } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) @@ -6395,7 +6494,7 @@ Set(chip::EndpointId endpoint, namespace LastNetworkID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { if (value.IsNull()) { @@ -6421,7 +6520,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -6430,11 +6529,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -6446,20 +6545,20 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { uint8_t zclString[1] = { 0xFF }; - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { uint8_t zclString[1] = { 0xFF }; return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -6470,7 +6569,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -6484,7 +6583,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace LastConnectErrorValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6503,7 +6602,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -6513,10 +6612,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -6529,16 +6629,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -6547,7 +6648,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -6558,7 +6659,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -6572,7 +6673,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace SupportedThreadFeatures { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -6589,7 +6690,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -6601,11 +6702,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -6623,7 +6724,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace ThreadVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6639,7 +6740,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6649,10 +6750,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6669,7 +6771,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6685,7 +6787,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6695,11 +6797,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6716,7 +6818,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6732,7 +6834,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6742,10 +6844,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NetworkCommissioning::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NetworkCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6768,7 +6871,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6784,7 +6887,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6794,10 +6897,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DiagnosticLogs::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DiagnosticLogs::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6814,7 +6918,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6830,7 +6934,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6840,10 +6944,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DiagnosticLogs::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DiagnosticLogs::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6866,7 +6971,7 @@ namespace Attributes { namespace TestEventTriggersEnabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6882,7 +6987,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6892,10 +6997,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::GeneralDiagnostics::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::GeneralDiagnostics::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6918,7 +7024,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6934,7 +7040,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6944,10 +7050,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SoftwareDiagnostics::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SoftwareDiagnostics::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6970,7 +7077,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -6986,7 +7093,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -6996,11 +7103,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7017,7 +7124,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7033,7 +7140,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7043,11 +7150,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7070,7 +7177,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7086,7 +7193,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7096,11 +7203,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WiFiNetworkDiagnostics::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WiFiNetworkDiagnostics::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7117,7 +7224,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7133,7 +7240,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7143,11 +7250,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WiFiNetworkDiagnostics::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WiFiNetworkDiagnostics::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7170,7 +7277,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7186,7 +7293,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7196,11 +7303,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EthernetNetworkDiagnostics::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EthernetNetworkDiagnostics::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7217,7 +7324,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7233,7 +7340,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7243,11 +7350,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EthernetNetworkDiagnostics::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EthernetNetworkDiagnostics::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7270,7 +7377,7 @@ namespace Attributes { namespace TimeSource { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7286,7 +7393,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -7297,10 +7404,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TimeSynchronization::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TimeSynchronization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7317,8 +7425,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace TimeZoneDatabase { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7334,8 +7441,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7345,11 +7452,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeZon Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TimeSynchronization::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TimeSynchronization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7366,7 +7473,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace NTPServerAvailable { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7382,7 +7489,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7392,10 +7499,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TimeSynchronization::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TimeSynchronization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7412,7 +7520,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace SupportsDNSResolve { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7428,7 +7536,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7438,10 +7546,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TimeSynchronization::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TimeSynchronization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7458,7 +7567,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7474,7 +7583,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7484,10 +7593,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TimeSynchronization::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TimeSynchronization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7504,7 +7614,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7520,7 +7630,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7530,10 +7640,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TimeSynchronization::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TimeSynchronization::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7556,7 +7667,7 @@ namespace Attributes { namespace VendorName { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[32 + 1]; Protocols::InteractionModel::Status status = @@ -7574,7 +7685,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -7583,11 +7694,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -7604,7 +7715,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace VendorID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::VendorId * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::VendorId * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7620,7 +7731,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::VendorI return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7630,11 +7741,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorI Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, writable, ZCL_VENDOR_ID_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_VENDOR_ID_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7651,7 +7762,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorI namespace ProductName { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[32 + 1]; Protocols::InteractionModel::Status status = @@ -7669,7 +7780,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -7678,11 +7789,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -7699,7 +7810,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace ProductID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7715,7 +7826,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7725,11 +7836,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7746,7 +7857,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace NodeLabel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[32 + 1]; Protocols::InteractionModel::Status status = @@ -7764,7 +7875,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -7773,11 +7884,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -7794,7 +7905,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace HardwareVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7810,7 +7921,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7820,11 +7931,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7841,7 +7952,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace HardwareVersionString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[64 + 1]; Protocols::InteractionModel::Status status = @@ -7859,7 +7970,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(64 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -7868,11 +7979,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(64 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -7889,7 +8000,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace SoftwareVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -7905,7 +8016,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7915,11 +8026,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -7936,7 +8047,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace SoftwareVersionString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[64 + 1]; Protocols::InteractionModel::Status status = @@ -7954,7 +8065,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(64 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -7963,11 +8074,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(64 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -7984,7 +8095,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace ManufacturingDate { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[16 + 1]; Protocols::InteractionModel::Status status = @@ -8002,7 +8113,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8011,11 +8122,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8032,7 +8143,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace PartNumber { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[32 + 1]; Protocols::InteractionModel::Status status = @@ -8050,7 +8161,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8059,11 +8170,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8080,7 +8191,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace ProductURL { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[256 + 2]; Protocols::InteractionModel::Status status = @@ -8098,7 +8209,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(256 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8107,11 +8218,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::LittleEndian::Put16(zclString, length); memcpy(&zclString[2], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(256 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8128,7 +8239,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace ProductLabel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[64 + 1]; Protocols::InteractionModel::Status status = @@ -8146,7 +8257,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(64 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8155,11 +8266,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(64 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8176,7 +8287,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace SerialNumber { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[32 + 1]; Protocols::InteractionModel::Status status = @@ -8194,7 +8305,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8203,11 +8314,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8224,7 +8335,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace Reachable { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8240,7 +8351,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8250,11 +8361,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8271,7 +8382,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace UniqueID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[32 + 1]; Protocols::InteractionModel::Status status = @@ -8289,7 +8400,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8298,11 +8409,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, zclString, - ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -8319,7 +8430,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8335,7 +8446,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8345,11 +8456,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8366,7 +8477,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8382,7 +8493,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8392,11 +8503,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BridgedDeviceBasicInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8419,7 +8530,7 @@ namespace Attributes { namespace NumberOfPositions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8434,7 +8545,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8444,10 +8555,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Switch::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Switch::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8464,7 +8576,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace CurrentPosition { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8479,7 +8591,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8489,10 +8601,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Switch::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Switch::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8509,7 +8622,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace MultiPressMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8524,7 +8637,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8534,10 +8647,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Switch::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Switch::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8554,7 +8668,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8569,7 +8683,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8579,10 +8693,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Switch::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Switch::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8599,7 +8714,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8614,7 +8729,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8624,10 +8739,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Switch::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Switch::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8650,7 +8766,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8666,7 +8782,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8676,11 +8792,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::AdministratorCommissioning::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::AdministratorCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8697,7 +8813,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8713,7 +8829,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8723,11 +8839,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::AdministratorCommissioning::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::AdministratorCommissioning::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8750,7 +8866,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8766,7 +8882,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8776,11 +8892,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OperationalCredentials::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OperationalCredentials::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8797,7 +8913,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8813,7 +8929,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8823,11 +8939,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OperationalCredentials::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OperationalCredentials::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8854,7 +8970,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8870,7 +8986,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8880,10 +8996,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FixedLabel::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FixedLabel::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8900,7 +9017,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8916,7 +9033,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8926,10 +9043,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FixedLabel::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FixedLabel::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8952,7 +9070,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -8968,7 +9086,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8978,10 +9096,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UserLabel::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UserLabel::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -8998,7 +9117,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9014,7 +9133,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9024,10 +9143,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UserLabel::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UserLabel::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9050,7 +9170,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9066,7 +9186,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9076,10 +9196,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ProxyConfiguration::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ProxyConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9096,7 +9217,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9112,7 +9233,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9122,10 +9243,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ProxyConfiguration::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ProxyConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9148,7 +9270,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9164,7 +9286,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9174,10 +9296,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ProxyDiscovery::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ProxyDiscovery::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9194,7 +9317,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9210,7 +9333,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9220,10 +9343,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ProxyDiscovery::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ProxyDiscovery::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9246,7 +9370,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9262,7 +9386,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9272,10 +9396,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ProxyValid::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ProxyValid::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9292,7 +9417,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9308,7 +9433,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9318,10 +9443,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ProxyValid::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ProxyValid::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9344,7 +9470,7 @@ namespace Attributes { namespace StateValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9360,7 +9486,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9370,10 +9496,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanState::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanState::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9390,7 +9517,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9406,7 +9533,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9416,10 +9543,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanState::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanState::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9436,7 +9564,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9452,7 +9580,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9462,10 +9590,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanState::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanState::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9488,7 +9617,7 @@ namespace Attributes { namespace UserActiveModeTriggerHint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -9505,7 +9634,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -9517,10 +9646,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IcdManagement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IcdManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -9538,7 +9668,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace UserActiveModeTriggerInstruction { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[128 + 1]; Protocols::InteractionModel::Status status = @@ -9556,7 +9686,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(128 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -9565,10 +9695,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::IcdManagement::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IcdManagement::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(128 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -9584,7 +9715,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace OperatingMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9600,7 +9731,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -9611,10 +9742,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IcdManagement::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IcdManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9631,7 +9763,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9647,7 +9779,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9657,10 +9789,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IcdManagement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IcdManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9677,7 +9810,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9693,7 +9826,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9703,10 +9836,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IcdManagement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IcdManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9729,7 +9863,7 @@ namespace Attributes { namespace SetTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9744,7 +9878,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9754,10 +9888,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Timer::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Timer::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9774,7 +9909,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace TimeRemaining { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9789,7 +9924,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9799,10 +9934,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Timer::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Timer::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9819,7 +9955,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace TimerState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9834,7 +9970,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -9845,10 +9981,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Timer::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Timer::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9865,7 +10002,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9880,7 +10017,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9890,10 +10027,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Timer::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Timer::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9910,7 +10048,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9925,7 +10063,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9935,10 +10073,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Timer::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Timer::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9961,7 +10100,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -9977,7 +10116,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -9987,11 +10126,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OvenCavityOperationalState::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OvenCavityOperationalState::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10008,7 +10147,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10024,7 +10163,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10034,11 +10173,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OvenCavityOperationalState::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OvenCavityOperationalState::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10061,7 +10200,7 @@ namespace Attributes { namespace CurrentMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10076,7 +10215,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10086,10 +10225,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OvenMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10106,7 +10246,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace StartUpMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10124,7 +10264,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10134,10 +10274,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OvenMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10150,16 +10291,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OvenMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -10168,7 +10310,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -10179,7 +10321,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -10193,7 +10335,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OnMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10211,7 +10353,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10221,10 +10363,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OvenMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10237,16 +10380,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OvenMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -10255,7 +10399,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -10266,7 +10410,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -10280,7 +10424,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10295,7 +10439,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10305,10 +10449,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OvenMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10325,7 +10470,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10340,7 +10485,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10350,10 +10495,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OvenMode::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OvenMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10376,7 +10522,7 @@ namespace Attributes { namespace SelectedDrynessLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; @@ -10396,8 +10542,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::LaundryDryerControls::DrynessLevelEnum value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::LaundryDryerControls::DrynessLevelEnum value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10407,11 +10553,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::LaundryDryerControls::Drynes Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LaundryDryerControls::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LaundryDryerControls::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::LaundryDryerControls::DrynessLevelEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::LaundryDryerControls::DrynessLevelEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10424,16 +10570,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return emberAfWriteAttribute(endpoint, Clusters::LaundryDryerControls::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::LaundryDryerControls::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LaundryDryerControls::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -10443,8 +10590,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, - const chip::app::DataModel::Nullable & value, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -10456,8 +10602,7 @@ Set(chip::EndpointId endpoint, } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, - const chip::app::DataModel::Nullable & value) +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -10471,7 +10616,7 @@ Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10487,7 +10632,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10497,11 +10642,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LaundryDryerControls::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LaundryDryerControls::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10518,7 +10663,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10534,7 +10679,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10544,10 +10689,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LaundryDryerControls::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LaundryDryerControls::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10570,7 +10716,7 @@ namespace Attributes { namespace Description { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[64 + 1]; Protocols::InteractionModel::Status status = @@ -10588,7 +10734,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(64 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -10597,10 +10743,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ModeSelect::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(64 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -10616,7 +10763,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace StandardNamespace { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10635,7 +10782,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10645,10 +10792,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ModeSelect::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10661,16 +10809,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ModeSelect::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -10679,7 +10828,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -10690,7 +10839,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -10704,7 +10853,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace CurrentMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10720,7 +10869,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10730,10 +10879,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ModeSelect::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10750,7 +10900,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace StartUpMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10769,7 +10919,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10779,10 +10929,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ModeSelect::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10795,16 +10946,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ModeSelect::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -10813,7 +10965,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -10824,7 +10976,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -10838,7 +10990,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OnMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10857,7 +11009,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10867,10 +11019,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ModeSelect::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -10883,16 +11036,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ModeSelect::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -10901,7 +11055,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -10912,7 +11066,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -10926,7 +11080,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10942,7 +11096,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10952,10 +11106,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ModeSelect::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10972,7 +11127,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -10988,7 +11143,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -10998,10 +11153,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ModeSelect::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ModeSelect::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11024,7 +11180,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11040,7 +11196,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11050,10 +11206,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LaundryWasherMode::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LaundryWasherMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11076,7 +11233,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11092,7 +11249,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11102,11 +11259,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RefrigeratorAndTemperatureControlledCabinetMode::Id, Id, writable, - ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RefrigeratorAndTemperatureControlledCabinetMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11130,7 +11287,7 @@ namespace Attributes { namespace SpinSpeedCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11149,7 +11306,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -11159,10 +11316,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LaundryWasherControls::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LaundryWasherControls::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -11175,16 +11333,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::LaundryWasherControls::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::LaundryWasherControls::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LaundryWasherControls::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -11193,7 +11352,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::LaundryWasherControls::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -11204,7 +11363,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -11218,8 +11377,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NumberOfRinses { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11235,8 +11393,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11246,11 +11404,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::LaundryWasherControls::Numbe Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LaundryWasherControls::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LaundryWasherControls::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11267,7 +11425,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11283,7 +11441,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11293,11 +11451,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LaundryWasherControls::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LaundryWasherControls::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11314,7 +11472,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11330,7 +11488,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11340,10 +11498,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LaundryWasherControls::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LaundryWasherControls::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11366,7 +11525,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11382,7 +11541,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11392,10 +11551,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RvcRunMode::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RvcRunMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11418,7 +11578,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11434,7 +11594,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11444,10 +11604,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RvcCleanMode::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RvcCleanMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11470,7 +11631,7 @@ namespace Attributes { namespace TemperatureSetpoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11486,7 +11647,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11496,11 +11657,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureControl::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11517,7 +11678,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MinTemperature { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11533,7 +11694,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11543,11 +11704,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureControl::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11564,7 +11725,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MaxTemperature { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11580,7 +11741,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11590,11 +11751,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureControl::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11611,7 +11772,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace Step { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11627,7 +11788,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11637,11 +11798,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureControl::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11658,7 +11819,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace SelectedTemperatureLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11674,7 +11835,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11684,10 +11845,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11704,7 +11866,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11720,7 +11882,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11730,10 +11892,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11750,7 +11913,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11766,7 +11929,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11776,10 +11939,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11802,7 +11966,7 @@ namespace Attributes { namespace Mask { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -11819,9 +11983,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11831,10 +11994,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RefrigeratorAlarm::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RefrigeratorAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -11852,7 +12016,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace State { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -11869,9 +12033,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11881,10 +12044,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RefrigeratorAlarm::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RefrigeratorAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -11902,7 +12066,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace Supported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -11919,9 +12083,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11931,10 +12094,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RefrigeratorAlarm::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RefrigeratorAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -11952,7 +12116,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -11968,7 +12132,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11978,10 +12142,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RefrigeratorAlarm::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RefrigeratorAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -11998,7 +12163,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12014,7 +12179,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12024,10 +12189,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RefrigeratorAlarm::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RefrigeratorAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12050,7 +12216,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12066,7 +12232,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12076,10 +12242,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DishwasherMode::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DishwasherMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12102,7 +12269,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12118,7 +12285,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12128,10 +12295,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::AirQuality::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::AirQuality::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12154,7 +12322,7 @@ namespace Attributes { namespace ExpressedState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12170,7 +12338,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -12181,10 +12349,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12201,7 +12370,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace SmokeState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12217,7 +12386,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -12228,10 +12397,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12248,7 +12418,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace COState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12264,7 +12434,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -12275,10 +12445,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12295,7 +12466,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace BatteryAlert { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12311,7 +12482,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -12322,10 +12493,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12342,7 +12514,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace DeviceMuted { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12358,7 +12530,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -12369,10 +12541,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12389,7 +12562,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace TestInProgress { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12405,7 +12578,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12415,10 +12588,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12435,7 +12609,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace HardwareFaultAlert { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12451,7 +12625,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12461,10 +12635,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12481,7 +12656,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace EndOfServiceAlert { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12497,7 +12672,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -12508,10 +12683,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12528,7 +12704,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace InterconnectSmokeAlarm { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12544,7 +12720,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -12555,10 +12731,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12575,7 +12752,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace InterconnectCOAlarm { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12591,7 +12768,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -12602,10 +12779,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12622,8 +12800,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace ContaminationState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12639,7 +12816,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -12650,10 +12827,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12670,7 +12848,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace SmokeSensitivityLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12686,7 +12864,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -12697,10 +12875,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12717,7 +12896,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace ExpiryDate { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12733,7 +12912,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12743,10 +12922,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12763,7 +12943,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12779,7 +12959,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12789,10 +12969,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12809,7 +12990,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -12825,7 +13006,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12835,10 +13016,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SmokeCoAlarm::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SmokeCoAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12861,7 +13043,7 @@ namespace Attributes { namespace Mask { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -12878,8 +13060,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12889,11 +13071,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12910,7 +13092,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace Latch { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -12927,8 +13109,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12938,11 +13120,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12959,7 +13141,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace State { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -12976,8 +13158,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -12987,11 +13169,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13008,7 +13190,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace Supported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -13025,8 +13207,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13036,11 +13218,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13057,7 +13239,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13073,7 +13255,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13083,10 +13265,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DishwasherAlarm::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DishwasherAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13103,7 +13286,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13119,7 +13302,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13129,10 +13312,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DishwasherAlarm::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DishwasherAlarm::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13155,7 +13339,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13171,7 +13355,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13181,10 +13365,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MicrowaveOvenMode::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MicrowaveOvenMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13207,7 +13392,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13223,7 +13408,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13233,10 +13418,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MicrowaveOvenControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MicrowaveOvenControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13259,7 +13445,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13275,7 +13461,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13285,10 +13471,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OperationalState::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OperationalState::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13305,7 +13492,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13321,7 +13508,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13331,10 +13518,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OperationalState::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OperationalState::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13357,7 +13545,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13373,7 +13561,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13383,10 +13571,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RvcOperationalState::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RvcOperationalState::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13403,7 +13592,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13419,7 +13608,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13429,10 +13618,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RvcOperationalState::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RvcOperationalState::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13455,7 +13645,7 @@ namespace Attributes { namespace LastConfiguredBy { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13474,7 +13664,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::NodeId value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::NodeId value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -13484,10 +13674,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::NodeId Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ScenesManagement::Id, Id, writable, ZCL_NODE_ID_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ScenesManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_NODE_ID_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::NodeId value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::NodeId value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -13500,16 +13691,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::NodeId return emberAfWriteAttribute(endpoint, Clusters::ScenesManagement::Id, Id, writable, ZCL_NODE_ID_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ScenesManagement::Id, Id, writable, ZCL_NODE_ID_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ScenesManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_NODE_ID_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -13518,7 +13710,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ScenesManagement::Id, Id, writable, ZCL_NODE_ID_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -13529,7 +13721,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -13543,7 +13735,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace SceneTableSize { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13559,7 +13751,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13569,10 +13761,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ScenesManagement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ScenesManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13589,7 +13782,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13605,7 +13798,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13615,10 +13808,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ScenesManagement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ScenesManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13635,7 +13829,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13651,7 +13845,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13661,10 +13855,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ScenesManagement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ScenesManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13687,7 +13882,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13703,7 +13898,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13713,10 +13908,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::HepaFilterMonitoring::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::HepaFilterMonitoring::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13739,7 +13935,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13755,7 +13951,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13765,11 +13961,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ActivatedCarbonFilterMonitoring::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ActivatedCarbonFilterMonitoring::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13792,7 +13988,7 @@ namespace Attributes { namespace SupportedSensitivityLevels { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13808,7 +14004,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13818,11 +14014,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanStateConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanStateConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13839,7 +14035,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace DefaultSensitivityLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -13855,7 +14051,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13865,11 +14061,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanStateConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanStateConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -13886,7 +14082,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace AlarmsActive { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -13903,7 +14099,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -13915,11 +14111,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanStateConfiguration::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanStateConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -13937,7 +14133,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace AlarmsSuppressed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -13954,7 +14150,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -13966,11 +14162,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanStateConfiguration::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanStateConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -13988,7 +14184,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace AlarmsEnabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -14005,7 +14201,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -14017,11 +14213,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanStateConfiguration::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanStateConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -14039,7 +14235,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace AlarmsSupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -14056,7 +14252,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -14068,11 +14264,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanStateConfiguration::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanStateConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -14090,7 +14286,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace SensorFault { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -14107,7 +14303,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -14119,11 +14315,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanStateConfiguration::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanStateConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -14141,7 +14337,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -14157,7 +14353,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -14167,11 +14363,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanStateConfiguration::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanStateConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -14188,7 +14384,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -14204,7 +14400,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -14214,11 +14410,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BooleanStateConfiguration::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BooleanStateConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -14241,7 +14437,7 @@ namespace Attributes { namespace OpenDuration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -14260,7 +14456,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14270,11 +14466,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14287,17 +14483,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -14306,7 +14502,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -14317,7 +14513,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -14331,7 +14527,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace DefaultOpenDuration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -14350,7 +14546,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14360,11 +14556,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14377,17 +14573,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -14396,7 +14592,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -14407,7 +14603,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -14421,7 +14617,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace AutoCloseTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -14440,7 +14636,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14450,11 +14646,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14467,17 +14663,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -14486,7 +14682,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -14497,7 +14693,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -14512,7 +14708,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace CurrentState { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -14531,9 +14727,8 @@ Get(chip::EndpointId endpoint, DataModel::Nullable; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14543,11 +14738,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ValveConfigurationAndControl::ValveStateEnum value) { using Traits = NumericAttributeTraits; @@ -14561,17 +14756,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -14581,7 +14776,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { @@ -14594,7 +14789,7 @@ Set(chip::EndpointId endpoint, } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) @@ -14610,7 +14805,7 @@ Set(chip::EndpointId endpoint, namespace TargetState { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -14629,9 +14824,8 @@ Get(chip::EndpointId endpoint, DataModel::Nullable; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14641,11 +14835,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ValveConfigurationAndControl::ValveStateEnum value) { using Traits = NumericAttributeTraits; @@ -14659,17 +14853,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -14679,7 +14873,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { @@ -14692,7 +14886,7 @@ Set(chip::EndpointId endpoint, } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) @@ -14707,7 +14901,7 @@ Set(chip::EndpointId endpoint, namespace CurrentLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -14726,7 +14920,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14736,11 +14930,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14753,17 +14947,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -14772,7 +14966,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -14783,7 +14977,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -14797,7 +14991,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace TargetLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -14816,7 +15010,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14826,11 +15020,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -14843,17 +15037,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -14862,7 +15056,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -14873,7 +15067,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -14887,7 +15081,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace DefaultOpenLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Percent * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::Percent * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -14903,7 +15097,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Percent return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -14913,11 +15107,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -14934,7 +15128,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent namespace ValveFault { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -14951,7 +15145,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -14963,11 +15157,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -14985,7 +15179,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace LevelStep { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15001,7 +15195,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15011,11 +15205,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15032,7 +15226,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15048,7 +15242,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15058,11 +15252,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15079,7 +15273,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15095,7 +15289,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15105,11 +15299,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ValveConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ValveConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15132,7 +15326,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15148,7 +15342,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15158,11 +15352,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalPowerMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalPowerMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15185,7 +15379,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15201,7 +15395,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15211,11 +15405,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalEnergyMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalEnergyMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15242,7 +15436,7 @@ namespace Attributes { namespace NumberOfLoadControlPrograms { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15258,7 +15452,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15268,11 +15462,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DemandResponseLoadControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DemandResponseLoadControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15289,7 +15483,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace NumberOfEventsPerProgram { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15305,7 +15499,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15315,11 +15509,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DemandResponseLoadControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DemandResponseLoadControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15336,7 +15530,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace NumberOfTransitions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15352,7 +15546,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15362,11 +15556,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DemandResponseLoadControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DemandResponseLoadControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15383,7 +15577,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace DefaultRandomStart { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15399,7 +15593,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15409,11 +15603,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DemandResponseLoadControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DemandResponseLoadControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15430,7 +15624,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace DefaultRandomDuration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15446,7 +15640,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15456,11 +15650,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DemandResponseLoadControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DemandResponseLoadControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15477,7 +15671,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15493,7 +15687,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15503,11 +15697,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DemandResponseLoadControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DemandResponseLoadControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15524,7 +15718,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15540,7 +15734,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15550,11 +15744,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DemandResponseLoadControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DemandResponseLoadControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15577,7 +15771,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15592,7 +15786,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15602,10 +15796,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Messages::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Messages::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15622,7 +15817,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15637,7 +15832,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15647,10 +15842,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Messages::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Messages::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15673,7 +15869,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15689,7 +15885,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15699,11 +15895,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DeviceEnergyManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15726,7 +15922,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15742,7 +15938,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15752,10 +15948,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvse::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EnergyEvse::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15778,7 +15975,7 @@ namespace Attributes { namespace CurrentEnergyBalance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15794,7 +15991,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15804,10 +16001,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyPreference::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EnergyPreference::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15824,7 +16022,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace CurrentLowPowerModeSensitivity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15840,7 +16038,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15850,10 +16048,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyPreference::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EnergyPreference::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15870,7 +16069,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15886,7 +16085,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15896,10 +16095,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyPreference::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EnergyPreference::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15916,7 +16116,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15932,7 +16132,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15942,10 +16142,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyPreference::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EnergyPreference::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15968,7 +16169,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -15984,7 +16185,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -15994,10 +16195,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PowerTopology::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PowerTopology::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -16020,7 +16222,7 @@ namespace Attributes { namespace StartUpMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16039,7 +16241,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16049,10 +16251,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvseMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EnergyEvseMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16065,16 +16268,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::EnergyEvseMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvseMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EnergyEvseMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -16083,7 +16287,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::EnergyEvseMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -16094,7 +16298,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -16108,7 +16312,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OnMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16127,7 +16331,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16137,10 +16341,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvseMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EnergyEvseMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16153,16 +16358,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::EnergyEvseMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvseMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EnergyEvseMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -16171,7 +16377,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::EnergyEvseMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -16182,7 +16388,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -16196,7 +16402,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16212,7 +16418,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -16222,10 +16428,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EnergyEvseMode::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EnergyEvseMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -16248,7 +16455,7 @@ namespace Attributes { namespace StartUpMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16267,7 +16474,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16277,10 +16484,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WaterHeaterMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WaterHeaterMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16293,16 +16501,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::WaterHeaterMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::WaterHeaterMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WaterHeaterMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -16311,7 +16520,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::WaterHeaterMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -16322,7 +16531,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -16336,7 +16545,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OnMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16355,7 +16564,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16365,10 +16574,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WaterHeaterMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WaterHeaterMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16381,16 +16591,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::WaterHeaterMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::WaterHeaterMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WaterHeaterMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -16399,7 +16610,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::WaterHeaterMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -16410,7 +16621,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -16424,7 +16635,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16440,7 +16651,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -16450,10 +16661,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WaterHeaterMode::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WaterHeaterMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -16476,7 +16688,7 @@ namespace Attributes { namespace StartUpMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16495,7 +16707,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16505,11 +16717,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16522,17 +16734,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -16541,7 +16753,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -16552,7 +16764,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -16566,7 +16778,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OnMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16585,7 +16797,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16595,11 +16807,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16612,17 +16824,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -16631,7 +16843,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -16642,7 +16854,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -16656,7 +16868,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16672,7 +16884,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -16682,11 +16894,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DeviceEnergyManagementMode::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -16709,7 +16921,7 @@ namespace Attributes { namespace LockState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; @@ -16728,7 +16940,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockState value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockState value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -16739,10 +16951,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockState value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockState value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16755,16 +16968,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -16773,7 +16987,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { @@ -16785,7 +16999,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) @@ -16800,7 +17014,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace LockType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16815,7 +17029,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -16826,10 +17040,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -16846,7 +17061,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace ActuatorEnabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16861,7 +17076,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -16871,10 +17086,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -16891,7 +17107,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace DoorState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; @@ -16910,7 +17126,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DoorStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DoorStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -16921,10 +17137,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DoorStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DoorStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -16937,16 +17154,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -16955,7 +17173,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { @@ -16967,7 +17185,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) @@ -16982,7 +17200,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace DoorOpenEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -16997,7 +17215,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17007,10 +17225,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17027,7 +17246,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace DoorClosedEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17042,7 +17261,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17052,10 +17271,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17072,7 +17292,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace OpenPeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17087,7 +17307,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17097,10 +17317,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17117,7 +17338,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace NumberOfTotalUsersSupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17132,7 +17353,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17142,10 +17363,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17162,7 +17384,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace NumberOfPINUsersSupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17177,7 +17399,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17187,10 +17409,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17207,7 +17430,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace NumberOfRFIDUsersSupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17222,7 +17445,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17232,10 +17455,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17252,7 +17476,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace NumberOfWeekDaySchedulesSupportedPerUser { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17267,7 +17491,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17277,10 +17501,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17297,7 +17522,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace NumberOfYearDaySchedulesSupportedPerUser { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17312,7 +17537,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17322,10 +17547,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17342,7 +17568,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace NumberOfHolidaySchedulesSupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17357,7 +17583,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17367,10 +17593,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17387,7 +17614,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace MaxPINCodeLength { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17402,7 +17629,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17412,10 +17639,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17432,7 +17660,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace MinPINCodeLength { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17447,7 +17675,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17457,10 +17685,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17477,7 +17706,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace MaxRFIDCodeLength { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17492,7 +17721,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17502,10 +17731,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17522,7 +17752,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace MinRFIDCodeLength { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17537,7 +17767,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17547,10 +17777,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17567,7 +17798,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace CredentialRulesSupport { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -17583,9 +17814,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17595,10 +17825,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -17616,7 +17847,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace NumberOfCredentialsSupportedPerUser { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17631,7 +17862,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17641,10 +17872,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17661,7 +17893,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace Language { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[3 + 1]; Protocols::InteractionModel::Status status = @@ -17679,7 +17911,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(3 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -17688,10 +17920,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(3 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -17707,7 +17940,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace LEDSettings { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17722,7 +17955,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17732,10 +17965,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17752,7 +17986,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace AutoRelockTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17767,7 +18001,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17777,10 +18011,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17797,7 +18032,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace SoundVolume { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17812,7 +18047,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17822,10 +18057,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17842,7 +18078,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace OperatingMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -17857,7 +18093,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -17868,10 +18104,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -17888,7 +18125,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace SupportedOperatingModes { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -17904,7 +18141,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -17916,10 +18153,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -17937,7 +18175,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace DefaultConfigurationRegister { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -17953,7 +18191,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -17965,10 +18203,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -17986,7 +18225,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace EnableLocalProgramming { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18001,7 +18240,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18011,10 +18250,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18031,7 +18271,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace EnableOneTouchLocking { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18046,7 +18286,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18056,10 +18296,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18076,7 +18317,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace EnableInsideStatusLED { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18091,7 +18332,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18101,10 +18342,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18121,7 +18363,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace EnablePrivacyModeButton { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18136,7 +18378,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18146,10 +18388,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18166,7 +18409,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace LocalProgrammingFeatures { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -18182,7 +18425,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -18194,10 +18437,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -18215,7 +18459,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace WrongCodeEntryLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18230,7 +18474,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18240,10 +18484,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18260,7 +18505,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace UserCodeTemporaryDisableTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18275,7 +18520,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18285,10 +18530,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18305,7 +18551,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace SendPINOverTheAir { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18320,7 +18566,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18330,10 +18576,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18350,7 +18597,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace RequirePINforRemoteOperation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18365,7 +18612,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18375,10 +18622,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18395,7 +18643,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace ExpiringUserTimeout { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18410,7 +18658,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18420,10 +18668,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18440,7 +18689,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18455,7 +18704,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18465,10 +18714,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18485,7 +18735,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18500,7 +18750,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18510,10 +18760,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::DoorLock::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::DoorLock::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18536,7 +18787,7 @@ namespace Attributes { namespace Type { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::Type * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::WindowCovering::Type * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18552,7 +18803,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::Type value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::WindowCovering::Type value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -18563,10 +18814,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::Type value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::WindowCovering::Type value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18583,7 +18835,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace PhysicalClosedLimitLift { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18599,7 +18851,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18609,10 +18861,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18629,7 +18882,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace PhysicalClosedLimitTilt { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18645,7 +18898,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18655,10 +18908,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18675,7 +18929,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace CurrentPositionLift { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18694,7 +18948,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -18704,10 +18958,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -18720,16 +18975,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -18738,7 +18994,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -18749,7 +19005,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -18763,7 +19019,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace CurrentPositionTilt { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18782,7 +19038,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -18792,10 +19048,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -18808,16 +19065,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -18826,7 +19084,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -18837,7 +19095,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -18851,7 +19109,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NumberOfActuationsLift { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18867,7 +19125,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18877,10 +19135,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18897,7 +19156,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace NumberOfActuationsTilt { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -18913,7 +19172,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18923,10 +19182,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18943,7 +19203,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ConfigStatus { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -18960,8 +19220,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18971,11 +19231,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -18992,7 +19252,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace CurrentPositionLiftPercentage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19011,7 +19271,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19021,10 +19281,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19037,16 +19298,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -19055,7 +19317,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -19066,7 +19328,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -19080,7 +19342,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace CurrentPositionTiltPercentage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19099,7 +19361,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19109,10 +19371,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19125,16 +19388,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -19143,7 +19407,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -19154,7 +19418,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -19168,7 +19432,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OperationalStatus { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -19185,9 +19449,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19197,10 +19460,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -19218,7 +19482,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace TargetPositionLiftPercent100ths { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19237,7 +19501,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19247,10 +19511,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19263,16 +19528,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -19281,8 +19547,8 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, + MarkAttributeDirty markDirty) { if (value.IsNull()) { @@ -19292,8 +19558,7 @@ Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -19307,7 +19572,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace TargetPositionTiltPercent100ths { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19326,7 +19591,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19336,10 +19601,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19352,16 +19618,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -19370,8 +19637,8 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, + MarkAttributeDirty markDirty) { if (value.IsNull()) { @@ -19381,8 +19648,7 @@ Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -19396,7 +19662,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace EndProductType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19412,7 +19678,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -19423,10 +19689,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19443,7 +19710,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace CurrentPositionLiftPercent100ths { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19462,7 +19729,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19472,10 +19739,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19488,16 +19756,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -19506,8 +19775,8 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, + MarkAttributeDirty markDirty) { if (value.IsNull()) { @@ -19517,8 +19786,7 @@ Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -19532,7 +19800,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace CurrentPositionTiltPercent100ths { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19551,7 +19819,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19561,10 +19829,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -19577,16 +19846,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -19595,8 +19865,8 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_PERCENT100THS_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, + MarkAttributeDirty markDirty) { if (value.IsNull()) { @@ -19606,8 +19876,7 @@ Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -19621,7 +19890,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace InstalledOpenLimitLift { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19637,7 +19906,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19647,10 +19916,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19667,7 +19937,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace InstalledClosedLimitLift { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19683,7 +19953,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19693,10 +19963,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19713,7 +19984,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace InstalledOpenLimitTilt { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19729,7 +20000,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19739,10 +20010,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19759,7 +20031,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace InstalledClosedLimitTilt { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19775,7 +20047,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19785,10 +20057,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19805,7 +20078,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Mode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::BitMask * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -19821,7 +20094,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::BitMask return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; @@ -19832,10 +20105,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19852,7 +20126,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask namespace SafetyStatus { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -19869,8 +20143,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19880,11 +20154,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19901,7 +20175,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19917,7 +20191,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19927,10 +20201,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19947,7 +20222,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -19963,7 +20238,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19973,10 +20248,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WindowCovering::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WindowCovering::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -19999,7 +20275,7 @@ namespace Attributes { namespace BarrierMovingState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20015,7 +20291,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20025,10 +20301,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20045,7 +20322,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace BarrierSafetyStatus { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20061,7 +20338,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20071,10 +20348,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20091,7 +20369,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace BarrierCapabilities { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20107,7 +20385,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20117,10 +20395,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20137,7 +20416,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace BarrierOpenEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20153,7 +20432,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20163,10 +20442,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20183,7 +20463,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace BarrierCloseEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20199,7 +20479,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20209,10 +20489,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20229,7 +20510,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace BarrierCommandOpenEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20245,7 +20526,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20255,10 +20536,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20275,7 +20557,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace BarrierCommandCloseEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20291,7 +20573,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20301,10 +20583,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20321,7 +20604,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace BarrierOpenPeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20337,7 +20620,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20347,10 +20630,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20367,7 +20651,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace BarrierClosePeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20383,7 +20667,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20393,10 +20677,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20413,7 +20698,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace BarrierPosition { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20429,7 +20714,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20439,10 +20724,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20459,7 +20745,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20475,7 +20761,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20485,10 +20771,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20505,7 +20792,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20521,7 +20808,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20531,10 +20818,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BarrierControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BarrierControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20557,7 +20845,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20573,7 +20861,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20583,10 +20871,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ServiceArea::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ServiceArea::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -20609,7 +20898,7 @@ namespace Attributes { namespace MaxPressure { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20628,7 +20917,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -20638,11 +20927,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -20655,17 +20944,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -20674,7 +20963,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -20685,7 +20974,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -20699,7 +20988,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxSpeed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20718,7 +21007,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -20728,11 +21017,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -20745,17 +21034,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -20764,7 +21053,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -20775,7 +21064,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -20789,7 +21078,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxFlow { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20808,7 +21097,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -20818,11 +21107,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -20835,17 +21124,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -20854,7 +21143,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -20865,7 +21154,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -20879,7 +21168,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinConstPressure { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20898,7 +21187,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -20908,11 +21197,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -20925,17 +21214,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -20944,7 +21233,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -20955,7 +21244,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -20969,7 +21258,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxConstPressure { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -20988,7 +21277,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -20998,11 +21287,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21015,17 +21304,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -21034,7 +21323,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -21045,7 +21334,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -21059,7 +21348,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinCompPressure { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -21078,7 +21367,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21088,11 +21377,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21105,17 +21394,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -21124,7 +21413,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -21135,7 +21424,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -21149,7 +21438,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxCompPressure { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -21168,7 +21457,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21178,11 +21467,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21195,17 +21484,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -21214,7 +21503,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -21225,7 +21514,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -21239,7 +21528,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinConstSpeed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -21258,7 +21547,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21268,11 +21557,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21285,17 +21574,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -21304,7 +21593,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -21315,7 +21604,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -21329,7 +21618,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxConstSpeed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -21348,7 +21637,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21358,11 +21647,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21375,17 +21664,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -21394,7 +21683,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -21405,7 +21694,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -21419,7 +21708,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinConstFlow { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -21438,7 +21727,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21448,11 +21737,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21465,17 +21754,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -21484,7 +21773,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -21495,7 +21784,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -21509,7 +21798,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxConstFlow { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -21528,7 +21817,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21538,11 +21827,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21555,17 +21844,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -21574,7 +21863,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -21585,7 +21874,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -21599,7 +21888,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinConstTemp { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -21618,7 +21907,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21628,11 +21917,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21645,17 +21934,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -21664,7 +21953,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -21675,7 +21964,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -21689,7 +21978,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxConstTemp { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -21708,7 +21997,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21718,11 +22007,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21735,17 +22024,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -21754,7 +22043,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -21765,7 +22054,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -21779,7 +22068,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace PumpStatus { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -21796,7 +22085,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -21808,11 +22097,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -21830,7 +22119,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace EffectiveOperationMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum * value) { using Traits = NumericAttributeTraits; @@ -21847,9 +22136,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -21859,11 +22147,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value) { using Traits = NumericAttributeTraits; @@ -21881,7 +22169,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace EffectiveControlMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum * value) { using Traits = NumericAttributeTraits; @@ -21898,9 +22186,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -21910,11 +22197,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value) { using Traits = NumericAttributeTraits; @@ -21932,7 +22219,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace Capacity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -21951,7 +22238,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21961,11 +22248,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -21978,17 +22265,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -21997,7 +22284,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -22008,7 +22295,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -22022,7 +22309,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Speed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -22041,7 +22328,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22051,11 +22338,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22068,17 +22355,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -22087,7 +22374,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -22098,7 +22385,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -22112,7 +22399,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace LifetimeRunningHours { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -22131,7 +22418,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22141,11 +22428,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22158,17 +22445,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -22177,7 +22464,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -22188,7 +22475,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -22202,7 +22489,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Power { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -22221,7 +22508,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22231,11 +22518,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22248,17 +22535,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -22267,7 +22554,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -22278,7 +22565,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -22292,7 +22579,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace LifetimeEnergyConsumed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -22311,7 +22598,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22321,11 +22608,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22338,17 +22625,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -22357,7 +22644,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -22368,7 +22655,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -22382,7 +22669,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OperationMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum * value) { using Traits = NumericAttributeTraits; @@ -22399,9 +22686,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22411,11 +22697,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value) { using Traits = NumericAttributeTraits; @@ -22433,7 +22719,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace ControlMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum * value) { using Traits = NumericAttributeTraits; @@ -22450,9 +22736,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22462,11 +22747,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value) { using Traits = NumericAttributeTraits; @@ -22484,7 +22769,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -22500,7 +22785,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22510,11 +22795,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22531,7 +22816,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -22547,7 +22832,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22557,11 +22842,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PumpConfigurationAndControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PumpConfigurationAndControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22584,7 +22869,7 @@ namespace Attributes { namespace LocalTemperature { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -22603,7 +22888,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22613,10 +22898,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22629,16 +22915,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -22647,7 +22934,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -22658,7 +22945,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -22672,7 +22959,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OutdoorTemperature { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -22691,7 +22978,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22701,10 +22988,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -22717,16 +23005,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -22735,7 +23024,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -22746,7 +23035,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -22760,7 +23049,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Occupancy { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -22777,8 +23066,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22788,11 +23077,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22809,7 +23098,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace AbsMinHeatSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -22825,7 +23114,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22835,10 +23124,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22855,7 +23145,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace AbsMaxHeatSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -22871,7 +23161,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22881,10 +23171,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22901,7 +23192,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace AbsMinCoolSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -22917,7 +23208,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22927,10 +23218,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22947,7 +23239,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace AbsMaxCoolSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -22963,7 +23255,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22973,10 +23265,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -22993,7 +23286,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace PICoolingDemand { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23009,7 +23302,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23019,10 +23312,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23039,7 +23333,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace PIHeatingDemand { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23055,7 +23349,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23065,10 +23359,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23085,7 +23380,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace HVACSystemTypeConfiguration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -23102,9 +23397,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23114,10 +23408,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -23135,7 +23430,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace LocalTemperatureCalibration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23151,7 +23446,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23161,10 +23456,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23181,7 +23477,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) namespace OccupiedCoolingSetpoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23197,7 +23493,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23207,10 +23503,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23227,7 +23524,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace OccupiedHeatingSetpoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23243,7 +23540,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23253,10 +23550,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23273,7 +23571,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace UnoccupiedCoolingSetpoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23289,7 +23587,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23299,10 +23597,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23319,7 +23618,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace UnoccupiedHeatingSetpoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23335,7 +23634,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23345,10 +23644,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23365,7 +23665,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MinHeatSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23381,7 +23681,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23391,10 +23691,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23411,7 +23712,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MaxHeatSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23427,7 +23728,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23437,10 +23738,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23457,7 +23759,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MinCoolSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23473,7 +23775,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23483,10 +23785,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23503,7 +23806,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MaxCoolSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23519,7 +23822,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23529,10 +23832,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23549,7 +23853,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MinSetpointDeadBand { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23565,7 +23869,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23575,10 +23879,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23595,7 +23900,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) namespace RemoteSensing { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -23612,9 +23917,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23624,10 +23928,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -23645,7 +23950,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace ControlSequenceOfOperation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum * value) { using Traits = NumericAttributeTraits; @@ -23662,8 +23967,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23673,11 +23978,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ControlSequenceO Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23694,7 +23999,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace SystemMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23710,7 +24015,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -23721,10 +24026,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23741,8 +24047,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace ThermostatRunningMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::Thermostat::ThermostatRunningModeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23758,7 +24063,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -23769,10 +24074,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23789,7 +24095,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace StartOfWeek { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23805,7 +24111,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -23816,10 +24122,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23836,7 +24143,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace NumberOfWeeklyTransitions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23852,7 +24159,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23862,10 +24169,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23882,7 +24190,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace NumberOfDailyTransitions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23898,7 +24206,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23908,10 +24216,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23928,8 +24237,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace TemperatureSetpointHold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23945,8 +24253,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23956,11 +24264,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::TemperatureSetpo Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -23977,7 +24285,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace TemperatureSetpointHoldDuration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -23996,7 +24304,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24006,10 +24314,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24022,16 +24331,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -24040,7 +24350,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -24051,7 +24361,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -24065,7 +24375,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace ThermostatProgrammingOperationMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -24082,7 +24392,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -24094,10 +24404,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -24115,7 +24426,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace ThermostatRunningState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -24132,8 +24443,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -24143,11 +24454,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -24164,8 +24475,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace SetpointChangeSource { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::Thermostat::SetpointChangeSourceEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24181,7 +24491,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -24192,10 +24502,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -24212,7 +24523,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace SetpointChangeAmount { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24231,7 +24542,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24241,10 +24552,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24257,16 +24569,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -24275,7 +24588,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -24286,7 +24599,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -24300,7 +24613,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace SetpointChangeSourceTimestamp { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24316,7 +24629,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -24326,10 +24639,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -24346,7 +24660,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace OccupiedSetback { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24365,7 +24679,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24375,10 +24689,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24391,16 +24706,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -24409,7 +24725,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -24420,7 +24736,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -24434,7 +24750,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OccupiedSetbackMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24453,7 +24769,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24463,10 +24779,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24479,16 +24796,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -24497,7 +24815,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -24508,7 +24826,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -24522,7 +24840,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace OccupiedSetbackMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24541,7 +24859,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24551,10 +24869,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24567,16 +24886,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -24585,7 +24905,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -24596,7 +24916,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -24610,7 +24930,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace UnoccupiedSetback { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24629,7 +24949,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24639,10 +24959,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24655,16 +24976,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -24673,7 +24995,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -24684,7 +25006,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -24698,7 +25020,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace UnoccupiedSetbackMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24717,7 +25039,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24727,10 +25049,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24743,16 +25066,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -24761,7 +25085,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -24772,7 +25096,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -24786,7 +25110,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace UnoccupiedSetbackMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24805,7 +25129,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24815,10 +25139,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -24831,16 +25156,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -24849,7 +25175,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -24860,7 +25186,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -24874,7 +25200,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace EmergencyHeatDelta { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24890,7 +25216,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -24900,10 +25226,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -24920,7 +25247,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace ACType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24936,7 +25263,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -24947,10 +25274,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -24967,7 +25295,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace ACCapacity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -24983,7 +25311,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -24993,10 +25321,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25013,7 +25342,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ACRefrigerantType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25029,7 +25358,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -25040,10 +25369,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25060,7 +25390,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace ACCompressorType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25076,7 +25406,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -25087,10 +25417,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25107,7 +25438,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace ACErrorCode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -25124,9 +25455,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25136,10 +25466,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -25157,7 +25488,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace ACLouverPosition { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25173,7 +25504,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -25184,10 +25515,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25204,7 +25536,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace ACCoilTemperature { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25223,7 +25555,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -25233,10 +25565,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -25249,16 +25582,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -25267,7 +25601,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -25278,7 +25612,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -25292,7 +25626,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace ACCapacityformat { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25308,7 +25642,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -25319,10 +25653,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25339,7 +25674,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace NumberOfPresets { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25355,7 +25690,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25365,10 +25700,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25385,7 +25721,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace NumberOfSchedules { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25401,7 +25737,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25411,10 +25747,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25431,7 +25768,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace NumberOfScheduleTransitions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25447,7 +25784,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25457,10 +25794,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25477,7 +25815,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace NumberOfScheduleTransitionPerDay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25496,7 +25834,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -25506,10 +25844,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -25522,16 +25861,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -25540,7 +25880,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -25551,7 +25891,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -25565,7 +25905,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace ActivePresetHandle { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { if (value.IsNull()) { @@ -25591,7 +25931,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -25600,10 +25940,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -25615,19 +25956,20 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { uint8_t zclString[1] = { 0xFF }; - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { uint8_t zclString[1] = { 0xFF }; return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -25638,7 +25980,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -25652,7 +25994,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace ActiveScheduleHandle { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { if (value.IsNull()) { @@ -25678,7 +26020,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -25687,10 +26029,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -25702,19 +26045,20 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { uint8_t zclString[1] = { 0xFF }; - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { uint8_t zclString[1] = { 0xFF }; return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -25725,7 +26069,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -25739,7 +26083,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace SetpointHoldExpiryTimestamp { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25758,7 +26102,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -25768,10 +26112,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -25784,16 +26129,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -25802,7 +26148,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -25813,7 +26159,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -25827,7 +26173,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25843,7 +26189,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25853,10 +26199,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25873,7 +26220,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25889,7 +26236,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25899,10 +26246,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Thermostat::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25925,7 +26273,7 @@ namespace Attributes { namespace FanMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25941,7 +26289,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -25952,10 +26300,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -25972,7 +26321,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace FanModeSequence { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -25988,7 +26337,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -25999,10 +26348,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26019,7 +26369,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace PercentSetting { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26038,7 +26388,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -26048,10 +26398,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -26064,16 +26415,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -26082,7 +26434,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -26093,7 +26445,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -26107,7 +26459,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace PercentCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Percent * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::Percent * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26123,7 +26475,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Percent return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26133,10 +26485,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_PERCENT_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_PERCENT_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26153,7 +26506,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent namespace SpeedMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26169,7 +26522,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26179,10 +26532,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26199,7 +26553,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace SpeedSetting { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26218,7 +26572,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -26228,10 +26582,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -26244,16 +26599,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -26262,7 +26618,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -26273,7 +26629,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -26287,7 +26643,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace SpeedCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26303,7 +26659,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26313,10 +26669,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26333,8 +26690,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace RockSupport { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::BitMask * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -26350,7 +26706,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; @@ -26361,10 +26717,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26381,8 +26738,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask namespace RockSetting { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::BitMask * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -26398,7 +26754,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; @@ -26409,10 +26765,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26429,8 +26786,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask namespace WindSupport { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::BitMask * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -26446,7 +26802,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; @@ -26457,10 +26813,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26477,8 +26834,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask namespace WindSetting { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::BitMask * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -26494,7 +26850,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; @@ -26505,10 +26861,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26525,7 +26882,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask namespace AirflowDirection { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26541,7 +26898,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -26552,10 +26909,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26572,7 +26930,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26588,7 +26946,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26598,10 +26956,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26618,7 +26977,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26634,7 +26993,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26644,10 +27003,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FanControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FanControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26671,7 +27031,7 @@ namespace Attributes { namespace TemperatureDisplayMode { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::TemperatureDisplayModeEnum * value) +Get(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::TemperatureDisplayModeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26687,7 +27047,7 @@ Get(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfi return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::TemperatureDisplayModeEnum value, MarkAttributeDirty markDirty) { @@ -26699,11 +27059,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ThermostatUserInterfaceConfiguration::Id, Id, writable, - ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ThermostatUserInterfaceConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::TemperatureDisplayModeEnum value) { using Traits = NumericAttributeTraits; @@ -26722,7 +27082,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace KeypadLockout { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::KeypadLockoutEnum * value) { using Traits = NumericAttributeTraits; @@ -26739,7 +27099,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::KeypadLockoutEnum value, MarkAttributeDirty markDirty) { @@ -26751,11 +27111,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ThermostatUserInterfaceConfiguration::Id, Id, writable, - ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ThermostatUserInterfaceConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::KeypadLockoutEnum value) { using Traits = NumericAttributeTraits; @@ -26775,7 +27135,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace ScheduleProgrammingVisibility { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum * value) +Get(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum * value) { using Traits = NumericAttributeTraits; @@ -26793,7 +27153,7 @@ Get(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfi } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum value, +Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum value, MarkAttributeDirty markDirty) { using Traits = @@ -26805,12 +27165,12 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfi Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ThermostatUserInterfaceConfiguration::Id, Id, writable, - ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ThermostatUserInterfaceConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum value) +Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum value) { using Traits = NumericAttributeTraits; @@ -26829,7 +27189,7 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfi namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26845,7 +27205,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26855,11 +27215,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ThermostatUserInterfaceConfiguration::Id, Id, writable, - ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ThermostatUserInterfaceConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26877,7 +27237,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26893,7 +27253,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26903,11 +27263,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ThermostatUserInterfaceConfiguration::Id, Id, writable, - ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ThermostatUserInterfaceConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26931,7 +27291,7 @@ namespace Attributes { namespace CurrentHue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26947,7 +27307,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26957,10 +27317,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -26977,7 +27338,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace CurrentSaturation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -26993,7 +27354,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27003,10 +27364,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27023,7 +27385,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace RemainingTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27039,7 +27401,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27049,10 +27411,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27069,7 +27432,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace CurrentX { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27085,7 +27448,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27095,10 +27458,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27115,7 +27479,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace CurrentY { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27131,7 +27495,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27141,10 +27505,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27161,7 +27526,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace DriftCompensation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27177,7 +27542,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -27188,10 +27553,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27208,7 +27574,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace CompensationText { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[254 + 1]; Protocols::InteractionModel::Status status = @@ -27226,7 +27592,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(254 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -27235,10 +27601,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(254 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -27254,7 +27621,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace ColorTemperatureMireds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27270,7 +27637,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27280,10 +27647,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27300,7 +27668,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27316,7 +27684,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -27327,10 +27695,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27347,7 +27716,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace Options { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -27364,8 +27733,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27375,11 +27744,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27396,7 +27765,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace NumberOfPrimaries { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27415,7 +27784,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -27425,10 +27794,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -27441,16 +27811,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -27459,7 +27830,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -27470,7 +27841,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -27484,7 +27855,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Primary1X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27500,7 +27871,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27510,10 +27881,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27530,7 +27902,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary1Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27546,7 +27918,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27556,10 +27928,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27576,7 +27949,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary1Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27595,7 +27968,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -27605,10 +27978,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -27621,16 +27995,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -27639,7 +28014,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -27650,7 +28025,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -27664,7 +28039,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Primary2X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27680,7 +28055,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27690,10 +28065,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27710,7 +28086,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary2Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27726,7 +28102,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27736,10 +28112,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27756,7 +28133,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary2Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27775,7 +28152,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -27785,10 +28162,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -27801,16 +28179,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -27819,7 +28198,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -27830,7 +28209,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -27844,7 +28223,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Primary3X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27860,7 +28239,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27870,10 +28249,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27890,7 +28270,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary3Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27906,7 +28286,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27916,10 +28296,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -27936,7 +28317,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary3Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -27955,7 +28336,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -27965,10 +28346,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -27981,16 +28363,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -27999,7 +28382,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -28010,7 +28393,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -28024,7 +28407,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Primary4X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28040,7 +28423,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28050,10 +28433,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28070,7 +28454,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary4Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28086,7 +28470,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28096,10 +28480,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28116,7 +28501,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary4Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28135,7 +28520,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -28145,10 +28530,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -28161,16 +28547,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -28179,7 +28566,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -28190,7 +28577,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -28204,7 +28591,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Primary5X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28220,7 +28607,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28230,10 +28617,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28250,7 +28638,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary5Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28266,7 +28654,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28276,10 +28664,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28296,7 +28685,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary5Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28315,7 +28704,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -28325,10 +28714,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -28341,16 +28731,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -28359,7 +28750,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -28370,7 +28761,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -28384,7 +28775,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Primary6X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28400,7 +28791,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28410,10 +28801,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28430,7 +28822,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary6Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28446,7 +28838,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28456,10 +28848,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28476,7 +28869,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Primary6Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28495,7 +28888,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -28505,10 +28898,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -28521,16 +28915,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -28539,7 +28934,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -28550,7 +28945,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -28564,7 +28959,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace WhitePointX { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28580,7 +28975,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28590,10 +28985,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28610,7 +29006,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace WhitePointY { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28626,7 +29022,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28636,10 +29032,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28656,7 +29053,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorPointRX { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28672,7 +29069,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28682,10 +29079,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28702,7 +29100,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorPointRY { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28718,7 +29116,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28728,10 +29126,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28748,7 +29147,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorPointRIntensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28767,7 +29166,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -28777,10 +29176,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -28793,16 +29193,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -28811,7 +29212,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -28822,7 +29223,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -28836,7 +29237,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace ColorPointGX { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28852,7 +29253,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28862,10 +29263,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28882,7 +29284,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorPointGY { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28898,7 +29300,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28908,10 +29310,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -28928,7 +29331,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorPointGIntensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -28947,7 +29350,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -28957,10 +29360,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -28973,16 +29377,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -28991,7 +29396,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -29002,7 +29407,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -29016,7 +29421,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace ColorPointBX { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29032,7 +29437,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29042,10 +29447,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29062,7 +29468,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorPointBY { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29078,7 +29484,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29088,10 +29494,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29108,7 +29515,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorPointBIntensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29127,7 +29534,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -29137,10 +29544,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -29153,16 +29561,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -29171,7 +29580,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -29182,7 +29591,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -29196,7 +29605,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace EnhancedCurrentHue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29212,7 +29621,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29222,10 +29631,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29242,7 +29652,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace EnhancedColorMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29258,7 +29668,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -29269,10 +29679,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29289,7 +29700,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace ColorLoopActive { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29305,7 +29716,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29315,10 +29726,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29335,7 +29747,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace ColorLoopDirection { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29351,7 +29763,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29361,10 +29773,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29381,7 +29794,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace ColorLoopTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29397,7 +29810,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29407,10 +29820,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29427,7 +29841,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorLoopStartEnhancedHue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29443,7 +29857,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29453,10 +29867,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29473,7 +29888,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorLoopStoredEnhancedHue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29489,7 +29904,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29499,10 +29914,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29519,7 +29935,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorCapabilities { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -29536,7 +29952,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -29548,10 +29964,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -29569,7 +29986,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace ColorTempPhysicalMinMireds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29585,7 +30002,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29595,10 +30012,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29615,7 +30033,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ColorTempPhysicalMaxMireds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29631,7 +30049,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29641,10 +30059,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29661,7 +30080,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace CoupleColorTempToLevelMinMireds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29677,7 +30096,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29687,10 +30106,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29707,7 +30127,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace StartUpColorTemperatureMireds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29726,7 +30146,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -29736,10 +30156,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -29752,16 +30173,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -29770,7 +30192,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -29781,7 +30203,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -29795,7 +30217,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29811,7 +30233,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29821,10 +30243,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29841,7 +30264,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29857,7 +30280,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29867,10 +30290,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ColorControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29893,7 +30317,7 @@ namespace Attributes { namespace PhysicalMinLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29909,7 +30333,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29919,10 +30343,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29939,7 +30364,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace PhysicalMaxLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -29955,7 +30380,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29965,10 +30390,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -29985,7 +30411,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace BallastStatus { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -30002,7 +30428,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -30014,10 +30440,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -30035,7 +30462,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace MinLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -30051,7 +30478,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -30061,10 +30488,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -30081,7 +30509,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace MaxLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -30097,7 +30525,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -30107,10 +30535,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -30127,7 +30556,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace IntrinsicBallastFactor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -30146,7 +30575,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30156,10 +30585,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30172,16 +30602,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -30190,7 +30621,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -30201,7 +30632,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -30215,7 +30646,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace BallastFactorAdjustment { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -30234,7 +30665,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30244,10 +30675,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30260,16 +30692,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -30278,7 +30711,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -30289,7 +30722,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -30303,7 +30736,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace LampQuantity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -30319,7 +30752,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -30329,10 +30762,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -30349,7 +30783,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace LampType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[16 + 1]; Protocols::InteractionModel::Status status = @@ -30367,7 +30801,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -30376,11 +30810,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -30396,7 +30830,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace LampManufacturer { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[16 + 1]; Protocols::InteractionModel::Status status = @@ -30414,7 +30848,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -30423,11 +30857,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -30443,7 +30877,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace LampRatedHours { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -30462,7 +30896,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30472,10 +30906,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30488,16 +30923,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -30506,7 +30942,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -30517,7 +30953,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -30531,7 +30967,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace LampBurnHours { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -30550,7 +30986,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30560,10 +30996,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30576,16 +31013,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -30594,7 +31032,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -30605,7 +31043,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -30619,7 +31057,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace LampAlarmMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -30636,7 +31074,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -30648,10 +31086,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -30669,7 +31108,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace LampBurnHoursTripPoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -30688,7 +31127,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30698,10 +31137,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30714,16 +31154,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -30732,7 +31173,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -30743,7 +31184,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -30757,7 +31198,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -30773,7 +31214,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -30783,11 +31224,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -30804,7 +31245,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -30820,7 +31261,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -30830,10 +31271,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::BallastConfiguration::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::BallastConfiguration::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -30856,7 +31298,7 @@ namespace Attributes { namespace MeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -30875,7 +31317,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30885,11 +31327,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30902,17 +31344,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -30921,7 +31363,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -30932,7 +31374,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -30946,7 +31388,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -30965,7 +31407,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30975,11 +31417,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -30992,17 +31434,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -31011,7 +31453,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -31022,7 +31464,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -31036,7 +31478,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31055,7 +31497,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31065,11 +31507,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31082,17 +31524,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -31101,7 +31543,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -31112,7 +31554,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -31126,7 +31568,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Tolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31142,7 +31584,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31152,11 +31594,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31174,7 +31616,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace LightSensorType { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31193,8 +31635,8 @@ Get(chip::EndpointId endpoint, DataModel::Nullable; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31204,11 +31646,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::IlluminanceMeasurement::Ligh Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::IlluminanceMeasurement::LightSensorTypeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::IlluminanceMeasurement::LightSensorTypeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31221,16 +31663,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -31240,7 +31683,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { @@ -31253,7 +31696,7 @@ Set(chip::EndpointId endpoint, } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) @@ -31268,7 +31711,7 @@ Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31284,7 +31727,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31294,11 +31737,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31315,7 +31758,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31331,7 +31774,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31341,11 +31784,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::IlluminanceMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::IlluminanceMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31368,7 +31811,7 @@ namespace Attributes { namespace MeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31387,7 +31830,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31397,11 +31840,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31414,17 +31857,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -31433,7 +31876,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -31444,7 +31887,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -31458,7 +31901,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31477,7 +31920,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31487,11 +31930,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31504,17 +31947,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -31523,7 +31966,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -31534,7 +31977,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -31548,7 +31991,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31567,7 +32010,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31577,11 +32020,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31594,17 +32037,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -31613,7 +32056,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -31624,7 +32067,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -31638,7 +32081,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Tolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31654,7 +32097,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31664,11 +32107,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31685,7 +32128,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31701,7 +32144,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31711,11 +32154,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31732,7 +32175,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31748,7 +32191,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31758,11 +32201,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TemperatureMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TemperatureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -31785,7 +32228,7 @@ namespace Attributes { namespace MeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31804,7 +32247,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31814,10 +32257,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31830,16 +32274,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -31848,7 +32293,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -31859,7 +32304,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -31873,7 +32318,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31892,7 +32337,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31902,10 +32347,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31918,16 +32364,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -31936,7 +32383,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -31947,7 +32394,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -31961,7 +32408,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -31980,7 +32427,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -31990,10 +32437,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32006,16 +32454,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -32024,7 +32473,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -32035,7 +32484,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -32049,7 +32498,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Tolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32065,7 +32514,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32075,10 +32524,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32095,7 +32545,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ScaledValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32114,7 +32564,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32124,10 +32574,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32140,16 +32591,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -32158,7 +32610,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -32169,7 +32621,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -32183,7 +32635,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinScaledValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32202,7 +32654,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32212,10 +32664,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32228,16 +32681,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -32246,7 +32700,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -32257,7 +32711,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -32271,7 +32725,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxScaledValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32290,7 +32744,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32300,10 +32754,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32316,16 +32771,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -32334,7 +32790,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -32345,7 +32801,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -32359,7 +32815,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace ScaledTolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32375,7 +32831,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32385,10 +32841,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32405,7 +32862,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Scale { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32421,7 +32878,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32431,10 +32888,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32451,7 +32909,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32467,7 +32925,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32477,10 +32935,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32497,7 +32956,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32513,7 +32972,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32523,10 +32982,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::PressureMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::PressureMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32549,7 +33009,7 @@ namespace Attributes { namespace MeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32568,7 +33028,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32578,10 +33038,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FlowMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32594,16 +33055,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FlowMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -32612,7 +33074,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -32623,7 +33085,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -32637,7 +33099,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32656,7 +33118,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32666,10 +33128,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FlowMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32682,16 +33145,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FlowMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -32700,7 +33164,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -32711,7 +33175,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -32725,7 +33189,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32744,7 +33208,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32754,10 +33218,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FlowMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32770,16 +33235,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FlowMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -32788,7 +33254,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -32799,7 +33265,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -32813,7 +33279,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Tolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32829,7 +33295,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32839,10 +33305,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FlowMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32859,7 +33326,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32875,7 +33342,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32885,10 +33352,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FlowMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32905,7 +33373,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32921,7 +33389,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32931,10 +33399,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FlowMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FlowMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -32957,7 +33426,7 @@ namespace Attributes { namespace MeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -32976,7 +33445,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -32986,11 +33455,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -33003,17 +33472,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -33022,7 +33491,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -33033,7 +33502,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -33047,7 +33516,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MinMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33066,7 +33535,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -33076,11 +33545,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -33093,17 +33562,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -33112,7 +33581,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -33123,7 +33592,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -33137,7 +33606,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace MaxMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33156,7 +33625,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -33166,11 +33635,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -33183,17 +33652,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -33202,7 +33671,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -33213,7 +33682,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -33227,7 +33696,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Tolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33243,7 +33712,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33253,11 +33722,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33274,7 +33743,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33290,7 +33759,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33300,11 +33769,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33321,7 +33790,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33337,7 +33806,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33347,11 +33816,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RelativeHumidityMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33374,7 +33843,7 @@ namespace Attributes { namespace Occupancy { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -33391,9 +33860,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33403,10 +33871,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -33424,8 +33893,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace OccupancySensorType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33441,8 +33909,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33452,11 +33920,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::OccupancySensing::OccupancyS Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33473,7 +33941,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace OccupancySensorTypeBitmap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -33490,7 +33958,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -33502,10 +33970,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -33523,7 +33992,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace PIROccupiedToUnoccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33539,7 +34008,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33549,10 +34018,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33569,7 +34039,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace PIRUnoccupiedToOccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33585,7 +34055,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33595,10 +34065,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33615,7 +34086,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace PIRUnoccupiedToOccupiedThreshold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33631,7 +34102,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33641,10 +34112,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33661,7 +34133,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace UltrasonicOccupiedToUnoccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33677,7 +34149,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33687,10 +34159,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33707,7 +34180,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace UltrasonicUnoccupiedToOccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33723,7 +34196,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33733,10 +34206,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33753,7 +34227,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace UltrasonicUnoccupiedToOccupiedThreshold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33769,7 +34243,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33779,10 +34253,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33799,7 +34274,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace PhysicalContactOccupiedToUnoccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33815,7 +34290,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33825,10 +34300,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33845,7 +34321,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace PhysicalContactUnoccupiedToOccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33861,7 +34337,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33871,10 +34347,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33891,7 +34368,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace PhysicalContactUnoccupiedToOccupiedThreshold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33907,7 +34384,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33917,10 +34394,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33937,7 +34415,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -33953,7 +34431,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33963,10 +34441,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OccupancySensing::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OccupancySensing::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -33989,7 +34468,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34005,7 +34484,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34015,11 +34494,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::CarbonMonoxideConcentrationMeasurement::Id, Id, writable, - ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::CarbonMonoxideConcentrationMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34043,7 +34522,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34059,7 +34538,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34069,11 +34548,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::CarbonDioxideConcentrationMeasurement::Id, Id, writable, - ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::CarbonDioxideConcentrationMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34097,7 +34576,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34113,7 +34592,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34123,11 +34602,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::NitrogenDioxideConcentrationMeasurement::Id, Id, writable, - ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::NitrogenDioxideConcentrationMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34151,7 +34630,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34167,7 +34646,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34177,11 +34656,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::OzoneConcentrationMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::OzoneConcentrationMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34204,7 +34683,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34220,7 +34699,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34230,11 +34709,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Pm25ConcentrationMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Pm25ConcentrationMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34257,7 +34736,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34273,7 +34752,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34283,11 +34762,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FormaldehydeConcentrationMeasurement::Id, Id, writable, - ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FormaldehydeConcentrationMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34311,7 +34790,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34327,7 +34806,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34337,11 +34816,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Pm1ConcentrationMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Pm1ConcentrationMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34364,7 +34843,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34380,7 +34859,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34390,11 +34869,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Pm10ConcentrationMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Pm10ConcentrationMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34417,7 +34896,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34433,7 +34912,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34443,11 +34922,12 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, Id, writable, - ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute( + ConcreteAttributePath(endpoint, Clusters::TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34471,7 +34951,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34487,7 +34967,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34497,11 +34977,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::RadonConcentrationMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::RadonConcentrationMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34524,7 +35004,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34540,7 +35020,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34550,11 +35030,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WiFiNetworkManagement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WiFiNetworkManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34571,7 +35051,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34587,7 +35067,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34597,10 +35077,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WiFiNetworkManagement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WiFiNetworkManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34623,7 +35104,7 @@ namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34639,7 +35120,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34649,11 +35130,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ThreadBorderRouterManagement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ThreadBorderRouterManagement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34676,7 +35157,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34692,7 +35173,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34702,11 +35183,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ThreadNetworkDirectory::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ThreadNetworkDirectory::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34723,7 +35204,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34739,7 +35220,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34749,11 +35230,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ThreadNetworkDirectory::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ThreadNetworkDirectory::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34776,7 +35257,7 @@ namespace Attributes { namespace MACAddress { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[12 + 1]; Protocols::InteractionModel::Status status = @@ -34794,7 +35275,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(12 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -34803,10 +35284,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::WakeOnLan::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WakeOnLan::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(12 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -34822,7 +35304,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace LinkLocalAddress { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableByteSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableByteSpan & value) { uint8_t zclString[16 + 1]; Protocols::InteractionModel::Status status = @@ -34840,7 +35322,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -34849,10 +35331,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::WakeOnLan::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WakeOnLan::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value) { static_assert(16 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -34868,7 +35351,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34884,7 +35367,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34894,10 +35377,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WakeOnLan::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WakeOnLan::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34914,7 +35398,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34930,7 +35414,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34940,10 +35424,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::WakeOnLan::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::WakeOnLan::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34966,7 +35451,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -34981,7 +35466,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -34991,10 +35476,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Channel::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Channel::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35011,7 +35497,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35026,7 +35512,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35036,10 +35522,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::Channel::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::Channel::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35062,7 +35549,7 @@ namespace Attributes { namespace CurrentTarget { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35078,7 +35565,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35088,10 +35575,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TargetNavigator::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TargetNavigator::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35108,7 +35596,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35124,7 +35612,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35134,10 +35622,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TargetNavigator::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TargetNavigator::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35154,7 +35643,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35170,7 +35659,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35180,10 +35669,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::TargetNavigator::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::TargetNavigator::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35206,7 +35696,7 @@ namespace Attributes { namespace CurrentState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35222,7 +35712,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -35233,10 +35723,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35253,7 +35744,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace StartTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35272,7 +35763,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -35282,10 +35773,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -35298,16 +35790,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -35316,7 +35809,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -35327,7 +35820,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -35341,7 +35834,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace Duration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35360,7 +35853,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -35370,10 +35863,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -35386,16 +35880,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -35404,7 +35899,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -35415,7 +35910,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -35429,7 +35924,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace PlaybackSpeed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, float * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, float * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35445,7 +35940,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, float * value return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35455,10 +35950,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_SINGLE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35475,7 +35971,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value) namespace SeekRangeEnd { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35494,7 +35990,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -35504,10 +36000,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -35520,16 +36017,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -35538,7 +36036,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -35549,7 +36047,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -35563,7 +36061,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace SeekRangeStart { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35582,7 +36080,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -35592,10 +36090,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -35608,16 +36107,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -35626,7 +36126,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -35637,7 +36137,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -35651,7 +36151,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35667,7 +36167,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35677,10 +36177,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35697,7 +36198,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35713,7 +36214,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35723,10 +36224,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaPlayback::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaPlayback::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35749,7 +36251,7 @@ namespace Attributes { namespace CurrentInput { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35765,7 +36267,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35775,10 +36277,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaInput::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaInput::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35795,7 +36298,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35811,7 +36314,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35821,10 +36324,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaInput::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaInput::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35841,7 +36345,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35857,7 +36361,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35867,10 +36371,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::MediaInput::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::MediaInput::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35893,7 +36398,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35908,7 +36413,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35918,10 +36423,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LowPower::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LowPower::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35938,7 +36444,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -35953,7 +36459,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35963,10 +36469,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::LowPower::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::LowPower::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -35989,7 +36496,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36005,7 +36512,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36015,10 +36522,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::KeypadInput::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::KeypadInput::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36035,7 +36543,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36051,7 +36559,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36061,10 +36569,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::KeypadInput::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::KeypadInput::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36087,7 +36596,7 @@ namespace Attributes { namespace SupportedStreamingProtocols { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -36104,7 +36613,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { @@ -36116,10 +36625,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentLauncher::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentLauncher::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; @@ -36137,7 +36647,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36153,7 +36663,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36163,10 +36673,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentLauncher::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentLauncher::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36183,7 +36694,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36199,7 +36710,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36209,10 +36720,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentLauncher::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentLauncher::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36235,7 +36747,7 @@ namespace Attributes { namespace CurrentOutput { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36251,7 +36763,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36261,10 +36773,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::AudioOutput::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::AudioOutput::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36281,7 +36794,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36297,7 +36810,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36307,10 +36820,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::AudioOutput::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::AudioOutput::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36327,7 +36841,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36343,7 +36857,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36353,10 +36867,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::AudioOutput::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::AudioOutput::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36379,7 +36894,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36395,7 +36910,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36405,10 +36920,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ApplicationLauncher::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ApplicationLauncher::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36425,7 +36941,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36441,7 +36957,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36451,10 +36967,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ApplicationLauncher::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ApplicationLauncher::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36477,7 +36994,7 @@ namespace Attributes { namespace VendorName { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[32 + 1]; Protocols::InteractionModel::Status status = @@ -36495,7 +37012,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -36504,11 +37021,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::ApplicationBasic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ApplicationBasic::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -36524,7 +37041,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace VendorID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::VendorId * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::VendorId * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36540,7 +37057,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::VendorI return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36550,10 +37067,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorI Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ApplicationBasic::Id, Id, writable, ZCL_VENDOR_ID_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ApplicationBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_VENDOR_ID_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36570,7 +37088,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorI namespace ApplicationName { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[256 + 2]; Protocols::InteractionModel::Status status = @@ -36588,7 +37106,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(256 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -36597,11 +37115,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::LittleEndian::Put16(zclString, length); memcpy(&zclString[2], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::ApplicationBasic::Id, Id, zclString, ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ApplicationBasic::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(256 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -36617,7 +37135,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace ProductID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36633,7 +37151,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36643,10 +37161,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ApplicationBasic::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ApplicationBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36663,8 +37182,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Status { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36680,8 +37198,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36691,11 +37209,11 @@ Set(chip::EndpointId endpoint, chip::app::Clusters::ApplicationBasic::Applicatio Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ApplicationBasic::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ApplicationBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36712,7 +37230,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace ApplicationVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[32 + 1]; Protocols::InteractionModel::Status status = @@ -36730,7 +37248,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -36739,11 +37257,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::ApplicationBasic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ApplicationBasic::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(32 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -36759,7 +37277,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36775,7 +37293,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36785,10 +37303,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ApplicationBasic::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ApplicationBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36805,7 +37324,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36821,7 +37340,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36831,10 +37350,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ApplicationBasic::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ApplicationBasic::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36857,7 +37377,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36873,7 +37393,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36883,10 +37403,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::AccountLogin::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::AccountLogin::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36903,7 +37424,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36919,7 +37440,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36929,10 +37450,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::AccountLogin::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::AccountLogin::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36955,7 +37477,7 @@ namespace Attributes { namespace Enabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -36971,7 +37493,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -36981,10 +37503,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentControl::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37001,7 +37524,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace OnDemandRatingThreshold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[8 + 1]; Protocols::InteractionModel::Status status = @@ -37019,7 +37542,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(8 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -37028,10 +37551,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::ContentControl::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentControl::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(8 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -37047,7 +37571,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace ScheduledContentRatingThreshold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[8 + 1]; Protocols::InteractionModel::Status status = @@ -37065,7 +37589,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(8 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -37074,10 +37598,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::ContentControl::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentControl::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(8 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -37093,7 +37618,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace ScreenDailyTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37109,7 +37634,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37119,10 +37644,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentControl::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37139,7 +37665,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace RemainingScreenTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37155,7 +37681,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37165,10 +37691,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentControl::Id, Id, writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ELAPSED_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37185,7 +37712,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace BlockUnrated { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37201,7 +37728,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37211,10 +37738,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentControl::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37231,7 +37759,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37247,7 +37775,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37257,10 +37785,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37277,7 +37806,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37293,7 +37822,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37303,10 +37832,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37329,7 +37859,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37345,7 +37875,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37355,10 +37885,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentAppObserver::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentAppObserver::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37375,7 +37906,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37391,7 +37922,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37401,10 +37932,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ContentAppObserver::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ContentAppObserver::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37427,7 +37959,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37443,7 +37975,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37453,11 +37985,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EcosystemInformation::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EcosystemInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37474,7 +38006,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37490,7 +38022,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37500,10 +38032,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::EcosystemInformation::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::EcosystemInformation::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37527,7 +38060,7 @@ namespace Attributes { namespace SupportedDeviceCategories { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::BitMask * value) +Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -37544,7 +38077,7 @@ Get(chip::EndpointId endpoint, chip::BitMask value, +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; @@ -37555,11 +38088,12 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37576,7 +38110,7 @@ Set(chip::EndpointId endpoint, chip::BitMask; Traits::StorageType temp; @@ -37592,7 +38126,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37602,10 +38136,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::CommissionerControl::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::CommissionerControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37622,7 +38157,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37638,7 +38173,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37648,10 +38183,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::CommissionerControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::CommissionerControl::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37674,7 +38210,7 @@ namespace Attributes { namespace MeasurementType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37690,7 +38226,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37700,11 +38236,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37721,7 +38257,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace DcVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37737,7 +38273,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37747,10 +38283,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37767,7 +38304,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace DcVoltageMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37783,7 +38320,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37793,10 +38330,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37813,7 +38351,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace DcVoltageMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37829,7 +38367,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37839,10 +38377,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37859,7 +38398,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace DcCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37875,7 +38414,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37885,10 +38424,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37905,7 +38445,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace DcCurrentMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37921,7 +38461,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37931,10 +38471,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37951,7 +38492,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace DcCurrentMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -37967,7 +38508,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37977,10 +38518,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -37997,7 +38539,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace DcPower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38013,7 +38555,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38023,10 +38565,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38043,7 +38586,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace DcPowerMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38059,7 +38602,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38069,10 +38612,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38089,7 +38633,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace DcPowerMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38105,7 +38649,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38115,10 +38659,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38135,7 +38680,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace DcVoltageMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38151,7 +38696,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38161,10 +38706,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38181,7 +38727,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace DcVoltageDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38197,7 +38743,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38207,10 +38753,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38227,7 +38774,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace DcCurrentMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38243,7 +38790,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38253,10 +38800,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38273,7 +38821,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace DcCurrentDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38289,7 +38837,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38299,10 +38847,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38319,7 +38868,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace DcPowerMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38335,7 +38884,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38345,10 +38894,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38365,7 +38915,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace DcPowerDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38381,7 +38931,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38391,10 +38941,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38411,7 +38962,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcFrequency { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38427,7 +38978,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38437,10 +38988,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38457,7 +39009,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcFrequencyMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38473,7 +39025,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38483,10 +39035,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38503,7 +39056,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcFrequencyMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38519,7 +39072,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38529,10 +39082,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38549,7 +39103,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace NeutralCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38565,7 +39119,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38575,10 +39129,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38595,7 +39150,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace TotalActivePower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38611,7 +39166,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38621,10 +39176,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38641,7 +39197,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value namespace TotalReactivePower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38657,7 +39213,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38667,10 +39223,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38687,7 +39244,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value namespace TotalApparentPower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38703,7 +39260,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38713,10 +39270,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38733,7 +39291,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace Measured1stHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38749,7 +39307,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38759,10 +39317,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38779,7 +39338,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace Measured3rdHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38795,7 +39354,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38805,10 +39364,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38825,7 +39385,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace Measured5thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38841,7 +39401,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38851,10 +39411,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38871,7 +39432,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace Measured7thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38887,7 +39448,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38897,10 +39458,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38917,7 +39479,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace Measured9thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38933,7 +39495,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38943,10 +39505,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38963,7 +39526,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace Measured11thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -38979,7 +39542,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -38989,10 +39552,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39009,7 +39573,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MeasuredPhase1stHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39025,7 +39589,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39035,10 +39599,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39055,7 +39620,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MeasuredPhase3rdHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39071,7 +39636,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39081,10 +39646,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39101,7 +39667,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MeasuredPhase5thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39117,7 +39683,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39127,10 +39693,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39147,7 +39714,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MeasuredPhase7thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39163,7 +39730,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39173,10 +39740,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39193,7 +39761,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MeasuredPhase9thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39209,7 +39777,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39219,10 +39787,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39239,7 +39808,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace MeasuredPhase11thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39255,7 +39824,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39265,10 +39834,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39285,7 +39855,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace AcFrequencyMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39301,7 +39871,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39311,10 +39881,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39331,7 +39902,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcFrequencyDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39347,7 +39918,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39357,10 +39928,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39377,7 +39949,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace PowerMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39393,7 +39965,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39403,10 +39975,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39423,7 +39996,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace PowerDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39439,7 +40012,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39449,10 +40022,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39469,7 +40043,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace HarmonicCurrentMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39485,7 +40059,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39495,10 +40069,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39515,7 +40090,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) namespace PhaseHarmonicCurrentMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39531,7 +40106,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39541,10 +40116,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39561,7 +40137,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) namespace InstantaneousVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39577,7 +40153,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39587,10 +40163,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39607,7 +40184,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace InstantaneousLineCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39623,7 +40200,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39633,10 +40210,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39653,7 +40231,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace InstantaneousActiveCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39669,7 +40247,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39679,10 +40257,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39699,7 +40278,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace InstantaneousReactiveCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39715,7 +40294,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39725,10 +40304,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39745,7 +40325,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace InstantaneousPower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39761,7 +40341,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39771,10 +40351,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39791,7 +40372,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace RmsVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39807,7 +40388,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39817,10 +40398,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39837,7 +40419,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39853,7 +40435,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39863,10 +40445,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39883,7 +40466,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39899,7 +40482,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39909,10 +40492,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39929,7 +40513,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39945,7 +40529,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39955,10 +40539,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -39975,7 +40560,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsCurrentMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -39991,7 +40576,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40001,10 +40586,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40021,7 +40607,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsCurrentMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40037,7 +40623,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40047,10 +40633,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40067,7 +40654,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ActivePower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40083,7 +40670,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40093,10 +40680,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40113,7 +40701,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ActivePowerMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40129,7 +40717,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40139,10 +40727,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40159,7 +40748,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ActivePowerMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40175,7 +40764,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40185,10 +40774,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40205,7 +40795,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ReactivePower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40221,7 +40811,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40231,10 +40821,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40251,7 +40842,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ApparentPower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40267,7 +40858,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40277,10 +40868,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40297,7 +40889,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace PowerFactor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40313,7 +40905,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40323,10 +40915,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40343,7 +40936,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) namespace AverageRmsVoltageMeasurementPeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40359,7 +40952,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40369,10 +40962,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40389,7 +40983,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AverageRmsUnderVoltageCounter { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40405,7 +40999,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40415,10 +41009,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40435,7 +41030,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsExtremeOverVoltagePeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40451,7 +41046,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40461,10 +41056,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40481,7 +41077,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsExtremeUnderVoltagePeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40497,7 +41093,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40507,10 +41103,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40527,7 +41124,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageSagPeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40543,7 +41140,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40553,10 +41150,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40573,7 +41171,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageSwellPeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40589,7 +41187,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40599,10 +41197,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40619,7 +41218,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcVoltageMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40635,7 +41234,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40645,10 +41244,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40665,7 +41265,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcVoltageDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40681,7 +41281,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40691,10 +41291,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40711,7 +41312,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcCurrentMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40727,7 +41328,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40737,10 +41338,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40757,7 +41359,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcCurrentDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40773,7 +41375,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40783,10 +41385,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40803,7 +41406,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcPowerMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40819,7 +41422,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40829,10 +41432,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40849,7 +41453,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcPowerDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40865,7 +41469,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40875,10 +41479,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40895,7 +41500,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace OverloadAlarmsMask { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40911,7 +41516,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40921,11 +41526,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40942,7 +41547,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace VoltageOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -40958,7 +41563,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40968,10 +41573,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -40988,7 +41594,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace CurrentOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41004,7 +41610,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41014,10 +41620,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41034,7 +41641,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace AcOverloadAlarmsMask { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41050,7 +41657,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41060,11 +41667,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41081,7 +41688,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AcVoltageOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41097,7 +41704,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41107,10 +41714,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41127,7 +41735,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace AcCurrentOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41143,7 +41751,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41153,10 +41761,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41173,7 +41782,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace AcActivePowerOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41189,7 +41798,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41199,10 +41808,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41219,7 +41829,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace AcReactivePowerOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41235,7 +41845,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41245,10 +41855,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41265,7 +41876,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace AverageRmsOverVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41281,7 +41892,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41291,10 +41902,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41311,7 +41923,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace AverageRmsUnderVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41327,7 +41939,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41337,10 +41949,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41357,7 +41970,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace RmsExtremeOverVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41373,7 +41986,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41383,10 +41996,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41403,7 +42017,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace RmsExtremeUnderVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41419,7 +42033,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41429,10 +42043,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41449,7 +42064,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace RmsVoltageSag { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41465,7 +42080,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41475,10 +42090,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41495,7 +42111,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace RmsVoltageSwell { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41511,7 +42127,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41521,10 +42137,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41541,7 +42158,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace LineCurrentPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41557,7 +42174,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41567,10 +42184,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41587,7 +42205,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ActiveCurrentPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41603,7 +42221,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41613,10 +42231,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41633,7 +42252,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ReactiveCurrentPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41649,7 +42268,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41659,10 +42278,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41679,7 +42299,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace RmsVoltagePhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41695,7 +42315,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41705,10 +42325,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41725,7 +42346,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageMinPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41741,7 +42362,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41751,10 +42372,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41771,7 +42393,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageMaxPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41787,7 +42409,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41797,10 +42419,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41817,7 +42440,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsCurrentPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41833,7 +42456,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41843,10 +42466,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41863,7 +42487,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsCurrentMinPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41879,7 +42503,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41889,10 +42513,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41909,7 +42534,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsCurrentMaxPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41925,7 +42550,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41935,10 +42560,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41955,7 +42581,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ActivePowerPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -41971,7 +42597,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -41981,10 +42607,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42001,7 +42628,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ActivePowerMinPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42017,7 +42644,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42027,10 +42654,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42047,7 +42675,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ActivePowerMaxPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42063,7 +42691,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42073,10 +42701,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42093,7 +42722,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ReactivePowerPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42109,7 +42738,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42119,10 +42748,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42139,7 +42769,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ApparentPowerPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42155,7 +42785,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42165,10 +42795,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42185,7 +42816,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace PowerFactorPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42201,7 +42832,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42211,10 +42842,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42231,7 +42863,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) namespace AverageRmsVoltageMeasurementPeriodPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42247,7 +42879,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42257,10 +42889,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42277,7 +42910,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AverageRmsOverVoltageCounterPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42293,7 +42926,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42303,10 +42936,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42323,7 +42957,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AverageRmsUnderVoltageCounterPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42339,7 +42973,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42349,10 +42983,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42369,7 +43004,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsExtremeOverVoltagePeriodPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42385,7 +43020,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42395,10 +43030,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42415,7 +43051,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsExtremeUnderVoltagePeriodPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42431,7 +43067,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42441,10 +43077,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42461,7 +43098,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageSagPeriodPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42477,7 +43114,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42487,10 +43124,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42507,7 +43145,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageSwellPeriodPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42523,7 +43161,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42533,10 +43171,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42553,7 +43192,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace LineCurrentPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42569,7 +43208,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42579,10 +43218,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42599,7 +43239,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ActiveCurrentPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42615,7 +43255,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42625,10 +43265,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42645,7 +43286,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ReactiveCurrentPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42661,7 +43302,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42671,10 +43312,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42691,7 +43333,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace RmsVoltagePhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42707,7 +43349,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42717,10 +43359,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42737,7 +43380,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageMinPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42753,7 +43396,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42763,10 +43406,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42783,7 +43427,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageMaxPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42799,7 +43443,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42809,10 +43453,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42829,7 +43474,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsCurrentPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42845,7 +43490,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42855,10 +43500,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42875,7 +43521,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsCurrentMinPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42891,7 +43537,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42901,10 +43547,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42921,7 +43568,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsCurrentMaxPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42937,7 +43584,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42947,10 +43594,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42967,7 +43615,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace ActivePowerPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -42983,7 +43631,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -42993,10 +43641,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43013,7 +43662,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ActivePowerMinPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43029,7 +43678,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43039,10 +43688,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43059,7 +43709,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ActivePowerMaxPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43075,7 +43725,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43085,10 +43735,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43105,7 +43756,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ReactivePowerPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43121,7 +43772,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43131,10 +43782,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43151,7 +43803,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace ApparentPowerPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43167,7 +43819,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43177,10 +43829,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43197,7 +43850,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace PowerFactorPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43213,7 +43866,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43223,10 +43876,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43243,7 +43897,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) namespace AverageRmsVoltageMeasurementPeriodPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43259,7 +43913,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43269,10 +43923,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43289,7 +43944,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AverageRmsOverVoltageCounterPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43305,7 +43960,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43315,10 +43970,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43335,7 +43991,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace AverageRmsUnderVoltageCounterPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43351,7 +44007,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43361,10 +44017,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43381,7 +44038,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsExtremeOverVoltagePeriodPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43397,7 +44054,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43407,10 +44064,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43427,7 +44085,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsExtremeUnderVoltagePeriodPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43443,7 +44101,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43453,10 +44111,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43473,7 +44132,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageSagPeriodPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43489,7 +44148,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43499,10 +44158,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43519,7 +44179,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RmsVoltageSwellPeriodPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43535,7 +44195,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43545,10 +44205,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43565,7 +44226,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43581,7 +44242,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43591,11 +44252,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43612,7 +44273,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43628,7 +44289,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43638,10 +44299,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::ElectricalMeasurement::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::ElectricalMeasurement::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43664,7 +44326,7 @@ namespace Attributes { namespace Boolean { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43680,7 +44342,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43690,10 +44352,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43710,7 +44373,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace Bitmap8 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -43727,8 +44390,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43738,11 +44401,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43759,7 +44422,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace Bitmap16 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -43776,8 +44439,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43787,11 +44450,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43808,7 +44471,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace Bitmap32 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -43825,8 +44488,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43836,11 +44499,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43857,7 +44520,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace Bitmap64 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value) { using Traits = NumericAttributeTraits>; @@ -43874,8 +44537,8 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43885,11 +44548,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43906,7 +44569,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace Int8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43922,7 +44585,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43932,10 +44595,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43952,7 +44616,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace Int16u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -43968,7 +44632,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43978,10 +44642,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -43998,7 +44663,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace Int24u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -44014,7 +44679,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44024,10 +44689,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44044,7 +44710,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace Int32u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -44060,7 +44726,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44070,10 +44736,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44090,7 +44757,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace Int40u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -44106,7 +44773,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44116,10 +44783,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT40U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44136,7 +44804,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu namespace Int48u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -44152,7 +44820,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44162,10 +44830,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT48U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44182,7 +44851,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu namespace Int56u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -44198,7 +44867,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44208,10 +44877,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT56U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44228,7 +44898,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu namespace Int64u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -44244,7 +44914,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44254,10 +44924,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44274,7 +44945,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu namespace Int8s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -44290,7 +44961,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44300,10 +44971,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44320,7 +44992,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) namespace Int16s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -44336,7 +45008,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44346,10 +45018,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44366,7 +45039,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace Int24s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int32_t * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -44382,7 +45055,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44392,10 +45065,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44412,7 +45086,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value namespace Int32s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -44428,7 +45102,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44438,10 +45112,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44458,7 +45133,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value namespace Int40s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int64_t * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -44474,7 +45149,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44484,10 +45159,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT40S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44504,7 +45180,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value namespace Int48s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int64_t * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -44520,7 +45196,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44530,10 +45206,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT48S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44550,7 +45227,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value namespace Int56s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int64_t * value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -44566,7 +45243,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44576,10 +45253,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT56S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44596,7 +45274,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value namespace Int64s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int64_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -44612,7 +45290,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44622,10 +45300,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44642,7 +45321,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value namespace Enum8 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -44658,7 +45337,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44668,10 +45347,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44688,7 +45368,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace Enum16 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -44704,7 +45384,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44714,10 +45394,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44734,7 +45415,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace FloatSingle { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, float * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, float * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -44750,7 +45431,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, float * value return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44760,10 +45441,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_SINGLE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44780,7 +45462,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value) namespace FloatDouble { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, double * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, double * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -44796,7 +45478,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, double * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, double value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44806,10 +45488,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_DOUBLE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, double value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -44826,7 +45509,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value) namespace OctetString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableByteSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableByteSpan & value) { uint8_t zclString[10 + 1]; Protocols::InteractionModel::Status status = @@ -44844,7 +45527,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) { static_assert(10 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -44853,10 +45536,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value) { static_assert(10 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -44872,7 +45556,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa namespace LongOctetString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableByteSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableByteSpan & value) { uint8_t zclString[1000 + 2]; Protocols::InteractionModel::Status status = @@ -44890,7 +45574,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) { static_assert(1000 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -44899,11 +45583,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa auto length = static_cast(value.size()); Encoding::LittleEndian::Put16(zclString, length); memcpy(&zclString[2], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value) { static_assert(1000 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -44919,7 +45603,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa namespace CharString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[10 + 1]; Protocols::InteractionModel::Status status = @@ -44937,7 +45621,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(10 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -44946,10 +45630,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(10 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -44965,7 +45650,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace LongCharString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value) { uint8_t zclString[1000 + 2]; Protocols::InteractionModel::Status status = @@ -44983,7 +45668,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Mutable return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(1000 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -44992,11 +45677,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::LittleEndian::Put16(zclString, length); memcpy(&zclString[2], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE, - markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(1000 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -45012,7 +45697,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa namespace EpochUs { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45028,7 +45713,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45038,10 +45723,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_EPOCH_US_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45058,7 +45744,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu namespace EpochS { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45074,7 +45760,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45084,10 +45770,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_EPOCH_S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45104,7 +45791,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace VendorId { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::VendorId * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::VendorId * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45120,7 +45807,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::VendorI return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45130,10 +45817,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorI Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_VENDOR_ID_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_VENDOR_ID_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45150,7 +45838,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorI namespace EnumAttr { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45166,7 +45854,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -45177,10 +45865,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45197,7 +45886,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace RangeRestrictedInt8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45213,7 +45902,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45223,10 +45912,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45243,7 +45933,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace RangeRestrictedInt8s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45259,7 +45949,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * valu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45269,10 +45959,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45289,7 +45980,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) namespace RangeRestrictedInt16u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45305,7 +45996,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45315,10 +46006,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45335,7 +46027,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace RangeRestrictedInt16s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45351,7 +46043,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45361,10 +46053,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45381,7 +46074,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value namespace TimedWriteBoolean { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45397,7 +46090,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45407,10 +46100,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45427,7 +46121,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace GlobalEnum { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45443,7 +46137,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Cl return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -45454,10 +46148,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45474,7 +46169,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl namespace Unsupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45490,7 +46185,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45500,10 +46195,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45520,7 +46216,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace ReadFailureCode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45536,7 +46232,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45546,10 +46242,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45566,7 +46263,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace FailureInt32U { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45582,7 +46279,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45592,10 +46289,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -45612,7 +46310,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace NullableBoolean { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -45631,7 +46329,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -45641,10 +46339,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -45657,16 +46356,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -45675,7 +46375,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -45686,7 +46386,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -45701,7 +46401,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableBitmap8 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, DataModel::Nullable> & value) +Get(EndpointId endpoint, DataModel::Nullable> & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -45720,8 +46420,8 @@ Get(chip::EndpointId endpoint, DataModel::Nullable value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -45731,11 +46431,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -45748,16 +46448,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -45767,7 +46468,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value, MarkAttributeDirty markDirty) { @@ -45780,7 +46481,7 @@ Set(chip::EndpointId endpoint, } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value) { if (value.IsNull()) @@ -45796,7 +46497,7 @@ Set(chip::EndpointId endpoint, namespace NullableBitmap16 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, DataModel::Nullable> & value) +Get(EndpointId endpoint, DataModel::Nullable> & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -45815,8 +46516,8 @@ Get(chip::EndpointId endpoint, DataModel::Nullable value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -45826,11 +46527,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -45843,16 +46544,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -45862,7 +46564,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value, MarkAttributeDirty markDirty) { @@ -45875,7 +46577,7 @@ Set(chip::EndpointId endpoint, } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value) { if (value.IsNull()) @@ -45891,7 +46593,7 @@ Set(chip::EndpointId endpoint, namespace NullableBitmap32 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, DataModel::Nullable> & value) +Get(EndpointId endpoint, DataModel::Nullable> & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -45910,8 +46612,8 @@ Get(chip::EndpointId endpoint, DataModel::Nullable value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -45921,11 +46623,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -45938,16 +46640,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -45957,7 +46660,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value, MarkAttributeDirty markDirty) { @@ -45970,7 +46673,7 @@ Set(chip::EndpointId endpoint, } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value) { if (value.IsNull()) @@ -45986,7 +46689,7 @@ Set(chip::EndpointId endpoint, namespace NullableBitmap64 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, DataModel::Nullable> & value) +Get(EndpointId endpoint, DataModel::Nullable> & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -46005,8 +46708,8 @@ Get(chip::EndpointId endpoint, DataModel::Nullable value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46016,11 +46719,11 @@ Set(chip::EndpointId endpoint, chip::BitMask value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46033,16 +46736,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP64_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP64_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP64_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -46052,7 +46756,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value, MarkAttributeDirty markDirty) { @@ -46065,7 +46769,7 @@ Set(chip::EndpointId endpoint, } Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value) { if (value.IsNull()) @@ -46080,7 +46784,7 @@ Set(chip::EndpointId endpoint, namespace NullableInt8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -46099,7 +46803,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46109,10 +46813,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46125,16 +46830,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -46143,7 +46849,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -46154,7 +46860,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -46168,7 +46874,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt16u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -46187,7 +46893,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46197,10 +46903,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46213,16 +46920,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -46231,7 +46939,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -46242,7 +46950,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -46256,7 +46964,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt24u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -46275,7 +46983,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46285,10 +46993,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46301,16 +47010,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -46319,7 +47029,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -46330,7 +47040,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -46344,7 +47054,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt32u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -46363,7 +47073,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46373,10 +47083,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46389,16 +47100,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -46407,7 +47119,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -46418,7 +47130,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -46432,7 +47144,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt40u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -46451,7 +47163,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46461,10 +47173,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT40U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46477,16 +47190,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT40U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -46495,7 +47209,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -46506,7 +47220,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -46520,7 +47234,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt48u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -46539,7 +47253,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46549,10 +47263,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT48U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46565,16 +47280,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT48U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -46583,7 +47299,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -46594,7 +47310,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -46608,7 +47324,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt56u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -46627,7 +47343,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46637,10 +47353,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT56U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46653,16 +47370,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT56U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -46671,7 +47389,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -46682,7 +47400,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -46696,7 +47414,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt64u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -46715,7 +47433,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46725,10 +47443,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46741,16 +47460,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t valu return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -46759,7 +47479,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -46770,7 +47490,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -46784,7 +47504,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt8s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -46803,7 +47523,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46813,10 +47533,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46829,16 +47550,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -46847,7 +47569,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -46858,7 +47580,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -46872,7 +47594,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt16s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -46891,7 +47613,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46901,10 +47623,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46917,16 +47640,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -46935,7 +47659,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -46946,7 +47670,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -46960,7 +47684,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt24s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -46979,7 +47703,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -46989,10 +47713,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47005,16 +47730,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT24S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -47023,7 +47749,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT24S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47034,7 +47760,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47048,7 +47774,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt32s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -47067,7 +47793,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47077,10 +47803,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47093,16 +47820,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT32S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -47111,7 +47839,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT32S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47122,7 +47850,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47136,7 +47864,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt40s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -47155,7 +47883,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47165,10 +47893,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT40S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47181,16 +47910,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT40S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -47199,7 +47929,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT40S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47210,7 +47940,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47224,7 +47954,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt48s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -47243,7 +47973,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47253,10 +47983,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT48S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47269,16 +48000,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT48S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -47287,7 +48019,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT48S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47298,7 +48030,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47312,7 +48044,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt56s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits>; Traits::StorageType temp; @@ -47331,7 +48063,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47341,10 +48073,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT56S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value) { using Traits = NumericAttributeTraits>; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47357,16 +48090,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits>; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT56S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits>; Traits::StorageType value; @@ -47375,7 +48109,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT56S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47386,7 +48120,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47400,7 +48134,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableInt64s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -47419,7 +48153,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47429,10 +48163,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47445,16 +48180,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT64S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -47463,7 +48199,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT64S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47474,7 +48210,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47488,7 +48224,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableEnum8 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -47507,7 +48243,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47517,10 +48253,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47533,16 +48270,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -47551,7 +48289,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47562,7 +48300,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47576,7 +48314,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableEnum16 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -47595,7 +48333,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47605,10 +48343,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47621,16 +48360,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM16_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -47639,7 +48379,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM16_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47650,7 +48390,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47664,7 +48404,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableFloatSingle { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -47683,7 +48423,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47693,10 +48433,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_SINGLE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47709,16 +48450,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_SINGLE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -47727,7 +48469,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_SINGLE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47738,7 +48480,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47752,7 +48494,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableFloatDouble { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -47771,7 +48513,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, double value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47781,10 +48523,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_DOUBLE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, double value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -47797,16 +48540,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_DOUBLE_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -47815,7 +48559,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_DOUBLE_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47826,7 +48570,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47840,7 +48584,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableOctetString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { if (value.IsNull()) { @@ -47866,7 +48610,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty) { static_assert(10 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -47875,10 +48619,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value) { static_assert(10 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -47890,19 +48635,20 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpa return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { uint8_t zclString[1] = { 0xFF }; - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { uint8_t zclString[1] = { 0xFF }; return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_OCTET_STRING_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -47913,7 +48659,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -47927,7 +48673,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableCharString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { if (value.IsNull()) { @@ -47953,7 +48699,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty) { static_assert(10 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -47962,10 +48708,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa auto length = static_cast(value.size()); Encoding::Put8(zclString, length); memcpy(&zclString[1], value.data(), value.size()); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value) { static_assert(10 < NumericAttributeTraits::kNullValue, "value.size() might be too big"); @@ -47977,19 +48724,20 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpa return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { uint8_t zclString[1] = { 0xFF }; - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { uint8_t zclString[1] = { 0xFF }; return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -48000,7 +48748,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -48014,7 +48762,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableEnumAttr { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; @@ -48034,7 +48782,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -48045,10 +48793,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -48061,16 +48810,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -48079,7 +48829,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { @@ -48091,7 +48841,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) @@ -48106,7 +48856,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace NullableRangeRestrictedInt8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48125,7 +48875,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -48135,10 +48885,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -48151,16 +48902,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -48169,7 +48921,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -48180,7 +48932,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -48194,7 +48946,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableRangeRestrictedInt8s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48213,7 +48965,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -48223,10 +48975,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -48239,16 +48992,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -48257,7 +49011,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -48268,7 +49022,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -48282,7 +49036,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableRangeRestrictedInt16u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48301,7 +49055,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -48311,10 +49065,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -48327,16 +49082,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -48345,7 +49101,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -48356,7 +49112,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -48370,7 +49126,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace NullableRangeRestrictedInt16s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48389,7 +49145,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nu return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -48399,10 +49155,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -48415,16 +49172,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16S_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -48433,7 +49191,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { if (value.IsNull()) @@ -48444,7 +49202,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) { @@ -48458,7 +49216,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a namespace WriteOnlyInt8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48474,7 +49232,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48484,10 +49242,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48504,7 +49263,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value namespace NullableGlobalEnum { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; @@ -48524,7 +49283,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; @@ -48535,10 +49294,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) @@ -48551,16 +49311,17 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; Traits::StorageType value; Traits::SetNull(value); uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_ENUM8_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) +Protocols::InteractionModel::Status SetNull(EndpointId endpoint) { using Traits = NumericAttributeTraits; Traits::StorageType value; @@ -48569,7 +49330,7 @@ Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint) return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty) { @@ -48581,7 +49342,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, return Set(endpoint, value.Value(), markDirty); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value) { if (value.IsNull()) @@ -48596,7 +49357,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48612,7 +49373,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48622,10 +49383,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48642,7 +49404,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48658,7 +49420,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48668,10 +49430,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48688,7 +49451,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu namespace MeiInt8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48704,7 +49467,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48714,10 +49477,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::UnitTesting::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::UnitTesting::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT8U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48740,7 +49504,7 @@ namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48756,7 +49520,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48766,10 +49530,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FaultInjection::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FaultInjection::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48786,7 +49551,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48802,7 +49567,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48812,10 +49577,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::FaultInjection::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::FaultInjection::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48838,7 +49604,7 @@ namespace Attributes { namespace FlipFlop { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48854,7 +49620,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value) return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48864,10 +49630,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, M Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SampleMei::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SampleMei::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48884,7 +49651,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value) namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48900,7 +49667,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48910,10 +49677,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SampleMei::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SampleMei::Id, Id), + EmberAfWriteDataInput(writable, ZCL_BITMAP32_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48930,7 +49698,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t valu namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value) +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; @@ -48946,7 +49714,7 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va return status; } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) @@ -48956,10 +49724,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu Traits::StorageType storageValue; Traits::WorkingToStorage(value, storageValue); uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); - return emberAfWriteAttribute(endpoint, Clusters::SampleMei::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE, markDirty); + return emberAfWriteAttribute(ConcreteAttributePath(endpoint, Clusters::SampleMei::Id, Id), + EmberAfWriteDataInput(writable, ZCL_INT16U_ATTRIBUTE_TYPE).SetMarkDirty(markDirty)); } -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value) +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h index 80b542dbf0c190..f44307d55e9ae1 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h @@ -40,29 +40,29 @@ namespace Identify { namespace Attributes { namespace IdentifyTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace IdentifyTime namespace IdentifyType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum * value); // IdentifyTypeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Identify::IdentifyTypeEnum value, MarkAttributeDirty markDirty); } // namespace IdentifyType namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -72,24 +72,23 @@ namespace Groups { namespace Attributes { namespace NameSupport { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // NameSupportBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty); } // namespace NameSupport namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -99,54 +98,54 @@ namespace OnOff { namespace Attributes { namespace OnOff { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace OnOff namespace GlobalSceneControl { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace GlobalSceneControl namespace OnTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace OnTime namespace OffWaitTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace OffWaitTime namespace StartUpOnOff { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, DataModel::Nullable & value); // StartUpOnOffEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::OnOff::StartUpOnOffEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::OnOff::StartUpOnOffEnum value, +Get(EndpointId endpoint, DataModel::Nullable & value); // StartUpOnOffEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OnOff::StartUpOnOffEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OnOff::StartUpOnOffEnum value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace StartUpOnOff namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -156,27 +155,27 @@ namespace OnOffSwitchConfiguration { namespace Attributes { namespace SwitchType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // enum8 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // enum8 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace SwitchType namespace SwitchActions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // enum8 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // enum8 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace SwitchActions namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -186,132 +185,131 @@ namespace LevelControl { namespace Attributes { namespace CurrentLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace CurrentLevel namespace RemainingTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RemainingTime namespace MinLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MinLevel namespace MaxLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MaxLevel namespace CurrentFrequency { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace CurrentFrequency namespace MinFrequency { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace MinFrequency namespace MaxFrequency { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace MaxFrequency namespace Options { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // OptionsBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty); } // namespace Options namespace OnOffTransitionTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace OnOffTransitionTime namespace OnLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OnLevel namespace OnTransitionTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OnTransitionTime namespace OffTransitionTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OffTransitionTime namespace DefaultMoveRate { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace DefaultMoveRate namespace StartUpCurrentLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace StartUpCurrentLevel namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -321,69 +319,69 @@ namespace BinaryInputBasic { namespace Attributes { namespace ActiveText { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace ActiveText namespace Description { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace Description namespace InactiveText { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace InactiveText namespace OutOfService { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace OutOfService namespace Polarity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // enum8 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // enum8 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace Polarity namespace PresentValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace PresentValue namespace Reliability { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // enum8 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // enum8 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace Reliability namespace StatusFlags { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // bitmap8 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // bitmap8 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace StatusFlags namespace ApplicationType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace ApplicationType namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -393,15 +391,15 @@ namespace PulseWidthModulation { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -415,15 +413,15 @@ namespace Binding { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -433,9 +431,9 @@ namespace AccessControl { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap } // namespace Attributes @@ -445,21 +443,21 @@ namespace Actions { namespace Attributes { namespace SetupURL { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // long_char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // long_char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace SetupURL namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -469,33 +467,33 @@ namespace BasicInformation { namespace Attributes { namespace NodeLabel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace NodeLabel namespace LocalConfigDisabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace LocalConfigDisabled namespace Reachable { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace Reachable namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -505,15 +503,15 @@ namespace OtaSoftwareUpdateProvider { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -523,42 +521,41 @@ namespace OtaSoftwareUpdateRequestor { namespace Attributes { namespace UpdatePossible { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace UpdatePossible namespace UpdateState { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::OtaSoftwareUpdateRequestor::UpdateStateEnum * value); // UpdateStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::app::Clusters::OtaSoftwareUpdateRequestor::UpdateStateEnum * value); // UpdateStateEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OtaSoftwareUpdateRequestor::UpdateStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::OtaSoftwareUpdateRequestor::UpdateStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OtaSoftwareUpdateRequestor::UpdateStateEnum value, MarkAttributeDirty markDirty); } // namespace UpdateState namespace UpdateStateProgress { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace UpdateStateProgress namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -568,21 +565,21 @@ namespace LocalizationConfiguration { namespace Attributes { namespace ActiveLocale { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace ActiveLocale namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -592,33 +589,31 @@ namespace TimeFormatLocalization { namespace Attributes { namespace HourFormat { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::HourFormatEnum * value); // HourFormatEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::TimeFormatLocalization::HourFormatEnum value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::HourFormatEnum value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::HourFormatEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::HourFormatEnum value, + MarkAttributeDirty markDirty); } // namespace HourFormat namespace ActiveCalendarType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum * value); // CalendarTypeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeFormatLocalization::CalendarTypeEnum value, + MarkAttributeDirty markDirty); } // namespace ActiveCalendarType namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -628,23 +623,23 @@ namespace UnitLocalization { namespace Attributes { namespace TemperatureUnit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum * value); // TempUnitEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitLocalization::TempUnitEnum value, MarkAttributeDirty markDirty); } // namespace TemperatureUnit namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -654,15 +649,15 @@ namespace PowerSourceConfiguration { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -672,239 +667,237 @@ namespace PowerSource { namespace Attributes { namespace Status { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum * value); // PowerSourceStatusEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::PowerSourceStatusEnum value, MarkAttributeDirty markDirty); } // namespace Status namespace Order { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace Order namespace Description { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace Description namespace WiredAssessedInputVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace WiredAssessedInputVoltage namespace WiredAssessedInputFrequency { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace WiredAssessedInputFrequency namespace WiredCurrentType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum * value); // WiredCurrentTypeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::WiredCurrentTypeEnum value, MarkAttributeDirty markDirty); } // namespace WiredCurrentType namespace WiredAssessedCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace WiredAssessedCurrent namespace WiredNominalVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace WiredNominalVoltage namespace WiredMaximumCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace WiredMaximumCurrent namespace WiredPresent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace WiredPresent namespace BatVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace BatVoltage namespace BatPercentRemaining { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace BatPercentRemaining namespace BatTimeRemaining { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace BatTimeRemaining namespace BatChargeLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum * value); // BatChargeLevelEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeLevelEnum value, MarkAttributeDirty markDirty); } // namespace BatChargeLevel namespace BatReplacementNeeded { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace BatReplacementNeeded namespace BatReplaceability { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum * value); // BatReplaceabilityEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatReplaceabilityEnum value, MarkAttributeDirty markDirty); } // namespace BatReplaceability namespace BatPresent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace BatPresent namespace BatReplacementDescription { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace BatReplacementDescription namespace BatCommonDesignation { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatCommonDesignationEnum * value); // BatCommonDesignationEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::PowerSource::BatCommonDesignationEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatCommonDesignationEnum value, +Get(EndpointId endpoint, chip::app::Clusters::PowerSource::BatCommonDesignationEnum * value); // BatCommonDesignationEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatCommonDesignationEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatCommonDesignationEnum value, MarkAttributeDirty markDirty); } // namespace BatCommonDesignation namespace BatANSIDesignation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace BatANSIDesignation namespace BatIECDesignation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace BatIECDesignation namespace BatApprovedChemistry { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatApprovedChemistryEnum * value); // BatApprovedChemistryEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::PowerSource::BatApprovedChemistryEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatApprovedChemistryEnum value, +Get(EndpointId endpoint, chip::app::Clusters::PowerSource::BatApprovedChemistryEnum * value); // BatApprovedChemistryEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatApprovedChemistryEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatApprovedChemistryEnum value, MarkAttributeDirty markDirty); } // namespace BatApprovedChemistry namespace BatCapacity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace BatCapacity namespace BatQuantity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace BatQuantity namespace BatChargeState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum * value); // BatChargeStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PowerSource::BatChargeStateEnum value, MarkAttributeDirty markDirty); } // namespace BatChargeState namespace BatTimeToFullCharge { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace BatTimeToFullCharge namespace BatFunctionalWhileCharging { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace BatFunctionalWhileCharging namespace BatChargingCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace BatChargingCurrent namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -914,45 +907,45 @@ namespace GeneralCommissioning { namespace Attributes { namespace Breadcrumb { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value); // int64u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value); // int64u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); } // namespace Breadcrumb namespace TCAcceptedVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace TCAcceptedVersion namespace TCMinRequiredVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace TCMinRequiredVersion namespace TCAcknowledgements { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // bitmap16 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // bitmap16 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace TCAcknowledgements namespace TCAcknowledgementsRequired { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace TCAcknowledgementsRequired namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -962,100 +955,99 @@ namespace NetworkCommissioning { namespace Attributes { namespace MaxNetworks { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MaxNetworks namespace ScanMaxTimeSeconds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace ScanMaxTimeSeconds namespace ConnectMaxTimeSeconds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace ConnectMaxTimeSeconds namespace InterfaceEnabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace InterfaceEnabled namespace LastNetworkingStatus { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, DataModel::Nullable & value); // NetworkCommissioningStatusEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::NetworkCommissioning::NetworkCommissioningStatusEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::NetworkCommissioning::NetworkCommissioningStatusEnum value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LastNetworkingStatus namespace LastNetworkID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - DataModel::Nullable & value); // octet_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // octet_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LastNetworkID namespace LastConnectErrorValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int32s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int32s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LastConnectErrorValue namespace SupportedThreadFeatures { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // ThreadCapabilitiesBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace SupportedThreadFeatures namespace ThreadVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ThreadVersion namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1065,15 +1057,15 @@ namespace DiagnosticLogs { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1083,9 +1075,9 @@ namespace GeneralDiagnostics { namespace Attributes { namespace TestEventTriggersEnabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace TestEventTriggersEnabled } // namespace Attributes @@ -1095,9 +1087,9 @@ namespace SoftwareDiagnostics { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1107,15 +1099,15 @@ namespace ThreadNetworkDiagnostics { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1125,15 +1117,15 @@ namespace WiFiNetworkDiagnostics { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1143,15 +1135,15 @@ namespace EthernetNetworkDiagnostics { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1161,44 +1153,43 @@ namespace TimeSynchronization { namespace Attributes { namespace TimeSource { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum * value); // TimeSourceEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeSourceEnum value, MarkAttributeDirty markDirty); } // namespace TimeSource namespace TimeZoneDatabase { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum * value); // TimeZoneDatabaseEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum value, MarkAttributeDirty markDirty); +Get(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum * value); // TimeZoneDatabaseEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::TimeSynchronization::TimeZoneDatabaseEnum value, + MarkAttributeDirty markDirty); } // namespace TimeZoneDatabase namespace NTPServerAvailable { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace NTPServerAvailable namespace SupportsDNSResolve { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace SupportsDNSResolve namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1208,111 +1199,111 @@ namespace BridgedDeviceBasicInformation { namespace Attributes { namespace VendorName { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace VendorName namespace VendorID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::VendorId * value); // vendor_id -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::VendorId * value); // vendor_id +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty); } // namespace VendorID namespace ProductName { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace ProductName namespace ProductID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ProductID namespace NodeLabel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace NodeLabel namespace HardwareVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace HardwareVersion namespace HardwareVersionString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace HardwareVersionString namespace SoftwareVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace SoftwareVersion namespace SoftwareVersionString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace SoftwareVersionString namespace ManufacturingDate { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace ManufacturingDate namespace PartNumber { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace PartNumber namespace ProductURL { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // long_char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // long_char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace ProductURL namespace ProductLabel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace ProductLabel namespace SerialNumber { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace SerialNumber namespace Reachable { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace Reachable namespace UniqueID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace UniqueID namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1322,33 +1313,33 @@ namespace Switch { namespace Attributes { namespace NumberOfPositions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfPositions namespace CurrentPosition { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace CurrentPosition namespace MultiPressMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MultiPressMax namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1358,15 +1349,15 @@ namespace AdministratorCommissioning { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1376,15 +1367,15 @@ namespace OperationalCredentials { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1398,15 +1389,15 @@ namespace FixedLabel { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1416,15 +1407,15 @@ namespace UserLabel { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1434,15 +1425,15 @@ namespace ProxyConfiguration { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1452,15 +1443,15 @@ namespace ProxyDiscovery { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1470,15 +1461,15 @@ namespace ProxyValid { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1488,21 +1479,21 @@ namespace BooleanState { namespace Attributes { namespace StateValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace StateValue namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1513,39 +1504,39 @@ namespace Attributes { namespace UserActiveModeTriggerHint { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // UserActiveModeTriggerBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace UserActiveModeTriggerHint namespace UserActiveModeTriggerInstruction { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace UserActiveModeTriggerInstruction namespace OperatingMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum * value); // OperatingModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::IcdManagement::OperatingModeEnum value, MarkAttributeDirty markDirty); } // namespace OperatingMode namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1555,35 +1546,35 @@ namespace Timer { namespace Attributes { namespace SetTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // elapsed_s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // elapsed_s +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace SetTime namespace TimeRemaining { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // elapsed_s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // elapsed_s +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace TimeRemaining namespace TimerState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum * value); // TimerStatusEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Timer::TimerStatusEnum value, MarkAttributeDirty markDirty); } // namespace TimerState namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1593,15 +1584,15 @@ namespace OvenCavityOperationalState { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1611,43 +1602,43 @@ namespace OvenMode { namespace Attributes { namespace CurrentMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace CurrentMode namespace StartUpMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace StartUpMode namespace OnMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OnMode namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1658,33 +1649,30 @@ namespace Attributes { namespace SelectedDrynessLevel { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, DataModel::Nullable & value); // DrynessLevelEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::LaundryDryerControls::DrynessLevelEnum value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::LaundryDryerControls::DrynessLevelEnum value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::LaundryDryerControls::DrynessLevelEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::LaundryDryerControls::DrynessLevelEnum value, + MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, - const chip::app::DataModel::Nullable & value); +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, - const chip::app::DataModel::Nullable & value, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace SelectedDrynessLevel namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1694,60 +1682,60 @@ namespace ModeSelect { namespace Attributes { namespace Description { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace Description namespace StandardNamespace { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // enum16 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // enum16 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace StandardNamespace namespace CurrentMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace CurrentMode namespace StartUpMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace StartUpMode namespace OnMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OnMode namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1757,9 +1745,9 @@ namespace LaundryWasherMode { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1769,9 +1757,9 @@ namespace RefrigeratorAndTemperatureControlledCabinetMode { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1781,35 +1769,34 @@ namespace LaundryWasherControls { namespace Attributes { namespace SpinSpeedCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace SpinSpeedCurrent namespace NumberOfRinses { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum * value); // NumberOfRinsesEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum value, MarkAttributeDirty markDirty); +Get(EndpointId endpoint, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum * value); // NumberOfRinsesEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum value, + MarkAttributeDirty markDirty); } // namespace NumberOfRinses namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1819,9 +1806,9 @@ namespace RvcRunMode { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1831,9 +1818,9 @@ namespace RvcCleanMode { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1843,45 +1830,45 @@ namespace TemperatureControl { namespace Attributes { namespace TemperatureSetpoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace TemperatureSetpoint namespace MinTemperature { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MinTemperature namespace MaxTemperature { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MaxTemperature namespace Step { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace Step namespace SelectedTemperatureLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace SelectedTemperatureLevel namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1891,45 +1878,42 @@ namespace RefrigeratorAlarm { namespace Attributes { namespace Mask { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // AlarmBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace Mask namespace State { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // AlarmBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace State namespace Supported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // AlarmBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace Supported namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1939,9 +1923,9 @@ namespace DishwasherMode { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1951,9 +1935,9 @@ namespace AirQuality { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -1963,113 +1947,113 @@ namespace SmokeCoAlarm { namespace Attributes { namespace ExpressedState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum * value); // ExpressedStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum value, MarkAttributeDirty markDirty); } // namespace ExpressedState namespace SmokeState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value); // AlarmStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, MarkAttributeDirty markDirty); } // namespace SmokeState namespace COState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value); // AlarmStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, MarkAttributeDirty markDirty); } // namespace COState namespace BatteryAlert { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value); // AlarmStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, MarkAttributeDirty markDirty); } // namespace BatteryAlert namespace DeviceMuted { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum * value); // MuteStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum value, MarkAttributeDirty markDirty); } // namespace DeviceMuted namespace TestInProgress { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace TestInProgress namespace HardwareFaultAlert { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace HardwareFaultAlert namespace EndOfServiceAlert { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum * value); // EndOfServiceEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum value, MarkAttributeDirty markDirty); } // namespace EndOfServiceAlert namespace InterconnectSmokeAlarm { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value); // AlarmStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, MarkAttributeDirty markDirty); } // namespace InterconnectSmokeAlarm namespace InterconnectCOAlarm { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum * value); // AlarmStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum value, MarkAttributeDirty markDirty); } // namespace InterconnectCOAlarm namespace ContaminationState { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum * value); // ContaminationStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum value, +Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum * value); // ContaminationStateEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum value, MarkAttributeDirty markDirty); } // namespace ContaminationState namespace SmokeSensitivityLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum * value); // SensitivityEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum value, MarkAttributeDirty markDirty); } // namespace SmokeSensitivityLevel namespace ExpiryDate { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // epoch_s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // epoch_s +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace ExpiryDate namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2079,55 +2063,51 @@ namespace DishwasherAlarm { namespace Attributes { namespace Mask { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // AlarmBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace Mask namespace Latch { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // AlarmBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace Latch namespace State { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // AlarmBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace State namespace Supported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // AlarmBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace Supported namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2137,9 +2117,9 @@ namespace MicrowaveOvenMode { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2149,9 +2129,9 @@ namespace MicrowaveOvenControl { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2161,15 +2141,15 @@ namespace OperationalState { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2179,15 +2159,15 @@ namespace RvcOperationalState { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2197,32 +2177,32 @@ namespace ScenesManagement { namespace Attributes { namespace LastConfiguredBy { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // node_id -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::NodeId value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::NodeId value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // node_id +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::NodeId value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::NodeId value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LastConfiguredBy namespace SceneTableSize { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace SceneTableSize namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2232,9 +2212,9 @@ namespace HepaFilterMonitoring { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2244,9 +2224,9 @@ namespace ActivatedCarbonFilterMonitoring { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2256,82 +2236,78 @@ namespace BooleanStateConfiguration { namespace Attributes { namespace SupportedSensitivityLevels { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace SupportedSensitivityLevels namespace DefaultSensitivityLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace DefaultSensitivityLevel namespace AlarmsActive { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, - chip::BitMask * value); // AlarmModeBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // AlarmModeBitmap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace AlarmsActive namespace AlarmsSuppressed { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, - chip::BitMask * value); // AlarmModeBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // AlarmModeBitmap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace AlarmsSuppressed namespace AlarmsEnabled { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, - chip::BitMask * value); // AlarmModeBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // AlarmModeBitmap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace AlarmsEnabled namespace AlarmsSupported { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, - chip::BitMask * value); // AlarmModeBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // AlarmModeBitmap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace AlarmsSupported namespace SensorFault { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // SensorFaultBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace SensorFault namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2341,133 +2317,131 @@ namespace ValveConfigurationAndControl { namespace Attributes { namespace OpenDuration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // elapsed_s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // elapsed_s +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OpenDuration namespace DefaultOpenDuration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // elapsed_s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // elapsed_s +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace DefaultOpenDuration namespace AutoCloseTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // epoch_us -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // epoch_us +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace AutoCloseTime namespace CurrentState { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, DataModel::Nullable & value); // ValveStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ValveConfigurationAndControl::ValveStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::ValveConfigurationAndControl::ValveStateEnum value, - MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, chip::app::Clusters::ValveConfigurationAndControl::ValveStateEnum value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace CurrentState namespace TargetState { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, DataModel::Nullable & value); // ValveStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ValveConfigurationAndControl::ValveStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::ValveConfigurationAndControl::ValveStateEnum value, - MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, chip::app::Clusters::ValveConfigurationAndControl::ValveStateEnum value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace TargetState namespace CurrentLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // percent -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // percent +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace CurrentLevel namespace TargetLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // percent -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // percent +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace TargetLevel namespace DefaultOpenLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Percent * value); // percent -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::Percent * value); // percent +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); } // namespace DefaultOpenLevel namespace ValveFault { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // ValveFaultBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace ValveFault namespace LevelStep { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace LevelStep namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2477,9 +2451,9 @@ namespace ElectricalPowerMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2489,9 +2463,9 @@ namespace ElectricalEnergyMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2505,45 +2479,45 @@ namespace DemandResponseLoadControl { namespace Attributes { namespace NumberOfLoadControlPrograms { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfLoadControlPrograms namespace NumberOfEventsPerProgram { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfEventsPerProgram namespace NumberOfTransitions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfTransitions namespace DefaultRandomStart { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace DefaultRandomStart namespace DefaultRandomDuration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace DefaultRandomDuration namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2553,15 +2527,15 @@ namespace Messages { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2571,9 +2545,9 @@ namespace DeviceEnergyManagement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2583,9 +2557,9 @@ namespace EnergyEvse { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2595,27 +2569,27 @@ namespace EnergyPreference { namespace Attributes { namespace CurrentEnergyBalance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace CurrentEnergyBalance namespace CurrentLowPowerModeSensitivity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace CurrentLowPowerModeSensitivity namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2625,9 +2599,9 @@ namespace PowerTopology { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2637,31 +2611,31 @@ namespace EnergyEvseMode { namespace Attributes { namespace StartUpMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace StartUpMode namespace OnMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OnMode namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2671,31 +2645,31 @@ namespace WaterHeaterMode { namespace Attributes { namespace StartUpMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace StartUpMode namespace OnMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OnMode namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2705,31 +2679,31 @@ namespace DeviceEnergyManagementMode { namespace Attributes { namespace StartUpMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace StartUpMode namespace OnMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OnMode namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -2739,271 +2713,270 @@ namespace DoorLock { namespace Attributes { namespace LockState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // DlLockState -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockState value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockState value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockState value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockState value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LockState namespace LockType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType * value); // DlLockType -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType * value); // DlLockType +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DlLockType value, MarkAttributeDirty markDirty); } // namespace LockType namespace ActuatorEnabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace ActuatorEnabled namespace DoorState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // DoorStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DoorStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::DoorStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DoorStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::DoorStateEnum value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace DoorState namespace DoorOpenEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace DoorOpenEvents namespace DoorClosedEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace DoorClosedEvents namespace OpenPeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace OpenPeriod namespace NumberOfTotalUsersSupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace NumberOfTotalUsersSupported namespace NumberOfPINUsersSupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace NumberOfPINUsersSupported namespace NumberOfRFIDUsersSupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace NumberOfRFIDUsersSupported namespace NumberOfWeekDaySchedulesSupportedPerUser { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfWeekDaySchedulesSupportedPerUser namespace NumberOfYearDaySchedulesSupportedPerUser { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfYearDaySchedulesSupportedPerUser namespace NumberOfHolidaySchedulesSupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfHolidaySchedulesSupported namespace MaxPINCodeLength { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MaxPINCodeLength namespace MinPINCodeLength { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MinPINCodeLength namespace MaxRFIDCodeLength { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MaxRFIDCodeLength namespace MinRFIDCodeLength { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MinRFIDCodeLength namespace CredentialRulesSupport { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::BitMask * value); // DlCredentialRuleMask -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // DlCredentialRuleMask +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace CredentialRulesSupport namespace NumberOfCredentialsSupportedPerUser { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfCredentialsSupportedPerUser namespace Language { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace Language namespace LEDSettings { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace LEDSettings namespace AutoRelockTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace AutoRelockTime namespace SoundVolume { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace SoundVolume namespace OperatingMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum * value); // OperatingModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::DoorLock::OperatingModeEnum value, MarkAttributeDirty markDirty); } // namespace OperatingMode namespace SupportedOperatingModes { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // DlSupportedOperatingModes -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace SupportedOperatingModes namespace DefaultConfigurationRegister { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // DlDefaultConfigurationRegister -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace DefaultConfigurationRegister namespace EnableLocalProgramming { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace EnableLocalProgramming namespace EnableOneTouchLocking { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace EnableOneTouchLocking namespace EnableInsideStatusLED { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace EnableInsideStatusLED namespace EnablePrivacyModeButton { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace EnablePrivacyModeButton namespace LocalProgrammingFeatures { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // DlLocalProgrammingFeatures -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace LocalProgrammingFeatures namespace WrongCodeEntryLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace WrongCodeEntryLimit namespace UserCodeTemporaryDisableTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace UserCodeTemporaryDisableTime namespace SendPINOverTheAir { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace SendPINOverTheAir namespace RequirePINforRemoteOperation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace RequirePINforRemoteOperation namespace ExpiringUserTimeout { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ExpiringUserTimeout namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -3013,212 +2986,201 @@ namespace WindowCovering { namespace Attributes { namespace Type { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::Type * value); // Type -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::Type value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::Type value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::WindowCovering::Type * value); // Type +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::WindowCovering::Type value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::WindowCovering::Type value, MarkAttributeDirty markDirty); } // namespace Type namespace PhysicalClosedLimitLift { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace PhysicalClosedLimitLift namespace PhysicalClosedLimitTilt { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace PhysicalClosedLimitTilt namespace CurrentPositionLift { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace CurrentPositionLift namespace CurrentPositionTilt { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace CurrentPositionTilt namespace NumberOfActuationsLift { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace NumberOfActuationsLift namespace NumberOfActuationsTilt { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace NumberOfActuationsTilt namespace ConfigStatus { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // ConfigStatus -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace ConfigStatus namespace CurrentPositionLiftPercentage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // percent -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // percent +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace CurrentPositionLiftPercentage namespace CurrentPositionTiltPercentage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // percent -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // percent +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace CurrentPositionTiltPercentage namespace OperationalStatus { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::BitMask * value); // OperationalStatus -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // OperationalStatus +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace OperationalStatus namespace TargetPositionLiftPercent100ths { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - DataModel::Nullable & value); // percent100ths -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // percent100ths +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, + MarkAttributeDirty markDirty); } // namespace TargetPositionLiftPercent100ths namespace TargetPositionTiltPercent100ths { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - DataModel::Nullable & value); // percent100ths -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // percent100ths +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, + MarkAttributeDirty markDirty); } // namespace TargetPositionTiltPercent100ths namespace EndProductType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType * value); // EndProductType -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::WindowCovering::EndProductType value, MarkAttributeDirty markDirty); } // namespace EndProductType namespace CurrentPositionLiftPercent100ths { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - DataModel::Nullable & value); // percent100ths -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // percent100ths +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, + MarkAttributeDirty markDirty); } // namespace CurrentPositionLiftPercent100ths namespace CurrentPositionTiltPercent100ths { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - DataModel::Nullable & value); // percent100ths -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // percent100ths +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent100ths value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, + MarkAttributeDirty markDirty); } // namespace CurrentPositionTiltPercent100ths namespace InstalledOpenLimitLift { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace InstalledOpenLimitLift namespace InstalledClosedLimitLift { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace InstalledClosedLimitLift namespace InstalledOpenLimitTilt { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace InstalledOpenLimitTilt namespace InstalledClosedLimitTilt { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace InstalledClosedLimitTilt namespace Mode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // Mode -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace Mode namespace SafetyStatus { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // SafetyStatus -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace SafetyStatus namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -3228,75 +3190,75 @@ namespace BarrierControl { namespace Attributes { namespace BarrierMovingState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // enum8 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // enum8 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace BarrierMovingState namespace BarrierSafetyStatus { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // bitmap16 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // bitmap16 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace BarrierSafetyStatus namespace BarrierCapabilities { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // bitmap8 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // bitmap8 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace BarrierCapabilities namespace BarrierOpenEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace BarrierOpenEvents namespace BarrierCloseEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace BarrierCloseEvents namespace BarrierCommandOpenEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace BarrierCommandOpenEvents namespace BarrierCommandCloseEvents { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace BarrierCommandCloseEvents namespace BarrierOpenPeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace BarrierOpenPeriod namespace BarrierClosePeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace BarrierClosePeriod namespace BarrierPosition { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace BarrierPosition namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -3306,9 +3268,9 @@ namespace ServiceArea { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -3318,264 +3280,260 @@ namespace PumpConfigurationAndControl { namespace Attributes { namespace MaxPressure { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxPressure namespace MaxSpeed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxSpeed namespace MaxFlow { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxFlow namespace MinConstPressure { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinConstPressure namespace MaxConstPressure { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxConstPressure namespace MinCompPressure { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinCompPressure namespace MaxCompPressure { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxCompPressure namespace MinConstSpeed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinConstSpeed namespace MaxConstSpeed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxConstSpeed namespace MinConstFlow { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinConstFlow namespace MaxConstFlow { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxConstFlow namespace MinConstTemp { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinConstTemp namespace MaxConstTemp { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxConstTemp namespace PumpStatus { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // PumpStatusBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace PumpStatus namespace EffectiveOperationMode { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum * value); // OperationModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum * value); // OperationModeEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value, MarkAttributeDirty markDirty); } // namespace EffectiveOperationMode namespace EffectiveControlMode { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum * value); // ControlModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum * value); // ControlModeEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value, MarkAttributeDirty markDirty); } // namespace EffectiveControlMode namespace Capacity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace Capacity namespace Speed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace Speed namespace LifetimeRunningHours { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int24u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int24u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LifetimeRunningHours namespace Power { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int24u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int24u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace Power namespace LifetimeEnergyConsumed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LifetimeEnergyConsumed namespace OperationMode { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum * value); // OperationModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum * value); // OperationModeEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::OperationModeEnum value, MarkAttributeDirty markDirty); } // namespace OperationMode namespace ControlMode { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum * value); // ControlModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum * value); // ControlModeEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::app::Clusters::PumpConfigurationAndControl::ControlModeEnum value, MarkAttributeDirty markDirty); } // namespace ControlMode namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -3585,479 +3543,466 @@ namespace Thermostat { namespace Attributes { namespace LocalTemperature { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LocalTemperature namespace OutdoorTemperature { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OutdoorTemperature namespace Occupancy { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // OccupancyBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty); } // namespace Occupancy namespace AbsMinHeatSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace AbsMinHeatSetpointLimit namespace AbsMaxHeatSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace AbsMaxHeatSetpointLimit namespace AbsMinCoolSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace AbsMinCoolSetpointLimit namespace AbsMaxCoolSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace AbsMaxCoolSetpointLimit namespace PICoolingDemand { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace PICoolingDemand namespace PIHeatingDemand { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace PIHeatingDemand namespace HVACSystemTypeConfiguration { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, - chip::BitMask * value); // HVACSystemTypeBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // HVACSystemTypeBitmap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace HVACSystemTypeConfiguration namespace LocalTemperatureCalibration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); } // namespace LocalTemperatureCalibration namespace OccupiedCoolingSetpoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace OccupiedCoolingSetpoint namespace OccupiedHeatingSetpoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace OccupiedHeatingSetpoint namespace UnoccupiedCoolingSetpoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace UnoccupiedCoolingSetpoint namespace UnoccupiedHeatingSetpoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace UnoccupiedHeatingSetpoint namespace MinHeatSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MinHeatSetpointLimit namespace MaxHeatSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MaxHeatSetpointLimit namespace MinCoolSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MinCoolSetpointLimit namespace MaxCoolSetpointLimit { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MaxCoolSetpointLimit namespace MinSetpointDeadBand { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); } // namespace MinSetpointDeadBand namespace RemoteSensing { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::BitMask * value); // RemoteSensingBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // RemoteSensingBitmap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace RemoteSensing namespace ControlSequenceOfOperation { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, - chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum * value); // ControlSequenceOfOperationEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum value, MarkAttributeDirty markDirty); +Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum * value); // ControlSequenceOfOperationEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ControlSequenceOfOperationEnum value, + MarkAttributeDirty markDirty); } // namespace ControlSequenceOfOperation namespace SystemMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum * value); // SystemModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::SystemModeEnum value, MarkAttributeDirty markDirty); } // namespace SystemMode namespace ThermostatRunningMode { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum * value); // ThermostatRunningModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::Thermostat::ThermostatRunningModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum value, +Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum * value); // ThermostatRunningModeEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ThermostatRunningModeEnum value, MarkAttributeDirty markDirty); } // namespace ThermostatRunningMode namespace StartOfWeek { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum * value); // StartOfWeekEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::StartOfWeekEnum value, MarkAttributeDirty markDirty); } // namespace StartOfWeek namespace NumberOfWeeklyTransitions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfWeeklyTransitions namespace NumberOfDailyTransitions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfDailyTransitions namespace TemperatureSetpointHold { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum * value); // TemperatureSetpointHoldEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum value, MarkAttributeDirty markDirty); +Get(EndpointId endpoint, chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum * value); // TemperatureSetpointHoldEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::TemperatureSetpointHoldEnum value, + MarkAttributeDirty markDirty); } // namespace TemperatureSetpointHold namespace TemperatureSetpointHoldDuration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace TemperatureSetpointHoldDuration namespace ThermostatProgrammingOperationMode { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // ProgrammingOperationModeBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace ThermostatProgrammingOperationMode namespace ThermostatRunningState { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::BitMask * value); // RelayStateBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // RelayStateBitmap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace ThermostatRunningState namespace SetpointChangeSource { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum * value); // SetpointChangeSourceEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum value, +Get(EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum * value); // SetpointChangeSourceEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::SetpointChangeSourceEnum value, MarkAttributeDirty markDirty); } // namespace SetpointChangeSource namespace SetpointChangeAmount { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace SetpointChangeAmount namespace SetpointChangeSourceTimestamp { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // epoch_s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // epoch_s +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace SetpointChangeSourceTimestamp namespace OccupiedSetback { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OccupiedSetback namespace OccupiedSetbackMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OccupiedSetbackMin namespace OccupiedSetbackMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace OccupiedSetbackMax namespace UnoccupiedSetback { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace UnoccupiedSetback namespace UnoccupiedSetbackMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace UnoccupiedSetbackMin namespace UnoccupiedSetbackMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace UnoccupiedSetbackMax namespace EmergencyHeatDelta { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace EmergencyHeatDelta namespace ACType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::Thermostat::ACTypeEnum * value); // ACTypeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum * value); // ACTypeEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACTypeEnum value, MarkAttributeDirty markDirty); } // namespace ACType namespace ACCapacity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ACCapacity namespace ACRefrigerantType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum * value); // ACRefrigerantTypeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACRefrigerantTypeEnum value, MarkAttributeDirty markDirty); } // namespace ACRefrigerantType namespace ACCompressorType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum * value); // ACCompressorTypeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCompressorTypeEnum value, MarkAttributeDirty markDirty); } // namespace ACCompressorType namespace ACErrorCode { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::BitMask * value); // ACErrorCodeBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // ACErrorCodeBitmap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace ACErrorCode namespace ACLouverPosition { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum * value); // ACLouverPositionEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACLouverPositionEnum value, MarkAttributeDirty markDirty); } // namespace ACLouverPosition namespace ACCoilTemperature { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace ACCoilTemperature namespace ACCapacityformat { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum * value); // ACCapacityFormatEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Thermostat::ACCapacityFormatEnum value, MarkAttributeDirty markDirty); } // namespace ACCapacityformat namespace NumberOfPresets { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfPresets namespace NumberOfSchedules { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfSchedules namespace NumberOfScheduleTransitions { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace NumberOfScheduleTransitions namespace NumberOfScheduleTransitionPerDay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NumberOfScheduleTransitionPerDay namespace ActivePresetHandle { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - DataModel::Nullable & value); // octet_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // octet_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace ActivePresetHandle namespace ActiveScheduleHandle { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - DataModel::Nullable & value); // octet_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // octet_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace ActiveScheduleHandle namespace SetpointHoldExpiryTimestamp { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // epoch_s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // epoch_s +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace SetpointHoldExpiryTimestamp namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -4067,115 +4012,110 @@ namespace FanControl { namespace Attributes { namespace FanMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::FanControl::FanModeEnum * value); // FanModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum * value); // FanModeEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeEnum value, MarkAttributeDirty markDirty); } // namespace FanMode namespace FanModeSequence { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum * value); // FanModeSequenceEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::FanModeSequenceEnum value, MarkAttributeDirty markDirty); } // namespace FanModeSequence namespace PercentSetting { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // percent -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // percent +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace PercentSetting namespace PercentCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::Percent * value); // percent -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::Percent * value); // percent +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::Percent value, MarkAttributeDirty markDirty); } // namespace PercentCurrent namespace SpeedMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace SpeedMax namespace SpeedSetting { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace SpeedSetting namespace SpeedCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace SpeedCurrent namespace RockSupport { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // RockBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace RockSupport namespace RockSetting { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // RockBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace RockSetting namespace WindSupport { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // WindBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace WindSupport namespace WindSetting { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // WindBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace WindSetting namespace AirflowDirection { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum * value); // AirflowDirectionEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::FanControl::AirflowDirectionEnum value, MarkAttributeDirty markDirty); } // namespace AirflowDirection namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -4186,48 +4126,47 @@ namespace Attributes { namespace TemperatureDisplayMode { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::TemperatureDisplayModeEnum * value); // TemperatureDisplayModeEnum Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::TemperatureDisplayModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::TemperatureDisplayModeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::TemperatureDisplayModeEnum value, MarkAttributeDirty markDirty); } // namespace TemperatureDisplayMode namespace KeypadLockout { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, - chip::app::Clusters::ThermostatUserInterfaceConfiguration::KeypadLockoutEnum * value); // KeypadLockoutEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::KeypadLockoutEnum * value); // KeypadLockoutEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::KeypadLockoutEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::KeypadLockoutEnum value, MarkAttributeDirty markDirty); } // namespace KeypadLockout namespace ScheduleProgrammingVisibility { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum * value); // ScheduleProgrammingVisibilityEnum Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum value); +Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum value, +Set(EndpointId endpoint, chip::app::Clusters::ThermostatUserInterfaceConfiguration::ScheduleProgrammingVisibilityEnum value, MarkAttributeDirty markDirty); } // namespace ScheduleProgrammingVisibility namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -4237,396 +4176,395 @@ namespace ColorControl { namespace Attributes { namespace CurrentHue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace CurrentHue namespace CurrentSaturation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace CurrentSaturation namespace RemainingTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RemainingTime namespace CurrentX { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace CurrentX namespace CurrentY { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace CurrentY namespace DriftCompensation { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum * value); // DriftCompensationEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum value, MarkAttributeDirty markDirty); } // namespace DriftCompensation namespace CompensationText { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace CompensationText namespace ColorTemperatureMireds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorTemperatureMireds namespace ColorMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum * value); // ColorModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum value, MarkAttributeDirty markDirty); } // namespace ColorMode namespace Options { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // OptionsBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty); } // namespace Options namespace NumberOfPrimaries { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NumberOfPrimaries namespace Primary1X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary1X namespace Primary1Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary1Y namespace Primary1Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace Primary1Intensity namespace Primary2X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary2X namespace Primary2Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary2Y namespace Primary2Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace Primary2Intensity namespace Primary3X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary3X namespace Primary3Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary3Y namespace Primary3Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace Primary3Intensity namespace Primary4X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary4X namespace Primary4Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary4Y namespace Primary4Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace Primary4Intensity namespace Primary5X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary5X namespace Primary5Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary5Y namespace Primary5Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace Primary5Intensity namespace Primary6X { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary6X namespace Primary6Y { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Primary6Y namespace Primary6Intensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace Primary6Intensity namespace WhitePointX { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace WhitePointX namespace WhitePointY { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace WhitePointY namespace ColorPointRX { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorPointRX namespace ColorPointRY { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorPointRY namespace ColorPointRIntensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace ColorPointRIntensity namespace ColorPointGX { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorPointGX namespace ColorPointGY { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorPointGY namespace ColorPointGIntensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace ColorPointGIntensity namespace ColorPointBX { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorPointBX namespace ColorPointBY { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorPointBY namespace ColorPointBIntensity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace ColorPointBIntensity namespace EnhancedCurrentHue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace EnhancedCurrentHue namespace EnhancedColorMode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum * value); // EnhancedColorModeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum value, MarkAttributeDirty markDirty); } // namespace EnhancedColorMode namespace ColorLoopActive { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace ColorLoopActive namespace ColorLoopDirection { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace ColorLoopDirection namespace ColorLoopTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorLoopTime namespace ColorLoopStartEnhancedHue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorLoopStartEnhancedHue namespace ColorLoopStoredEnhancedHue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorLoopStoredEnhancedHue namespace ColorCapabilities { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // ColorCapabilitiesBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace ColorCapabilities namespace ColorTempPhysicalMinMireds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorTempPhysicalMinMireds namespace ColorTempPhysicalMaxMireds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ColorTempPhysicalMaxMireds namespace CoupleColorTempToLevelMinMireds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace CoupleColorTempToLevelMinMireds namespace StartUpColorTemperatureMireds { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace StartUpColorTemperatureMireds namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -4636,134 +4574,134 @@ namespace BallastConfiguration { namespace Attributes { namespace PhysicalMinLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace PhysicalMinLevel namespace PhysicalMaxLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace PhysicalMaxLevel namespace BallastStatus { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // BallastStatusBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace BallastStatus namespace MinLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MinLevel namespace MaxLevel { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MaxLevel namespace IntrinsicBallastFactor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace IntrinsicBallastFactor namespace BallastFactorAdjustment { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace BallastFactorAdjustment namespace LampQuantity { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace LampQuantity namespace LampType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace LampType namespace LampManufacturer { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace LampManufacturer namespace LampRatedHours { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int24u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int24u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LampRatedHours namespace LampBurnHours { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int24u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int24u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LampBurnHours namespace LampAlarmMode { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // LampAlarmModeBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace LampAlarmMode namespace LampBurnHoursTripPoint { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int24u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int24u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LampBurnHoursTripPoint namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -4773,74 +4711,73 @@ namespace IlluminanceMeasurement { namespace Attributes { namespace MeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MeasuredValue namespace MinMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinMeasuredValue namespace MaxMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxMeasuredValue namespace Tolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Tolerance namespace LightSensorType { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, DataModel::Nullable & value); // LightSensorTypeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::IlluminanceMeasurement::LightSensorTypeEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::IlluminanceMeasurement::LightSensorTypeEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::IlluminanceMeasurement::LightSensorTypeEnum value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace LightSensorType namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -4850,54 +4787,54 @@ namespace TemperatureMeasurement { namespace Attributes { namespace MeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MeasuredValue namespace MinMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinMeasuredValue namespace MaxMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // temperature -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // temperature +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxMeasuredValue namespace Tolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Tolerance namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -4907,99 +4844,99 @@ namespace PressureMeasurement { namespace Attributes { namespace MeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MeasuredValue namespace MinMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinMeasuredValue namespace MaxMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxMeasuredValue namespace Tolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Tolerance namespace ScaledValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace ScaledValue namespace MinScaledValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinScaledValue namespace MaxScaledValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxScaledValue namespace ScaledTolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ScaledTolerance namespace Scale { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); } // namespace Scale namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5009,54 +4946,54 @@ namespace FlowMeasurement { namespace Attributes { namespace MeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MeasuredValue namespace MinMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinMeasuredValue namespace MaxMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxMeasuredValue namespace Tolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Tolerance namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5066,54 +5003,54 @@ namespace RelativeHumidityMeasurement { namespace Attributes { namespace MeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MeasuredValue namespace MinMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MinMeasuredValue namespace MaxMeasuredValue { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace MaxMeasuredValue namespace Tolerance { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Tolerance namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5124,92 +5061,90 @@ namespace Attributes { namespace Occupancy { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::BitMask * value); // OccupancyBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // OccupancyBitmap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, - MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace Occupancy namespace OccupancySensorType { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum * value); // OccupancySensorTypeEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum value, MarkAttributeDirty markDirty); +Get(EndpointId endpoint, chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum * value); // OccupancySensorTypeEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::OccupancySensing::OccupancySensorTypeEnum value, + MarkAttributeDirty markDirty); } // namespace OccupancySensorType namespace OccupancySensorTypeBitmap { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // OccupancySensorTypeBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace OccupancySensorTypeBitmap namespace PIROccupiedToUnoccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace PIROccupiedToUnoccupiedDelay namespace PIRUnoccupiedToOccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace PIRUnoccupiedToOccupiedDelay namespace PIRUnoccupiedToOccupiedThreshold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace PIRUnoccupiedToOccupiedThreshold namespace UltrasonicOccupiedToUnoccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace UltrasonicOccupiedToUnoccupiedDelay namespace UltrasonicUnoccupiedToOccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace UltrasonicUnoccupiedToOccupiedDelay namespace UltrasonicUnoccupiedToOccupiedThreshold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace UltrasonicUnoccupiedToOccupiedThreshold namespace PhysicalContactOccupiedToUnoccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace PhysicalContactOccupiedToUnoccupiedDelay namespace PhysicalContactUnoccupiedToOccupiedDelay { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace PhysicalContactUnoccupiedToOccupiedDelay namespace PhysicalContactUnoccupiedToOccupiedThreshold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace PhysicalContactUnoccupiedToOccupiedThreshold namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5219,9 +5154,9 @@ namespace CarbonMonoxideConcentrationMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5231,9 +5166,9 @@ namespace CarbonDioxideConcentrationMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5243,9 +5178,9 @@ namespace NitrogenDioxideConcentrationMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5255,9 +5190,9 @@ namespace OzoneConcentrationMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5267,9 +5202,9 @@ namespace Pm25ConcentrationMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5279,9 +5214,9 @@ namespace FormaldehydeConcentrationMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5291,9 +5226,9 @@ namespace Pm1ConcentrationMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5303,9 +5238,9 @@ namespace Pm10ConcentrationMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5315,9 +5250,9 @@ namespace TotalVolatileOrganicCompoundsConcentrationMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5327,9 +5262,9 @@ namespace RadonConcentrationMeasurement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5339,15 +5274,15 @@ namespace WiFiNetworkManagement { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5357,9 +5292,9 @@ namespace ThreadBorderRouterManagement { namespace Attributes { namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5369,15 +5304,15 @@ namespace ThreadNetworkDirectory { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5387,27 +5322,27 @@ namespace WakeOnLan { namespace Attributes { namespace MACAddress { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace MACAddress namespace LinkLocalAddress { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableByteSpan & value); // octet_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableByteSpan & value); // octet_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); } // namespace LinkLocalAddress namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5417,15 +5352,15 @@ namespace Channel { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5435,21 +5370,21 @@ namespace TargetNavigator { namespace Attributes { namespace CurrentTarget { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace CurrentTarget namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5459,73 +5394,73 @@ namespace MediaPlayback { namespace Attributes { namespace CurrentState { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum * value); // PlaybackStateEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::MediaPlayback::PlaybackStateEnum value, MarkAttributeDirty markDirty); } // namespace CurrentState namespace StartTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // epoch_us -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // epoch_us +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace StartTime namespace Duration { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int64u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int64u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace Duration namespace PlaybackSpeed { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, float * value); // single -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, float * value); // single +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value, MarkAttributeDirty markDirty); } // namespace PlaybackSpeed namespace SeekRangeEnd { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int64u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int64u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace SeekRangeEnd namespace SeekRangeStart { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int64u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int64u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace SeekRangeStart namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5535,21 +5470,21 @@ namespace MediaInput { namespace Attributes { namespace CurrentInput { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace CurrentInput namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5559,15 +5494,15 @@ namespace LowPower { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5577,15 +5512,15 @@ namespace KeypadInput { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5596,25 +5531,25 @@ namespace Attributes { namespace SupportedStreamingProtocols { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // SupportedProtocolsBitmap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace SupportedStreamingProtocols namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5624,21 +5559,21 @@ namespace AudioOutput { namespace Attributes { namespace CurrentOutput { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace CurrentOutput namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5648,15 +5583,15 @@ namespace ApplicationLauncher { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5666,54 +5601,53 @@ namespace ApplicationBasic { namespace Attributes { namespace VendorName { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace VendorName namespace VendorID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::VendorId * value); // vendor_id -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::VendorId * value); // vendor_id +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty); } // namespace VendorID namespace ApplicationName { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // long_char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // long_char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace ApplicationName namespace ProductID { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ProductID namespace Status { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum * value); // ApplicationStatusEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum value, MarkAttributeDirty markDirty); +Get(EndpointId endpoint, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum * value); // ApplicationStatusEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::ApplicationBasic::ApplicationStatusEnum value, + MarkAttributeDirty markDirty); } // namespace Status namespace ApplicationVersion { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace ApplicationVersion namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5723,15 +5657,15 @@ namespace AccountLogin { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5741,51 +5675,51 @@ namespace ContentControl { namespace Attributes { namespace Enabled { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace Enabled namespace OnDemandRatingThreshold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace OnDemandRatingThreshold namespace ScheduledContentRatingThreshold { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace ScheduledContentRatingThreshold namespace ScreenDailyTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // elapsed_s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // elapsed_s +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace ScreenDailyTime namespace RemainingScreenTime { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // elapsed_s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // elapsed_s +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace RemainingScreenTime namespace BlockUnrated { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace BlockUnrated namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5795,15 +5729,15 @@ namespace ContentAppObserver { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5813,15 +5747,15 @@ namespace EcosystemInformation { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5831,26 +5765,26 @@ namespace CommissionerControl { namespace Attributes { namespace SupportedDeviceCategories { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // SupportedDeviceCategoryBitmap Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value); +Set(EndpointId endpoint, chip::BitMask value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, +Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace SupportedDeviceCategories namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -5860,783 +5794,783 @@ namespace ElectricalMeasurement { namespace Attributes { namespace MeasurementType { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace MeasurementType namespace DcVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace DcVoltage namespace DcVoltageMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace DcVoltageMin namespace DcVoltageMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace DcVoltageMax namespace DcCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace DcCurrent namespace DcCurrentMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace DcCurrentMin namespace DcCurrentMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace DcCurrentMax namespace DcPower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace DcPower namespace DcPowerMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace DcPowerMin namespace DcPowerMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace DcPowerMax namespace DcVoltageMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace DcVoltageMultiplier namespace DcVoltageDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace DcVoltageDivisor namespace DcCurrentMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace DcCurrentMultiplier namespace DcCurrentDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace DcCurrentDivisor namespace DcPowerMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace DcPowerMultiplier namespace DcPowerDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace DcPowerDivisor namespace AcFrequency { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcFrequency namespace AcFrequencyMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcFrequencyMin namespace AcFrequencyMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcFrequencyMax namespace NeutralCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace NeutralCurrent namespace TotalActivePower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * value); // int32s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int32_t * value); // int32s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); } // namespace TotalActivePower namespace TotalReactivePower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * value); // int32s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int32_t * value); // int32s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); } // namespace TotalReactivePower namespace TotalApparentPower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace TotalApparentPower namespace Measured1stHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace Measured1stHarmonicCurrent namespace Measured3rdHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace Measured3rdHarmonicCurrent namespace Measured5thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace Measured5thHarmonicCurrent namespace Measured7thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace Measured7thHarmonicCurrent namespace Measured9thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace Measured9thHarmonicCurrent namespace Measured11thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace Measured11thHarmonicCurrent namespace MeasuredPhase1stHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MeasuredPhase1stHarmonicCurrent namespace MeasuredPhase3rdHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MeasuredPhase3rdHarmonicCurrent namespace MeasuredPhase5thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MeasuredPhase5thHarmonicCurrent namespace MeasuredPhase7thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MeasuredPhase7thHarmonicCurrent namespace MeasuredPhase9thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MeasuredPhase9thHarmonicCurrent namespace MeasuredPhase11thHarmonicCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace MeasuredPhase11thHarmonicCurrent namespace AcFrequencyMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcFrequencyMultiplier namespace AcFrequencyDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcFrequencyDivisor namespace PowerMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace PowerMultiplier namespace PowerDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace PowerDivisor namespace HarmonicCurrentMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); } // namespace HarmonicCurrentMultiplier namespace PhaseHarmonicCurrentMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); } // namespace PhaseHarmonicCurrentMultiplier namespace InstantaneousVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace InstantaneousVoltage namespace InstantaneousLineCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace InstantaneousLineCurrent namespace InstantaneousActiveCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace InstantaneousActiveCurrent namespace InstantaneousReactiveCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace InstantaneousReactiveCurrent namespace InstantaneousPower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace InstantaneousPower namespace RmsVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltage namespace RmsVoltageMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageMin namespace RmsVoltageMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageMax namespace RmsCurrent { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsCurrent namespace RmsCurrentMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsCurrentMin namespace RmsCurrentMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsCurrentMax namespace ActivePower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActivePower namespace ActivePowerMin { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActivePowerMin namespace ActivePowerMax { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActivePowerMax namespace ReactivePower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ReactivePower namespace ApparentPower { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ApparentPower namespace PowerFactor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); } // namespace PowerFactor namespace AverageRmsVoltageMeasurementPeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AverageRmsVoltageMeasurementPeriod namespace AverageRmsUnderVoltageCounter { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AverageRmsUnderVoltageCounter namespace RmsExtremeOverVoltagePeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsExtremeOverVoltagePeriod namespace RmsExtremeUnderVoltagePeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsExtremeUnderVoltagePeriod namespace RmsVoltageSagPeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageSagPeriod namespace RmsVoltageSwellPeriod { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageSwellPeriod namespace AcVoltageMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcVoltageMultiplier namespace AcVoltageDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcVoltageDivisor namespace AcCurrentMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcCurrentMultiplier namespace AcCurrentDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcCurrentDivisor namespace AcPowerMultiplier { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcPowerMultiplier namespace AcPowerDivisor { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcPowerDivisor namespace OverloadAlarmsMask { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // bitmap8 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // bitmap8 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace OverloadAlarmsMask namespace VoltageOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace VoltageOverload namespace CurrentOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace CurrentOverload namespace AcOverloadAlarmsMask { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // bitmap16 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // bitmap16 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AcOverloadAlarmsMask namespace AcVoltageOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace AcVoltageOverload namespace AcCurrentOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace AcCurrentOverload namespace AcActivePowerOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace AcActivePowerOverload namespace AcReactivePowerOverload { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace AcReactivePowerOverload namespace AverageRmsOverVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace AverageRmsOverVoltage namespace AverageRmsUnderVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace AverageRmsUnderVoltage namespace RmsExtremeOverVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace RmsExtremeOverVoltage namespace RmsExtremeUnderVoltage { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace RmsExtremeUnderVoltage namespace RmsVoltageSag { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageSag namespace RmsVoltageSwell { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageSwell namespace LineCurrentPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace LineCurrentPhaseB namespace ActiveCurrentPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActiveCurrentPhaseB namespace ReactiveCurrentPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ReactiveCurrentPhaseB namespace RmsVoltagePhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltagePhaseB namespace RmsVoltageMinPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageMinPhaseB namespace RmsVoltageMaxPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageMaxPhaseB namespace RmsCurrentPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsCurrentPhaseB namespace RmsCurrentMinPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsCurrentMinPhaseB namespace RmsCurrentMaxPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsCurrentMaxPhaseB namespace ActivePowerPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActivePowerPhaseB namespace ActivePowerMinPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActivePowerMinPhaseB namespace ActivePowerMaxPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActivePowerMaxPhaseB namespace ReactivePowerPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ReactivePowerPhaseB namespace ApparentPowerPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ApparentPowerPhaseB namespace PowerFactorPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); } // namespace PowerFactorPhaseB namespace AverageRmsVoltageMeasurementPeriodPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AverageRmsVoltageMeasurementPeriodPhaseB namespace AverageRmsOverVoltageCounterPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AverageRmsOverVoltageCounterPhaseB namespace AverageRmsUnderVoltageCounterPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AverageRmsUnderVoltageCounterPhaseB namespace RmsExtremeOverVoltagePeriodPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsExtremeOverVoltagePeriodPhaseB namespace RmsExtremeUnderVoltagePeriodPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsExtremeUnderVoltagePeriodPhaseB namespace RmsVoltageSagPeriodPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageSagPeriodPhaseB namespace RmsVoltageSwellPeriodPhaseB { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageSwellPeriodPhaseB namespace LineCurrentPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace LineCurrentPhaseC namespace ActiveCurrentPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActiveCurrentPhaseC namespace ReactiveCurrentPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ReactiveCurrentPhaseC namespace RmsVoltagePhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltagePhaseC namespace RmsVoltageMinPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageMinPhaseC namespace RmsVoltageMaxPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageMaxPhaseC namespace RmsCurrentPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsCurrentPhaseC namespace RmsCurrentMinPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsCurrentMinPhaseC namespace RmsCurrentMaxPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsCurrentMaxPhaseC namespace ActivePowerPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActivePowerPhaseC namespace ActivePowerMinPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActivePowerMinPhaseC namespace ActivePowerMaxPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ActivePowerMaxPhaseC namespace ReactivePowerPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace ReactivePowerPhaseC namespace ApparentPowerPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ApparentPowerPhaseC namespace PowerFactorPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); } // namespace PowerFactorPhaseC namespace AverageRmsVoltageMeasurementPeriodPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AverageRmsVoltageMeasurementPeriodPhaseC namespace AverageRmsOverVoltageCounterPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AverageRmsOverVoltageCounterPhaseC namespace AverageRmsUnderVoltageCounterPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace AverageRmsUnderVoltageCounterPhaseC namespace RmsExtremeOverVoltagePeriodPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsExtremeOverVoltagePeriodPhaseC namespace RmsExtremeUnderVoltagePeriodPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsExtremeUnderVoltagePeriodPhaseC namespace RmsVoltageSagPeriodPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageSagPeriodPhaseC namespace RmsVoltageSwellPeriodPhaseC { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RmsVoltageSwellPeriodPhaseC namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -6646,706 +6580,695 @@ namespace UnitTesting { namespace Attributes { namespace Boolean { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace Boolean namespace Bitmap8 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::BitMask * value); // Bitmap8MaskMap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty); } // namespace Bitmap8 namespace Bitmap16 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::BitMask * value); // Bitmap16MaskMap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // Bitmap16MaskMap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace Bitmap16 namespace Bitmap32 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::BitMask * value); // Bitmap32MaskMap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // Bitmap32MaskMap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace Bitmap32 namespace Bitmap64 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, chip::BitMask * value); // Bitmap64MaskMap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Get(EndpointId endpoint, chip::BitMask * value); // Bitmap64MaskMap +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); } // namespace Bitmap64 namespace Int8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace Int8u namespace Int16u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Int16u namespace Int24u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int24u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int24u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace Int24u namespace Int32u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace Int32u namespace Int40u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value); // int40u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value); // int40u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); } // namespace Int40u namespace Int48u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value); // int48u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value); // int48u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); } // namespace Int48u namespace Int56u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value); // int56u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value); // int56u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); } // namespace Int56u namespace Int64u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value); // int64u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value); // int64u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); } // namespace Int64u namespace Int8s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); } // namespace Int8s namespace Int16s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace Int16s namespace Int24s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * value); // int24s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int32_t * value); // int24s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); } // namespace Int24s namespace Int32s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int32_t * value); // int32s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int32_t * value); // int32s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); } // namespace Int32s namespace Int40s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * value); // int40s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int64_t * value); // int40s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); } // namespace Int40s namespace Int48s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * value); // int48s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int64_t * value); // int48s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); } // namespace Int48s namespace Int56s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * value); // int56s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int64_t * value); // int56s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); } // namespace Int56s namespace Int64s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int64_t * value); // int64s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int64_t * value); // int64s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); } // namespace Int64s namespace Enum8 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // enum8 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // enum8 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace Enum8 namespace Enum16 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // enum16 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // enum16 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace Enum16 namespace FloatSingle { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, float * value); // single -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, float * value); // single +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value, MarkAttributeDirty markDirty); } // namespace FloatSingle namespace FloatDouble { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, double * value); // double -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, double * value); // double +Protocols::InteractionModel::Status Set(EndpointId endpoint, double value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, double value, MarkAttributeDirty markDirty); } // namespace FloatDouble namespace OctetString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableByteSpan & value); // octet_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableByteSpan & value); // octet_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); } // namespace OctetString namespace LongOctetString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableByteSpan & value); // long_octet_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableByteSpan & value); // long_octet_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); } // namespace LongOctetString namespace CharString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace CharString namespace LongCharString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::MutableCharSpan & value); // long_char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::MutableCharSpan & value); // long_char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); } // namespace LongCharString namespace EpochUs { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint64_t * value); // epoch_us -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint64_t * value); // epoch_us +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); } // namespace EpochUs namespace EpochS { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // epoch_s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // epoch_s +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace EpochS namespace VendorId { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::VendorId * value); // vendor_id -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::VendorId * value); // vendor_id +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::VendorId value, MarkAttributeDirty markDirty); } // namespace VendorId namespace EnumAttr { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - chip::app::Clusters::UnitTesting::SimpleEnum * value); // SimpleEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum * value); // SimpleEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value, MarkAttributeDirty markDirty); } // namespace EnumAttr namespace RangeRestrictedInt8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace RangeRestrictedInt8u namespace RangeRestrictedInt8s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int8_t * value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int8_t * value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); } // namespace RangeRestrictedInt8s namespace RangeRestrictedInt16u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace RangeRestrictedInt16u namespace RangeRestrictedInt16s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, int16_t * value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); } // namespace RangeRestrictedInt16s namespace TimedWriteBoolean { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace TimedWriteBoolean namespace GlobalEnum { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum * value); // TestGlobalEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value, MarkAttributeDirty markDirty); } // namespace GlobalEnum namespace Unsupported { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace Unsupported namespace ReadFailureCode { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace ReadFailureCode namespace FailureInt32U { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FailureInt32U namespace NullableBoolean { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableBoolean namespace NullableBitmap8 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, DataModel::Nullable> & value); // Bitmap8MaskMap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value); -Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, + MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value, MarkAttributeDirty markDirty); } // namespace NullableBitmap8 namespace NullableBitmap16 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, DataModel::Nullable> & value); // Bitmap16MaskMap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value, MarkAttributeDirty markDirty); } // namespace NullableBitmap16 namespace NullableBitmap32 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, DataModel::Nullable> & value); // Bitmap32MaskMap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value, MarkAttributeDirty markDirty); } // namespace NullableBitmap32 namespace NullableBitmap64 { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, +Get(EndpointId endpoint, DataModel::Nullable> & value); // Bitmap64MaskMap -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, - chip::BitMask value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value); Protocols::InteractionModel::Status -Set(chip::EndpointId endpoint, +Set(EndpointId endpoint, const chip::app::DataModel::Nullable> & value, MarkAttributeDirty markDirty); } // namespace NullableBitmap64 namespace NullableInt8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt8u namespace NullableInt16u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt16u namespace NullableInt24u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int24u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int24u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt24u namespace NullableInt32u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int32u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int32u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt32u namespace NullableInt40u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int40u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int40u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt40u namespace NullableInt48u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int48u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int48u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt48u namespace NullableInt56u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int56u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int56u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt56u namespace NullableInt64u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int64u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int64u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt64u namespace NullableInt8s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt8s namespace NullableInt16s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt16s namespace NullableInt24s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int24s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int24s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt24s namespace NullableInt32s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int32s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int32s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt32s namespace NullableInt40s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int40s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int40s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt40s namespace NullableInt48s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int48s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int48s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt48s namespace NullableInt56s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int56s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int56s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt56s namespace NullableInt64s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int64s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int64s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int64_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableInt64s namespace NullableEnum8 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // enum8 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // enum8 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableEnum8 namespace NullableEnum16 { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // enum16 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // enum16 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableEnum16 namespace NullableFloatSingle { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // single -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, float value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // single +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, float value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableFloatSingle namespace NullableFloatDouble { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // double -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, double value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // double +Protocols::InteractionModel::Status Set(EndpointId endpoint, double value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, double value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableFloatDouble namespace NullableOctetString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - DataModel::Nullable & value); // octet_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // octet_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::ByteSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableOctetString namespace NullableCharString { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, - DataModel::Nullable & value); // char_string -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // char_string +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::CharSpan value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableCharString namespace NullableEnumAttr { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // SimpleEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value, +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::UnitTesting::SimpleEnum value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableEnumAttr namespace NullableRangeRestrictedInt8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableRangeRestrictedInt8u namespace NullableRangeRestrictedInt8s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int8s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int8s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableRangeRestrictedInt8s namespace NullableRangeRestrictedInt16u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableRangeRestrictedInt16u namespace NullableRangeRestrictedInt16s { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16s -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value, +Protocols::InteractionModel::Status Get(EndpointId endpoint, DataModel::Nullable & value); // int16s +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableRangeRestrictedInt16s namespace WriteOnlyInt8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace WriteOnlyInt8u namespace NullableGlobalEnum { Protocols::InteractionModel::Status -Get(chip::EndpointId endpoint, DataModel::Nullable & value); // TestGlobalEnum -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value, +Get(EndpointId endpoint, DataModel::Nullable & value); // TestGlobalEnum +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, chip::app::Clusters::Globals::TestGlobalEnum value, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint); -Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint, MarkAttributeDirty markDirty); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status SetNull(EndpointId endpoint); +Protocols::InteractionModel::Status SetNull(EndpointId endpoint, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, +Protocols::InteractionModel::Status Set(EndpointId endpoint, const chip::app::DataModel::Nullable & value, MarkAttributeDirty markDirty); } // namespace NullableGlobalEnum namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision namespace MeiInt8u { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint8_t * value); // int8u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty); } // namespace MeiInt8u } // namespace Attributes @@ -7355,15 +7278,15 @@ namespace FaultInjection { namespace Attributes { namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes @@ -7373,21 +7296,21 @@ namespace SampleMei { namespace Attributes { namespace FlipFlop { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, bool * value); // boolean +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, bool value, MarkAttributeDirty markDirty); } // namespace FlipFlop namespace FeatureMap { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint32_t * value); // bitmap32 +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty); } // namespace FeatureMap namespace ClusterRevision { -Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // int16u -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value); -Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); +Protocols::InteractionModel::Status Get(EndpointId endpoint, uint16_t * value); // int16u +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value); +Protocols::InteractionModel::Status Set(EndpointId endpoint, uint16_t value, MarkAttributeDirty markDirty); } // namespace ClusterRevision } // namespace Attributes From ecf66e6868d25d21750959e83300f896d371c400 Mon Sep 17 00:00:00 2001 From: Erwin Pan Date: Tue, 10 Sep 2024 10:25:18 +0800 Subject: [PATCH 15/50] [Chef] Fix invalid featureMap and associated commands/attributes in colortemperaturelight ZAP (#35443) * Fix chef colortemperaturelight ZAP * Not changing the default value of the CoupleColorTempToLevelMinMireds * Fix ColorTemperatureMired range 0x9A~0x1C6 --- ...de_colortemperaturelight_hbUnzYVeyn.matter | 56 +-- ...tnode_colortemperaturelight_hbUnzYVeyn.zap | 458 ++---------------- 2 files changed, 63 insertions(+), 451 deletions(-) diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter index b09fc6ffc012ab..84b188e58f4fe8 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter @@ -2272,15 +2272,15 @@ endpoint 1 { } server cluster OnOff { - ram attribute onOff default = 0; + persist attribute onOff default = 0; ram attribute globalSceneControl default = 1; ram attribute onTime default = 0; ram attribute offWaitTime default = 0; - ram attribute startUpOnOff; + persist attribute startUpOnOff; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - ram attribute featureMap default = 0; + ram attribute featureMap default = 1; ram attribute clusterRevision default = 5; handle command Off; @@ -2292,15 +2292,17 @@ endpoint 1 { } server cluster LevelControl { - ram attribute currentLevel default = 0x00; + persist attribute currentLevel default = 0x00; ram attribute remainingTime default = 0x0000; - ram attribute options default = 0x00; + ram attribute minLevel default = 0x1; + ram attribute maxLevel default = 0xFE; + ram attribute options default = 0x01; ram attribute onLevel; - ram attribute startUpCurrentLevel; + persist attribute startUpCurrentLevel; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; - ram attribute featureMap default = 0; + ram attribute featureMap default = 0x3; ram attribute clusterRevision default = 6; handle command MoveToLevel; @@ -2327,53 +2329,23 @@ endpoint 1 { server cluster ColorControl { ram attribute remainingTime default = 0x0000; - ram attribute colorTemperatureMireds default = 0x00FA; - ram attribute colorMode default = 0x02; + persist attribute colorTemperatureMireds default = 0x00FA; + persist attribute colorMode default = 0x02; ram attribute options default = 0x00; ram attribute numberOfPrimaries; - ram attribute primary1X; - ram attribute primary1Y; - ram attribute primary1Intensity; - ram attribute primary2X; - ram attribute primary2Y; - ram attribute primary2Intensity; - ram attribute primary3X; - ram attribute primary3Y; - ram attribute primary3Intensity; - ram attribute primary4X; - ram attribute primary4Y; - ram attribute primary4Intensity; - ram attribute primary5X; - ram attribute primary5Y; - ram attribute primary5Intensity; - ram attribute primary6X; - ram attribute primary6Y; - ram attribute primary6Intensity; - ram attribute enhancedCurrentHue default = 0x0000; - ram attribute enhancedColorMode default = 0x02; - ram attribute colorCapabilities default = 0x0000; + persist attribute enhancedColorMode default = 0x02; + ram attribute colorCapabilities default = 0x0010; ram attribute colorTempPhysicalMinMireds default = 0x009A; ram attribute colorTempPhysicalMaxMireds default = 0x01C6; ram attribute coupleColorTempToLevelMinMireds; - ram attribute startUpColorTemperatureMireds default = 0x00FA; + persist attribute startUpColorTemperatureMireds default = 0x00FA; callback attribute generatedCommandList; callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x0010; ram attribute clusterRevision default = 7; - handle command MoveToHue; - handle command MoveHue; - handle command StepHue; - handle command MoveToSaturation; - handle command MoveSaturation; - handle command StepSaturation; - handle command MoveToHueAndSaturation; - handle command MoveToColor; - handle command MoveColor; - handle command StepColor; handle command MoveToColorTemperature; - handle command EnhancedMoveToHue; handle command EnhancedMoveHue; handle command EnhancedStepHue; handle command EnhancedMoveToHueAndSaturation; diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap index 9121f5bb32a4f0..a274b1055195f9 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap @@ -2664,7 +2664,7 @@ "side": "server", "type": "boolean", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, "defaultValue": "0", @@ -2728,10 +2728,10 @@ "side": "server", "type": "StartUpOnOffEnum", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2795,7 +2795,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "1", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2900,7 +2900,7 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, "defaultValue": "0x00", @@ -2925,6 +2925,38 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "MinLevel", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "MaxLevel", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0xFE", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "Options", "code": 15, @@ -2935,7 +2967,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x01", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2951,7 +2983,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -2964,10 +2996,10 @@ "side": "server", "type": "int8u", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3031,7 +3063,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "0x3", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3217,86 +3249,6 @@ "side": "server", "enabled": 1, "commands": [ - { - "name": "MoveToHue", - "code": 0, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "MoveHue", - "code": 1, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "StepHue", - "code": 2, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "MoveToSaturation", - "code": 3, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "MoveSaturation", - "code": 4, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "StepSaturation", - "code": 5, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "MoveToHueAndSaturation", - "code": 6, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "MoveToColor", - "code": 7, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "MoveColor", - "code": 8, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, - { - "name": "StepColor", - "code": 9, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, { "name": "MoveToColorTemperature", "code": 10, @@ -3305,14 +3257,6 @@ "isIncoming": 1, "isEnabled": 1 }, - { - "name": "EnhancedMoveToHue", - "code": 64, - "mfgCode": null, - "source": "client", - "isIncoming": 1, - "isEnabled": 1 - }, { "name": "EnhancedMoveHue", "code": 65, @@ -3394,7 +3338,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, "defaultValue": "0x00FA", @@ -3410,7 +3354,7 @@ "side": "server", "type": "ColorModeEnum", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, "defaultValue": "0x02", @@ -3445,311 +3389,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary1X", - "code": 17, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary1Y", - "code": 18, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary1Intensity", - "code": 19, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary2X", - "code": 21, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary2Y", - "code": 22, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary2Intensity", - "code": 23, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary3X", - "code": 25, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary3Y", - "code": 26, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary3Intensity", - "code": 27, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary4X", - "code": 32, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary4Y", - "code": 33, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary4Intensity", - "code": 34, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary5X", - "code": 36, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary5Y", - "code": 37, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary5Intensity", - "code": 38, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary6X", - "code": 40, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary6Y", - "code": 41, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Primary6Intensity", - "code": 42, - "mfgCode": null, - "side": "server", - "type": "int8u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "EnhancedCurrentHue", - "code": 16384, - "mfgCode": null, - "side": "server", - "type": "int16u", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": null, "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3762,7 +3402,7 @@ "side": "server", "type": "EnhancedColorModeEnum", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, "defaultValue": "0x02", @@ -3781,7 +3421,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": "0x0010", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3842,7 +3482,7 @@ "side": "server", "type": "int16u", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, "defaultValue": "0x00FA", @@ -3954,4 +3594,4 @@ "parentEndpointIdentifier": null } ] -} \ No newline at end of file +} From 60d6c6b5b3da572adeb652cc7ac384ab51ba880f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Tomkiel?= Date: Tue, 10 Sep 2024 04:27:25 +0200 Subject: [PATCH 16/50] [devcontainer] Version bump and enhanced UX. (#35403) * Version bump, remove unnecessary libs * Allow environment location modification * Add apt installs to base image * Speed-up image building * Remove unneeded apt installs * Expose and document important env variable * Add all pigweed environments to .gitignore * Revert and reformat comment * Compatibility fix --- .devcontainer/Dockerfile | 38 +++++++++++-------- .devcontainer/devcontainer.json | 5 ++- .gitignore | 3 +- .../vscode/chip-build-vscode/Dockerfile | 5 ++- 4 files changed, 31 insertions(+), 20 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index da4e2c4171171e..386253bb609e8e 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -24,22 +24,19 @@ ARG USER_UID=1000 ARG USER_GID=$USER_UID ENV LANG en_US.utf8 -# these are installed for terminal/dev convenience. If more tooling for build is required, please -# add them to chip-build (in integrations/docker/images/chip-build) + +# These are installed for terminal/dev convenience. If more tooling for build is required, please +# add them to chip-build (in integrations/docker/images/chip-build). RUN apt-get update \ && apt-get install -y locales \ && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 \ - && apt-get -fy install git vim emacs sudo \ + && apt-get -fy install vim emacs sudo \ apt-utils dialog zsh \ - iproute2 procps lsb-release \ + lsb-release \ bash-completion \ - build-essential cmake cppcheck valgrind \ - wget curl telnet \ + valgrind \ docker.io \ - iputils-ping net-tools \ - libncurses5 \ - libncursesw5 \ - libpython2.7 \ + iputils-ping \ && : RUN groupadd -g $USER_GID $USERNAME \ @@ -55,13 +52,22 @@ RUN curl https://raw.githubusercontent.com/restyled-io/restyler/master/bin/resty RUN mkdir -p /opt/sdk/sdks/ \ && chown -R $USERNAME:$USERNAME \ /opt/sdk/sdks/ `# NXP uses a patch_sdk script to change SDK files` \ - /opt/NordicSemiconductor/nrfconnect/ `# $USERNAME needs to own west configuration to build nRF Connect examples` \ - $IDF_PATH `# $USERNAME needs to own the esp-idf and tools for the examples to build` \ + $ANDROID_HOME \ + $IDF_TOOLS_PATH \ + && find $AMEBA_PATH -name "inc_lp" -print0 | xargs -0 chown -R $USERNAME:$USERNAME \ + && find $AMEBA_PATH -name "inc_hp" -print0 | xargs -0 chown -R $USERNAME:$USERNAME \ + && find $AMEBA_PATH -name "project_lp" -print0 | xargs -0 chown -R $USERNAME:$USERNAME \ + && find $AMEBA_PATH -name "project_hp" -print0 | xargs -0 chown -R $USERNAME:$USERNAME \ + && chmod -R +x \ + $ANDROID_HOME/tools/bin `# sdkmanager for accepting licenses`\ + && chmod -R +w \ $IDF_TOOLS_PATH \ - $SYSROOT_AARCH64 `# allow read/write access to header and libraries` \ - $ANDROID_HOME `# allow licenses to be accepted` \ - $AMEBA_PATH `# AmebaD requires access to change build_info.h` \ - $IMX_SDK_ROOT \ + && find $AMEBA_PATH -name "inc_lp" -print0 | xargs -0 chmod -R +w \ + && find $AMEBA_PATH -name "inc_hp" -print0 | xargs -0 chmod -R +w \ + && find $AMEBA_PATH -name "project_lp" -print0 | xargs -0 chmod -R +w \ + && find $AMEBA_PATH -name "project_hp" -print0 | xargs -0 chmod -R +w \ + # Safe directory is preffered over chown. + && git config --global --add safe.directory "*" \ && : # Fix Tizen SDK paths for new user diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4d5be76434e8f8..9c7f6aeaef881b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,9 +14,12 @@ "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ], - "initializeCommand": "bash .devcontainer/build.sh --tag matter-dev-environment:local --version 22", + "initializeCommand": "bash .devcontainer/build.sh --tag matter-dev-environment:local --version 74", "image": "matter-dev-environment:local", "remoteUser": "vscode", + "containerEnv": { + "PW_ENVIRONMENT_ROOT": "${containerWorkspaceFolder}/.environment-vscode" + }, "customizations": { "vscode": { // Add the IDs of extensions you want installed when the container is created in the array below. diff --git a/.gitignore b/.gitignore index 1c2d1430263594..98dc6780fccc2a 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ out/ /src/darwin/Framework/build/ # Pigweed Environment -.environment/ +.environment*/ build_overrides/pigweed_environment.gni # Temporary Directories @@ -84,4 +84,3 @@ examples/*/esp32/dependencies.lock # jupyter temporary files .ipynb_checkpoints - diff --git a/integrations/docker/images/vscode/chip-build-vscode/Dockerfile b/integrations/docker/images/vscode/chip-build-vscode/Dockerfile index 9d6e24b1d259ea..37726292c8db6c 100644 --- a/integrations/docker/images/vscode/chip-build-vscode/Dockerfile +++ b/integrations/docker/images/vscode/chip-build-vscode/Dockerfile @@ -130,7 +130,6 @@ ENV NXP_K32W0_SDK_ROOT=/opt/k32w/core ENV NXP_K32W1_SDK_ROOT=/opt/k32w/k32w1 ENV NXP_SDK_ROOT=/opt/nxp-sdk/rw61x ENV OPENOCD_PATH=/opt/openocd/ -ENV PW_ENVIRONMENT_ROOT=/home/vscode/pigweed/env ENV QEMU_ESP32=/opt/espressif/qemu/qemu-system-xtensa ENV QEMU_ESP32_DIR=/opt/espressif/qemu ENV SYSROOT_AARCH64=/opt/ubuntu-22.04.1-aarch64-sysroot @@ -144,6 +143,10 @@ ENV ZEPHYR_NXP_BASE=/opt/nxp-zephyr/zephyrproject/zephyr ENV ZEPHYR_NXP_SDK_INSTALL_DIR=/opt/nxp-zephyr/zephyr-sdk-0.16.5 ENV NXP_UPDATE_SDK_SCRIPT_DOCKER=/opt/nxp/nxp_matter_support/scripts/update_nxp_sdk.py +# Places bootstrap files there instead of the default one which is `.environment`. +# NOTE: This directory is NOT persistent. +ENV PW_ENVIRONMENT_ROOT=/home/vscode/pigweed/env + ENV TIZEN_VERSION 7.0 ENV TIZEN_SDK_ROOT /opt/tizen-sdk ENV TIZEN_SDK_TOOLCHAIN $TIZEN_SDK_ROOT/tools/arm-linux-gnueabi-gcc-9.2 From f7536b603211d75147e43a2158faee91ec58f65b Mon Sep 17 00:00:00 2001 From: cdj <45139296+DejinChen@users.noreply.github.com> Date: Tue, 10 Sep 2024 11:58:52 +0800 Subject: [PATCH 17/50] NetworkCommissioning: Disconnect previous network when trying a new (#35256) * NetworkCommissioning: disconnect previous network when attepmting a new connection on other endpoint * use linked list and disconnect driver when no connected network config * Add DisconnectFromNetwork for OpenThread and ESP32 platform * Update src/app/clusters/network-commissioning/network-commissioning.cpp Co-authored-by: Karsten Sperling <113487422+ksperling-apple@users.noreply.github.com> * resolve comments * Use IntrusiveList and other minor tweaks * fix CI --------- Co-authored-by: Karsten Sperling <113487422+ksperling-apple@users.noreply.github.com> Co-authored-by: Karsten Sperling --- .../network-commissioning.cpp | 49 +++++++++++++++++++ .../network-commissioning.h | 35 ++++++++++++- src/include/platform/NetworkCommissioning.h | 7 +++ .../ESP32/NetworkCommissioningDriver.cpp | 12 +++++ .../ESP32/NetworkCommissioningDriver.h | 3 ++ ...enericNetworkCommissioningThreadDriver.cpp | 13 +++++ .../GenericNetworkCommissioningThreadDriver.h | 3 ++ 7 files changed, 121 insertions(+), 1 deletion(-) diff --git a/src/app/clusters/network-commissioning/network-commissioning.cpp b/src/app/clusters/network-commissioning/network-commissioning.cpp index 7bb8aa665c5585..6bb3356b8967cd 100644 --- a/src/app/clusters/network-commissioning/network-commissioning.cpp +++ b/src/app/clusters/network-commissioning/network-commissioning.cpp @@ -336,6 +336,10 @@ CHIP_ERROR ThreadScanResponseToTLV::EncodeTo(TLV::TLVWriter & writer, TLV::Tag t } // namespace +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION +Instance::NetworkInstanceList Instance::sInstances; +#endif + Instance::Instance(EndpointId aEndpointId, WiFiDriver * apDelegate) : CommandHandlerInterface(Optional(aEndpointId), Id), AttributeAccessInterface(Optional(aEndpointId), Id), mEndpointId(aEndpointId), mFeatureFlags(WiFiFeatures(apDelegate)), mpWirelessDriver(apDelegate), mpBaseDriver(apDelegate) @@ -365,11 +369,23 @@ CHIP_ERROR Instance::Init() mLastNetworkingStatusValue.SetNull(); mLastConnectErrorValue.SetNull(); mLastNetworkIDLen = 0; +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION + if (!sInstances.Contains(this)) + { + sInstances.PushBack(this); + } +#endif return CHIP_NO_ERROR; } void Instance::Shutdown() { +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION + if (sInstances.Contains(this)) + { + sInstances.Remove(this); + } +#endif mpBaseDriver->Shutdown(); } @@ -1031,6 +1047,16 @@ void Instance::HandleConnectNetwork(HandlerContext & ctx, const Commands::Connec mCurrentOperationBreadcrumb = req.breadcrumb; #if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION + // Per spec, lingering connections on any other interfaces need to be disconnected at this point. + for (auto & node : sInstances) + { + Instance * instance = static_cast(&node); + if (instance != this) + { + instance->DisconnectLingeringConnection(); + } + } + mpWirelessDriver->ConnectNetwork(req.networkID, this); #else // In Non-concurrent mode postpone the final execution of ConnectNetwork until the operational @@ -1150,6 +1176,29 @@ void Instance::HandleQueryIdentity(HandlerContext & ctx, const Commands::QueryId } #endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_PDC +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION +void Instance::DisconnectLingeringConnection() +{ + bool haveConnectedNetwork = false; + EnumerateAndRelease(mpBaseDriver->GetNetworks(), [&](const Network & network) { + if (network.connected) + { + haveConnectedNetwork = true; + return Loop::Break; + } + return Loop::Continue; + }); + + // If none of the configured networks is `connected`, we may have a + // lingering connection to a different network that we need to disconnect. + // Note: The driver may or may not be actually connected + if (!haveConnectedNetwork) + { + LogErrorOnFailure(mpWirelessDriver->DisconnectFromNetwork()); + } +} +#endif + void Instance::OnResult(Status commissioningError, CharSpan debugText, int32_t interfaceStatus) { auto commandHandleRef = std::move(mAsyncCommandHandle); diff --git a/src/app/clusters/network-commissioning/network-commissioning.h b/src/app/clusters/network-commissioning/network-commissioning.h index cd2d5909c566d1..d727c9b6c2beb9 100644 --- a/src/app/clusters/network-commissioning/network-commissioning.h +++ b/src/app/clusters/network-commissioning/network-commissioning.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -33,9 +34,17 @@ namespace app { namespace Clusters { namespace NetworkCommissioning { +// Instance inherits privately from this class to participate in Instance::sInstances +class InstanceListNode : public IntrusiveListNodeBase<> +{ +}; + // TODO: Use macro to disable some wifi or thread class Instance : public CommandHandlerInterface, public AttributeAccessInterface, +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION + private InstanceListNode, +#endif public DeviceLayer::NetworkCommissioning::Internal::BaseDriver::NetworkStatusChangeCallback, public DeviceLayer::NetworkCommissioning::Internal::WirelessDriver::ConnectCallback, public DeviceLayer::NetworkCommissioning::WiFiDriver::ScanCallback, @@ -81,6 +90,17 @@ class Instance : public CommandHandlerInterface, void SendNonConcurrentConnectNetworkResponse(); #endif +// TODO: This could be guarded by a separate multi-interface condition instead +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION + class NetworkInstanceList : public IntrusiveList + { + public: + ~NetworkInstanceList() { this->Clear(); } + }; + + static NetworkInstanceList sInstances; +#endif + EndpointId mEndpointId = kInvalidEndpointId; const BitFlags mFeatureFlags; @@ -111,6 +131,11 @@ class Instance : public CommandHandlerInterface, void SetLastNetworkId(ByteSpan lastNetworkId); void ReportNetworksListChanged() const; +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION + // Disconnect if the current connection is not in the Networks list + void DisconnectLingeringConnection(); +#endif + // Commits the breadcrumb value saved in mCurrentOperationBreadcrumb to the breadcrumb attribute in GeneralCommissioning // cluster. Will set mCurrentOperationBreadcrumb to NullOptional. void CommitSavedBreadcrumb(); @@ -133,7 +158,15 @@ class Instance : public CommandHandlerInterface, Instance(EndpointId aEndpointId, DeviceLayer::NetworkCommissioning::WiFiDriver * apDelegate); Instance(EndpointId aEndpointId, DeviceLayer::NetworkCommissioning::ThreadDriver * apDelegate); Instance(EndpointId aEndpointId, DeviceLayer::NetworkCommissioning::EthernetDriver * apDelegate); - virtual ~Instance() = default; + virtual ~Instance() + { +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION + if (IsInList()) + { + sInstances.Remove(this); + } +#endif + } }; // NetworkDriver for the devices that don't have / don't need a real network driver. diff --git a/src/include/platform/NetworkCommissioning.h b/src/include/platform/NetworkCommissioning.h index 472ef6d6874d2c..a6e145cd6f7faf 100644 --- a/src/include/platform/NetworkCommissioning.h +++ b/src/include/platform/NetworkCommissioning.h @@ -247,6 +247,13 @@ class WirelessDriver : public Internal::BaseDriver * called inside ConnectNetwork. */ virtual void ConnectNetwork(ByteSpan networkId, ConnectCallback * callback) = 0; + +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION + /** + * @brief Disconnect from network, if currently connected. + */ + virtual CHIP_ERROR DisconnectFromNetwork() { return CHIP_ERROR_NOT_IMPLEMENTED; } +#endif }; } // namespace Internal diff --git a/src/platform/ESP32/NetworkCommissioningDriver.cpp b/src/platform/ESP32/NetworkCommissioningDriver.cpp index ee061fb746681e..3845287cfdb919 100644 --- a/src/platform/ESP32/NetworkCommissioningDriver.cpp +++ b/src/platform/ESP32/NetworkCommissioningDriver.cpp @@ -264,6 +264,18 @@ CHIP_ERROR ESPWiFiDriver::ConnectWiFiNetwork(const char * ssid, uint8_t ssidLen, return ConnectivityMgr().SetWiFiStationMode(ConnectivityManager::kWiFiStationMode_Enabled); } +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION +CHIP_ERROR ESPWiFiDriver::DisconnectFromNetwork() +{ + if (chip::DeviceLayer::Internal::ESP32Utils::IsStationProvisioned()) + { + // Attaching to an empty network will disconnect the network. + ReturnErrorOnFailure(ConnectWiFiNetwork(nullptr, 0, nullptr, 0)); + } + return CHIP_NO_ERROR; +} +#endif + void ESPWiFiDriver::OnConnectWiFiNetwork() { if (mpConnectCallback) diff --git a/src/platform/ESP32/NetworkCommissioningDriver.h b/src/platform/ESP32/NetworkCommissioningDriver.h index 7c89e564292682..e49a8efd66edd5 100644 --- a/src/platform/ESP32/NetworkCommissioningDriver.h +++ b/src/platform/ESP32/NetworkCommissioningDriver.h @@ -107,6 +107,9 @@ class ESPWiFiDriver final : public WiFiDriver Status RemoveNetwork(ByteSpan networkId, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex) override; Status ReorderNetwork(ByteSpan networkId, uint8_t index, MutableCharSpan & outDebugText) override; void ConnectNetwork(ByteSpan networkId, ConnectCallback * callback) override; +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION + CHIP_ERROR DisconnectFromNetwork() override; +#endif // WiFiDriver Status AddOrUpdateNetwork(ByteSpan ssid, ByteSpan credentials, MutableCharSpan & outDebugText, diff --git a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp index 0e7701ec481add..dfec9a74230e79 100644 --- a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp +++ b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp @@ -277,6 +277,19 @@ void GenericThreadDriver::CheckInterfaceEnabled() #endif } +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION +CHIP_ERROR GenericThreadDriver::DisconnectFromNetwork() +{ + if (ThreadStackMgrImpl().IsThreadProvisioned()) + { + Thread::OperationalDataset emptyNetwork = {}; + // Attach to an empty network will disconnect the driver. + ReturnErrorOnFailure(ThreadStackMgrImpl().AttachToThreadNetwork(emptyNetwork, nullptr)); + } + return CHIP_NO_ERROR; +} +#endif + size_t GenericThreadDriver::ThreadNetworkIterator::Count() { return driver->mStagingNetwork.IsCommissioned() ? 1 : 0; diff --git a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h index 7fd62159a36522..f570a85fef0211 100644 --- a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h +++ b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.h @@ -110,6 +110,9 @@ class GenericThreadDriver final : public ThreadDriver Status RemoveNetwork(ByteSpan networkId, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex) override; Status ReorderNetwork(ByteSpan networkId, uint8_t index, MutableCharSpan & outDebugText) override; void ConnectNetwork(ByteSpan networkId, ConnectCallback * callback) override; +#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION + CHIP_ERROR DisconnectFromNetwork() override; +#endif // ThreadDriver Status AddOrUpdateNetwork(ByteSpan operationalDataset, MutableCharSpan & outDebugText, uint8_t & outNetworkIndex) override; From 3cb1b3aaa2efb1d9030e66f1771ab96153935508 Mon Sep 17 00:00:00 2001 From: Justin Wood Date: Mon, 9 Sep 2024 23:21:18 -0700 Subject: [PATCH 18/50] Adding isSuspended delegate for MTRDeviceController (#35499) * Adding delegate * Restyled by whitespace * Restyled by clang-format * Fixing this * Restyled by clang-format * Moving these into sync * Restyled by clang-format --------- Co-authored-by: Restyled.io --- src/darwin/Framework/CHIP/MTRDeviceController.mm | 14 ++++++++++++++ .../Framework/CHIP/MTRDeviceControllerDelegate.h | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 2029097645a89b..69bb02d5f1f03d 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -383,6 +383,16 @@ - (BOOL)isSuspended } } +- (void)_notifyDelegatesOfSuspendState +{ + BOOL isSuspended = [self isSuspended]; + [self _callDelegatesWithBlock:^(id delegate) { + if ([delegate respondsToSelector:@selector(controller:isSuspended:)]) { + [delegate controller:self isSuspended:isSuspended]; + } + } logString:__PRETTY_FUNCTION__]; +} + - (void)suspend { MTR_LOG("%@ suspending", self); @@ -405,6 +415,8 @@ - (void)suspend // * Active commissioning sessions (presumably close them?) // * CASE sessions in general. // * Possibly try to see whether we can change our fabric entry to not advertise and restart advertising. + + [self _notifyDelegatesOfSuspendState]; } } @@ -424,6 +436,8 @@ - (void)resume for (MTRDevice * device in devicesToResume) { [device controllerResumed]; } + + [self _notifyDelegatesOfSuspendState]; } } diff --git a/src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h index b8b9be9967ebd1..40382c95ade9d9 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h +++ b/src/darwin/Framework/CHIP/MTRDeviceControllerDelegate.h @@ -106,6 +106,13 @@ MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) */ - (void)controller:(MTRDeviceController *)controller readCommissioningInfo:(MTRProductIdentity *)info MTR_AVAILABLE(ios(17.0), macos(14.0), watchos(10.0), tvos(17.0)); + +/** + * Notify the delegate when the suspended state changed of the controller, after this happens + * the controller will be in the specified state. + */ +- (void)controller:(MTRDeviceController *)controller + isSuspended:(BOOL)suspended MTR_NEWLY_AVAILABLE; @end typedef NS_ENUM(NSUInteger, MTRPairingStatus) { From 927724cc5be77a45b27c8d7a41f221a6a27c54e9 Mon Sep 17 00:00:00 2001 From: cdj <45139296+DejinChen@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:43:58 +0800 Subject: [PATCH 19/50] OpenThread: clear the previous srp host and services when connecting to a new network (#35065) --- ...GenericNetworkCommissioningThreadDriver.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp index dfec9a74230e79..cb0b05a57e3510 100644 --- a/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp +++ b/src/platform/OpenThread/GenericNetworkCommissioningThreadDriver.cpp @@ -189,6 +189,24 @@ void GenericThreadDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * c status = Status::kUnknownError; } + if (status == Status::kSuccess && ThreadStackMgrImpl().IsThreadAttached()) + { + Thread::OperationalDataset currentDataset; + if (ThreadStackMgrImpl().GetThreadProvision(currentDataset) == CHIP_NO_ERROR) + { + // Clear the previous srp host and services + if (!currentDataset.AsByteSpan().data_equal(mStagingNetwork.AsByteSpan()) && + ThreadStackMgrImpl().ClearAllSrpHostAndServices() != CHIP_NO_ERROR) + { + status = Status::kUnknownError; + } + } + else + { + status = Status::kUnknownError; + } + } + if (status == Status::kSuccess && DeviceLayer::ThreadStackMgrImpl().AttachToThreadNetwork(mStagingNetwork, callback) != CHIP_NO_ERROR) { From be5bbf8e732cd1301b97d60af15005f6feac773c Mon Sep 17 00:00:00 2001 From: chirag-silabs <100861685+chirag-silabs@users.noreply.github.com> Date: Tue, 10 Sep 2024 12:45:27 +0530 Subject: [PATCH 20/50] [Silabs] Enabling Uart logs for 917soc by default (#35426) * Enabling Uart logs for 917soc by default * adding the define for the uart * adding the uart flag in silabs_board.gni * Restyled by gn * making the uart variable configurable * updating the comment for the uart logs variable --------- Co-authored-by: Andrei Litvin Co-authored-by: Restyled.io --- .../silabs/platformAbstraction/WiseMcuSpam.cpp | 8 ++++++++ third_party/silabs/SiWx917_sdk.gni | 10 +++------- third_party/silabs/silabs_board.gni | 7 ++++--- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/platform/silabs/platformAbstraction/WiseMcuSpam.cpp b/src/platform/silabs/platformAbstraction/WiseMcuSpam.cpp index 0bddafd96506f9..053b30cc8619f4 100644 --- a/src/platform/silabs/platformAbstraction/WiseMcuSpam.cpp +++ b/src/platform/silabs/platformAbstraction/WiseMcuSpam.cpp @@ -46,6 +46,10 @@ void soc_pll_config(void); #include "SEGGER_SYSVIEW.h" #endif +#if SILABS_LOG_OUT_UART || ENABLE_CHIP_SHELL +#include "uart.h" +#endif + namespace chip { namespace DeviceLayer { namespace Silabs { @@ -75,6 +79,10 @@ CHIP_ERROR SilabsPlatform::Init(void) silabsInitLog(); #endif +#if SILABS_LOG_OUT_UART || ENABLE_CHIP_SHELL + uartConsoleInit(); +#endif + #ifdef SL_CATALOG_SYSTEMVIEW_TRACE_PRESENT SEGGER_SYSVIEW_Conf(); #endif diff --git a/third_party/silabs/SiWx917_sdk.gni b/third_party/silabs/SiWx917_sdk.gni index ea9d6beaefd970..30e1595493c60c 100644 --- a/third_party/silabs/SiWx917_sdk.gni +++ b/third_party/silabs/SiWx917_sdk.gni @@ -248,13 +248,6 @@ template("siwx917_sdk") { defines += [ "SILABS_LOG_ENABLED=0" ] } - if (chip_build_libshell) { - defines += [ - "ENABLE_CHIP_SHELL", - "SLI_SI91X_MCU_INTR_BASED_RX_ON_UART=1", - ] - } - defines += [ "LWIP_NETIF_API=1" ] if (chip_enable_wifi_ipv4) { defines += [ @@ -329,6 +322,9 @@ template("siwx917_sdk") { defines += [ "ENABLE_CHIP_SHELL" ] } + if (chip_build_libshell || sl_uart_log_output) { + defines += [ "SLI_SI91X_MCU_INTR_BASED_RX_ON_UART=1" ] + } if (enable_dic) { defines += [ "DIC_ENABLE=1" ] } diff --git a/third_party/silabs/silabs_board.gni b/third_party/silabs/silabs_board.gni index 7c1d77d036a41f..087ccc9d892916 100644 --- a/third_party/silabs/silabs_board.gni +++ b/third_party/silabs/silabs_board.gni @@ -43,9 +43,6 @@ declare_args() { # Disable AWS SDK OTA by default aws_sdk_ota = false - # Disable UART log forwarding by default - sl_uart_log_output = false - # Self-provision enabled use_provision_channel = false } @@ -165,6 +162,10 @@ declare_args() { # User can set this arg to false to skip the rps creation for WiFi SoCs. # e.g. for CI use_rps_extension = wifi_soc + + # UART log forwarding + # Default true for the wifi soc and false for EFR32 boards + sl_uart_log_output = wifi_soc } # qr code cannot be true if lcd is disabled From 83d345e18cbff6943e4925a5936a3edc72ab076b Mon Sep 17 00:00:00 2001 From: Chinmay Lonkar <72558259+ChinmayLonkar@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:12:23 +0530 Subject: [PATCH 21/50] [ESP32] Add an option to set default log level for CHIP logs (#35442) --- config/esp32/components/chip/CMakeLists.txt | 8 +++--- config/esp32/components/chip/Kconfig | 30 +++++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/config/esp32/components/chip/CMakeLists.txt b/config/esp32/components/chip/CMakeLists.txt index 7e9894a8d66065..85141d5f962241 100644 --- a/config/esp32/components/chip/CMakeLists.txt +++ b/config/esp32/components/chip/CMakeLists.txt @@ -87,25 +87,25 @@ if (CONFIG_CHIP_CONFIG_IM_PRETTY_PRINT) endif() # Config the chip log level by IDF menuconfig -if (CONFIG_LOG_DEFAULT_LEVEL GREATER_EQUAL 1) +if (CONFIG_CHIP_LOG_DEFAULT_LEVEL GREATER_EQUAL 1) chip_gn_arg_bool ("chip_error_logging" "true") else() chip_gn_arg_bool ("chip_error_logging" "false") endif() -if (CONFIG_LOG_DEFAULT_LEVEL GREATER_EQUAL 3) +if (CONFIG_CHIP_LOG_DEFAULT_LEVEL GREATER_EQUAL 3) chip_gn_arg_bool ("chip_progress_logging" "true") else() chip_gn_arg_bool ("chip_progress_logging" "false") endif() -if (CONFIG_LOG_DEFAULT_LEVEL GREATER_EQUAL 4) +if (CONFIG_CHIP_LOG_DEFAULT_LEVEL GREATER_EQUAL 4) chip_gn_arg_bool ("chip_detail_logging" "true") else() chip_gn_arg_bool ("chip_detail_logging" "false") endif() -if (CONFIG_LOG_DEFAULT_LEVEL GREATER_EQUAL 5) +if (CONFIG_CHIP_LOG_DEFAULT_LEVEL GREATER_EQUAL 5) chip_gn_arg_bool ("chip_automation_logging" "true") else() chip_gn_arg_bool ("chip_automation_logging" "false") diff --git a/config/esp32/components/chip/Kconfig b/config/esp32/components/chip/Kconfig index 40beb7d5ce4643..de2963901fd7be 100644 --- a/config/esp32/components/chip/Kconfig +++ b/config/esp32/components/chip/Kconfig @@ -1172,6 +1172,36 @@ menu "CHIP Device Layer" To see detailed logging please set default log level to Debug. (Component config --> Log output --> Default log verbosity --> Debug) + choice CHIP_LOG_DEFAULT_LEVEL + bool "CHIP default log verbosity" + default CHIP_LOG_DEFAULT_LEVEL_EQUALS_LOG_DEFAULT_LEVEL + help + Default log level for CHIP logs. Note that CHIP_LOG_DEFAULT_LEVEL can only be less than or equal to LOG_DEFAULT_LEVEL. + + config CHIP_LOG_DEFAULT_LEVEL_EQUALS_LOG_DEFAULT_LEVEL + bool "Same as default log level" + config CHIP_LOG_DEFAULT_LEVEL_NONE + bool "CHIP logging disabled" + config CHIP_LOG_DEFAULT_LEVEL_ERROR + bool "Enable Error Logs" + config CHIP_LOG_DEFAULT_LEVEL_PROGRESS + bool "Enable Progress Logs" + config CHIP_LOG_DEFAULT_LEVEL_DETAIL + bool "Enable Detail Logs" + config CHIP_LOG_DEFAULT_LEVEL_AUTOMATION + bool "Enable Automation Logs" + endchoice + + config CHIP_LOG_DEFAULT_LEVEL + int + range 0 LOG_DEFAULT_LEVEL + default LOG_DEFAULT_LEVEL if CHIP_LOG_DEFAULT_LEVEL_EQUALS_LOG_DEFAULT_LEVEL + default 0 if CHIP_LOG_DEFAULT_LEVEL_NONE + default 1 if CHIP_LOG_DEFAULT_LEVEL_ERROR + default 3 if CHIP_LOG_DEFAULT_LEVEL_PROGRESS + default 4 if CHIP_LOG_DEFAULT_LEVEL_DETAIL + default 5 if CHIP_LOG_DEFAULT_LEVEL_AUTOMATION + endmenu config CHIP_ENABLE_BDX_LOG_TRANSFER From c7a0d02baa4818ebb68e85b5a2a7010adc9e3b96 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 09:48:25 -0400 Subject: [PATCH 22/50] Bump cryptography from 41.0.4 to 43.0.1 in /scripts/tools/telink (#35387) Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.4 to 43.0.1. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/41.0.4...43.0.1) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andrei Litvin --- scripts/tools/telink/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/tools/telink/requirements.txt b/scripts/tools/telink/requirements.txt index bb4359b5319da3..58b519dc924bfa 100644 --- a/scripts/tools/telink/requirements.txt +++ b/scripts/tools/telink/requirements.txt @@ -1,4 +1,4 @@ -cryptography==41.0.4 +cryptography==43.0.1 cffi==1.15.0 future==0.18.3 pycparser==2.21 From 0140a72909d35cad24230aadb52dbe88a22c0a03 Mon Sep 17 00:00:00 2001 From: Jerry-ESP <107675966+Jerry-ESP@users.noreply.github.com> Date: Tue, 10 Sep 2024 21:48:51 +0800 Subject: [PATCH 23/50] [ESP32] Add a configurable device type for commissionable advertising. (#35344) * add commissionable device type config * Restyled by autopep8 * update the function logic --------- Co-authored-by: Restyled.io --- .../tools/generate_esp32_chip_factory_bin.py | 9 +++++++++ src/platform/ESP32/ConfigurationManagerImpl.cpp | 17 +++++++++++++++++ src/platform/ESP32/ConfigurationManagerImpl.h | 1 + src/platform/ESP32/ESP32Config.cpp | 1 + src/platform/ESP32/ESP32Config.h | 1 + 5 files changed, 29 insertions(+) diff --git a/scripts/tools/generate_esp32_chip_factory_bin.py b/scripts/tools/generate_esp32_chip_factory_bin.py index 892f0609927cd2..ef23dc61b337ef 100755 --- a/scripts/tools/generate_esp32_chip_factory_bin.py +++ b/scripts/tools/generate_esp32_chip_factory_bin.py @@ -209,6 +209,11 @@ class Product_Color_Enum(Enum): 'encoding': 'string', 'value': None, }, + 'device-type': { + 'type': 'data', + 'encoding': 'u32', + 'value': None, + }, } @@ -372,6 +377,8 @@ def populate_factory_data(args, spake2p_params): FACTORY_DATA['product-url']['value'] = args.product_url if args.product_label: FACTORY_DATA['product-label']['value'] = args.product_label + if args.device_type is not None: + FACTORY_DATA['device-type']['value'] = args.device_type # SupportedModes are stored as multiple entries # - sm-sz/ : number of supported modes for the endpoint @@ -554,6 +561,8 @@ def any_base_int(s): return int(s, 0) parser.add_argument("--product-label", type=str, help='human readable product label') parser.add_argument("--product-url", type=str, help='link to product specific web page') + parser.add_argument("--device-type", type=any_base_int, help='commissionable device type') + parser.add_argument('-s', '--size', type=any_base_int, default=0x6000, help='The size of the partition.bin, default: 0x6000') parser.add_argument('--target', default='esp32', diff --git a/src/platform/ESP32/ConfigurationManagerImpl.cpp b/src/platform/ESP32/ConfigurationManagerImpl.cpp index 31c7cb714f96c0..78446432c58b0a 100644 --- a/src/platform/ESP32/ConfigurationManagerImpl.cpp +++ b/src/platform/ESP32/ConfigurationManagerImpl.cpp @@ -269,6 +269,23 @@ CHIP_ERROR ConfigurationManagerImpl::GetLocationCapability(uint8_t & location) #endif // CONFIG_ENABLE_ESP32_LOCATIONCAPABILITY } +CHIP_ERROR ConfigurationManagerImpl::GetDeviceTypeId(uint32_t & deviceType) +{ + uint32_t value = 0; + CHIP_ERROR err = ReadConfigValue(ESP32Config::kConfigKey_PrimaryDeviceType, value); + + if (err == CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND) + { + deviceType = CHIP_DEVICE_CONFIG_DEVICE_TYPE; + } + else + { + deviceType = value; + } + + return CHIP_NO_ERROR; +} + CHIP_ERROR ConfigurationManagerImpl::StoreCountryCode(const char * code, size_t codeLen) { // As per spec, codeLen has to be 2 diff --git a/src/platform/ESP32/ConfigurationManagerImpl.h b/src/platform/ESP32/ConfigurationManagerImpl.h index 63b3e094763a75..648c150fc01a44 100644 --- a/src/platform/ESP32/ConfigurationManagerImpl.h +++ b/src/platform/ESP32/ConfigurationManagerImpl.h @@ -58,6 +58,7 @@ class ConfigurationManagerImpl : public Internal::GenericConfigurationManagerImp CHIP_ERROR GetSoftwareVersionString(char * buf, size_t bufSize); CHIP_ERROR GetSoftwareVersion(uint32_t & softwareVer) override; CHIP_ERROR GetLocationCapability(uint8_t & location) override; + CHIP_ERROR GetDeviceTypeId(uint32_t & deviceType) override; static ConfigurationManagerImpl & GetDefaultInstance(); // Set the country code to esp_phy layer and also store it to NVS diff --git a/src/platform/ESP32/ESP32Config.cpp b/src/platform/ESP32/ESP32Config.cpp index c94de5c04b85b2..df48f5f2955793 100644 --- a/src/platform/ESP32/ESP32Config.cpp +++ b/src/platform/ESP32/ESP32Config.cpp @@ -81,6 +81,7 @@ const ESP32Config::Key ESP32Config::kConfigKey_ProductFinish = { kConfig const ESP32Config::Key ESP32Config::kConfigKey_ProductColor = { kConfigNamespace_ChipFactory, "product-color" }; const ESP32Config::Key ESP32Config::kConfigKey_PartNumber = { kConfigNamespace_ChipFactory, "part-number" }; const ESP32Config::Key ESP32Config::kConfigKey_LocationCapability = { kConfigNamespace_ChipFactory, "loc-capability" }; +const ESP32Config::Key ESP32Config::kConfigKey_PrimaryDeviceType = { kConfigNamespace_ChipFactory, "device-type" }; // Keys stored in the chip-config namespace const ESP32Config::Key ESP32Config::kConfigKey_ServiceConfig = { kConfigNamespace_ChipConfig, "service-config" }; diff --git a/src/platform/ESP32/ESP32Config.h b/src/platform/ESP32/ESP32Config.h index 218f2354b2b358..f2f03cf7f9074b 100644 --- a/src/platform/ESP32/ESP32Config.h +++ b/src/platform/ESP32/ESP32Config.h @@ -83,6 +83,7 @@ class ESP32Config static const Key kConfigKey_ProductFinish; static const Key kConfigKey_ProductColor; static const Key kConfigKey_LocationCapability; + static const Key kConfigKey_PrimaryDeviceType; // CHIP Config keys static const Key kConfigKey_ServiceConfig; From dfa0987e73cd58f1c75eaa466d365e91d28fec27 Mon Sep 17 00:00:00 2001 From: Rohan Sahay Date: Tue, 10 Sep 2024 20:48:11 +0530 Subject: [PATCH 24/50] [Silabs] Cleanup of logs and checks for WiFi products (#34430) * Clean up of logs and added checks * Apply suggestions from code review Co-authored-by: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> * Added changes from code review * Replace with chip::platform memory functions * Reduce logs * chore: Fix logging statements and improve error handling in BaseApplication.cpp * Sanitize provisioning WiFi network credentials * Sanitize SSID and SSID length * use CodeUtils min functions * refactor: add void parameter to functions * refactor: fix logging format in wfx_rsi_join_fail_cb and wfx_rsi_init functions * Simplify SSID processing and improve memory handling --------- Co-authored-by: brosahay <3526930+brosahay@users.noreply.github.com> Co-authored-by: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> --- examples/platform/silabs/BaseApplication.cpp | 4 +- .../silabs/SiWx917/SiWx917/sl_wifi_if.cpp | 79 ++-- .../platform/silabs/efr32/rs911x/rsi_if.cpp | 352 +++++++++--------- .../platform/silabs/efr32/wf200/host_if.cpp | 312 +++++++--------- examples/platform/silabs/wfx_rsi.h | 1 + examples/platform/silabs/wifi/wfx_notify.cpp | 4 +- .../platform/silabs/wifi/wfx_rsi_host.cpp | 144 +++---- .../silabs/ConnectivityManagerImpl_WIFI.cpp | 2 +- .../silabs/NetworkCommissioningWiFiDriver.cpp | 11 +- .../silabs/SiWx917/wifi/ethernetif.cpp | 20 +- .../silabs/SiWx917/wifi/wfx_host_events.h | 3 + src/platform/silabs/efr32/wifi/ethernetif.cpp | 6 +- .../silabs/efr32/wifi/wfx_host_events.h | 3 + 13 files changed, 437 insertions(+), 504 deletions(-) diff --git a/examples/platform/silabs/BaseApplication.cpp b/examples/platform/silabs/BaseApplication.cpp index cbef67996c4528..c61b91f7400879 100644 --- a/examples/platform/silabs/BaseApplication.cpp +++ b/examples/platform/silabs/BaseApplication.cpp @@ -621,7 +621,7 @@ void BaseApplication::CancelFactoryResetSequence() if (sIsFactoryResetTriggered) { sIsFactoryResetTriggered = false; - ChipLogProgress(AppServer, "Factory Reset has been Canceled"); + ChipLogProgress(AppServer, "Factory Reset has been cancelled"); } } @@ -854,7 +854,7 @@ void BaseApplication::OnPlatformEvent(const ChipDeviceEvent * event, intptr_t) VerifyOrReturn(event->InternetConnectivityChange.IPv4 == kConnectivity_Established); if (DIC_OK != dic_init(dic::control::subscribeCB)) { - SILABS_LOG("Failed to initialize DIC module\n"); + ChipLogError(AppServer, "dic_init failed"); } #endif // DIC_ENABLE #ifdef DISPLAY_ENABLED diff --git a/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp b/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp index ad3e15f6715c43..d283f05162bd54 100644 --- a/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp +++ b/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp @@ -36,8 +36,12 @@ #include "task.h" #include "wfx_host_events.h" #include "wfx_rsi.h" + #include #include +#include +#include +#include #include extern "C" { @@ -120,7 +124,7 @@ static void DHCPTimerEventHandler(void * arg) WfxPostEvent(&event); } -static void CancelDHCPTimer() +static void CancelDHCPTimer(void) { osStatus_t status; @@ -164,8 +168,10 @@ int32_t wfx_rsi_get_ap_info(wfx_wifi_scan_result_t * ap) { sl_status_t status = SL_STATUS_OK; int32_t rssi = 0; + ap->ssid_length = wfx_rsi.sec.ssid_length; ap->security = wfx_rsi.sec.security; ap->chan = wfx_rsi.ap_chan; + chip::Platform::CopyString(ap->ssid, ap->ssid_length, wfx_rsi.sec.ssid); memcpy(&ap->bssid[0], &wfx_rsi.ap_mac.octet[0], BSSID_LEN); sl_wifi_get_signal_strength(SL_WIFI_CLIENT_INTERFACE, &rssi); ap->rssi = rssi; @@ -197,14 +203,14 @@ int32_t wfx_rsi_get_ap_ext(wfx_wifi_scan_ext_t * extra_info) } /****************************************************************** - * @fn int32_t wfx_rsi_reset_count() + * @fn int32_t wfx_rsi_reset_count(void) * @brief * Getting the driver reset count * @param[in] None * @return * status *********************************************************************/ -int32_t wfx_rsi_reset_count() +int32_t wfx_rsi_reset_count(void) { sl_wifi_statistics_t test = { 0 }; sl_status_t status = SL_STATUS_OK; @@ -221,14 +227,14 @@ int32_t wfx_rsi_reset_count() } /****************************************************************** - * @fn wfx_rsi_disconnect() + * @fn wfx_rsi_disconnect(void) * @brief * Getting the driver disconnect status * @param[in] None * @return * status *********************************************************************/ -int32_t wfx_rsi_disconnect() +int32_t wfx_rsi_disconnect(void) { return sl_wifi_disconnect(SL_WIFI_CLIENT_INTERFACE); } @@ -251,18 +257,17 @@ sl_status_t join_callback_handler(sl_wifi_event_t event, char * result, uint32_t */ ChipLogDetail(DeviceLayer, "join_callback_handler: success"); memset(&temp_reset, 0, sizeof(temp_reset)); - - WfxEvent.eventType = WFX_EVT_STA_CONN; - WfxPostEvent(&WfxEvent); wfx_rsi.join_retries = 0; callback_status = SL_STATUS_OK; + WfxEvent.eventType = WFX_EVT_STA_CONN; + WfxPostEvent(&WfxEvent); return SL_STATUS_OK; } #if CHIP_CONFIG_ENABLE_ICD_SERVER #if SLI_SI91X_MCU_INTERFACE // Required to invoke button press event during sleep as falling edge is not detected -void sl_si91x_invoke_btn_press_event() +void sl_si91x_invoke_btn_press_event(void) { // TODO: should be removed once we are getting the press interrupt for button 0 with sleep if (!RSI_NPSSGPIO_GetPin(SL_BUTTON_BTN0_PIN) && !btn0_pressed) @@ -298,12 +303,12 @@ void sl_si91x_invoke_btn_press_event() #endif // SLI_SI91X_MCU_INTERFACE /****************************************************************** - * @fn wfx_rsi_power_save() + * @fn wfx_rsi_power_save(rsi_power_save_profile_mode_t sl_si91x_ble_state, sl_si91x_performance_profile_t sl_si91x_wifi_state) * @brief * Setting the RS911x in DTIM sleep based mode * * @param[in] sl_si91x_ble_state : State to set for the BLE - sl_si91x_wifi_state : State to set for the WiFi + * @param[in] sl_si91x_wifi_state : State to set for the WiFi * @return * None *********************************************************************/ @@ -339,7 +344,7 @@ int32_t wfx_rsi_power_save(rsi_power_save_profile_mode_t sl_si91x_ble_state, sl_ *****************************************************************************************/ int32_t wfx_wifi_rsi_init(void) { - ChipLogDetail(DeviceLayer, "wfx_wifi_rsi_init started"); + ChipLogDetail(DeviceLayer, "wfx_wifi_rsi_init: started"); sl_status_t status; status = sl_wifi_init(&config, NULL, sl_wifi_default_event_handler); VerifyOrReturnError(status == SL_STATUS_OK, status); @@ -534,7 +539,10 @@ sl_status_t show_scan_results(sl_wifi_scan_result_t * scan_result) for (int idx = 0; idx < (int) scan_result->scan_count; idx++) { memset(&cur_scan_result, 0, sizeof(cur_scan_result)); - strncpy(cur_scan_result.ssid, (char *) &scan_result->scan_info[idx].ssid, WFX_MAX_SSID_LENGTH); + + cur_scan_result.ssid_length = strnlen((char *) scan_result->scan_info[idx].ssid, + chip::min(sizeof(scan_result->scan_info[idx].ssid), WFX_MAX_SSID_LENGTH)); + chip::Platform::CopyString(cur_scan_result.ssid, cur_scan_result.ssid_length, (char *) scan_result->scan_info[idx].ssid); // if user has provided ssid, then check if the current scan result ssid matches the user provided ssid if (wfx_rsi.scan_ssid != NULL && @@ -559,10 +567,10 @@ sl_status_t show_scan_results(sl_wifi_scan_result_t * scan_result) // cleanup and return wfx_rsi.dev_state &= ~WFX_RSI_ST_SCANSTARTED; wfx_rsi.scan_cb((wfx_wifi_scan_result_t *) 0); - wfx_rsi.scan_cb = NULL; + wfx_rsi.scan_cb = nullptr; if (wfx_rsi.scan_ssid) { - vPortFree(wfx_rsi.scan_ssid); + chip::Platform::MemoryFree(wfx_rsi.scan_ssid); wfx_rsi.scan_ssid = NULL; } return SL_STATUS_OK; @@ -576,14 +584,14 @@ sl_status_t bg_scan_callback_handler(sl_wifi_event_t event, sl_wifi_scan_result_ return SL_STATUS_OK; } /*************************************************************************************** - * @fn static void wfx_rsi_save_ap_info() + * @fn static void wfx_rsi_save_ap_info(void) * @brief * Saving the details of the AP * @param[in] None * @return * None *******************************************************************************************/ -static void wfx_rsi_save_ap_info() // translation +static void wfx_rsi_save_ap_info(void) // translation { sl_status_t status = SL_STATUS_OK; #ifndef EXP_BOARD @@ -592,8 +600,8 @@ static void wfx_rsi_save_ap_info() // translation #endif sl_wifi_ssid_t ssid_arg; memset(&ssid_arg, 0, sizeof(ssid_arg)); - ssid_arg.length = strnlen(wfx_rsi.sec.ssid, WFX_MAX_SSID_LENGTH); - strncpy((char *) &ssid_arg.value[0], wfx_rsi.sec.ssid, WFX_MAX_SSID_LENGTH); + ssid_arg.length = wfx_rsi.sec.ssid_length; + chip::Platform::CopyString((char *) &ssid_arg.value[0], ssid_arg.length, wfx_rsi.sec.ssid); sl_wifi_set_scan_callback(scan_callback_handler, NULL); scan_results_complete = false; #ifndef EXP_BOARD @@ -619,7 +627,7 @@ static sl_status_t wfx_rsi_do_join(void) sl_status_t status = SL_STATUS_OK; sl_wifi_client_configuration_t ap; memset(&ap, 0, sizeof(ap)); - WfxEvent_t event; + switch (wfx_rsi.sec.security) { case WFX_SEC_WEP: @@ -662,19 +670,17 @@ static sl_status_t wfx_rsi_do_join(void) status = sl_wifi_set_advanced_client_configuration(SL_WIFI_CLIENT_INTERFACE, &client_config); VerifyOrReturnError(status == SL_STATUS_OK, status); #endif // CHIP_CONFIG_ENABLE_ICD_SERVER - size_t psk_length = strlen(wfx_rsi.sec.passkey); - VerifyOrReturnError(psk_length <= SL_WIFI_MAX_PSK_LENGTH, SL_STATUS_SI91X_INVALID_PSK_LENGTH); sl_net_credential_id_t id = SL_NET_DEFAULT_WIFI_CLIENT_CREDENTIAL_ID; - status = sl_net_set_credential(id, SL_NET_WIFI_PSK, &wfx_rsi.sec.passkey[0], psk_length); + status = sl_net_set_credential(id, SL_NET_WIFI_PSK, &wfx_rsi.sec.passkey[0], wfx_rsi.sec.passkey_length); VerifyOrReturnError(status == SL_STATUS_OK, status); uint32_t timeout_ms = 0; - ap.ssid.length = strnlen(wfx_rsi.sec.ssid, WFX_MAX_SSID_LENGTH); + ap.ssid.length = wfx_rsi.sec.ssid_length; ap.encryption = SL_WIFI_NO_ENCRYPTION; ap.credential_id = id; - memset(&ap.ssid.value, 0, (sizeof(ap.ssid.value) / sizeof(ap.ssid.value[0]))); - strncpy((char *) &ap.ssid.value[0], wfx_rsi.sec.ssid, WFX_MAX_SSID_LENGTH); + memcpy((char *) &ap.ssid.value[0], wfx_rsi.sec.ssid, wfx_rsi.sec.ssid_length); ChipLogDetail(DeviceLayer, "wfx_rsi_do_join: SSID: %s, SECURITY: %d(%d)", ap.ssid.value, ap.security, wfx_rsi.sec.security); + status = sl_wifi_connect(SL_WIFI_CLIENT_INTERFACE, &ap, timeout_ms); // sl_wifi_connect returns SL_STATUS_IN_PROGRESS if join is in progress // after the initial scan is done, the scan does not check for SSID @@ -687,24 +693,25 @@ static sl_status_t wfx_rsi_do_join(void) wfx_rsi.dev_state &= ~(WFX_RSI_ST_STA_CONNECTING | WFX_RSI_ST_STA_CONNECTED); ChipLogProgress(DeviceLayer, "wfx_rsi_do_join: retry attempt %d", wfx_rsi.join_retries); wfx_retry_connection(++wfx_rsi.join_retries); + + WfxEvent_t event; event.eventType = WFX_EVT_STA_START_JOIN; WfxPostEvent(&event); + return status; } /// NotifyConnectivity /// @brief Notify the application about the connectivity status if it has not been notified yet. /// Helper function for HandleDHCPPolling. -void NotifyConnectivity() +void NotifyConnectivity(void) { - if (!hasNotifiedWifiConnectivity) - { - wfx_connected_notify(CONNECTION_STATUS_SUCCESS, &wfx_rsi.ap_mac); - hasNotifiedWifiConnectivity = true; - } + VerifyOrReturn(!hasNotifiedWifiConnectivity); + wfx_connected_notify(CONNECTION_STATUS_SUCCESS, &wfx_rsi.ap_mac); + hasNotifiedWifiConnectivity = true; } -void HandleDHCPPolling() +void HandleDHCPPolling(void) { struct netif * sta_netif; WfxEvent_t event; @@ -722,6 +729,8 @@ void HandleDHCPPolling() { wfx_dhcp_got_ipv4((uint32_t) sta_netif->ip_addr.u_addr.ip4.addr); hasNotifiedIPV4 = true; + event.eventType = WFX_EVT_STA_DHCP_DONE; + WfxPostEvent(&event); NotifyConnectivity(); } else if (dhcp_state == DHCP_OFF) @@ -760,7 +769,7 @@ void WfxPostEvent(WfxEvent_t * event) /// ResetDHCPNotificationFlags /// @brief Reset the flags that are used to notify the application about DHCP connectivity /// and emits a WFX_EVT_STA_DO_DHCP event to trigger DHCP polling checks. Helper function for ProcessEvent. -void ResetDHCPNotificationFlags() +void ResetDHCPNotificationFlags(void) { WfxEvent_t outEvent; @@ -877,7 +886,7 @@ void ProcessEvent(WfxEvent_t inEvent) /********************************************************************************* * @fn void wfx_rsi_task(void *arg) * @brief - * The main WLAN task - started by wfx_wifi_start () that interfaces with RSI. + * The main WLAN task - started by wfx_wifi_start() that interfaces with RSI. * The rest of RSI stuff come in call-backs. * The initialization has been already done. * @param[in] arg: diff --git a/examples/platform/silabs/efr32/rs911x/rsi_if.cpp b/examples/platform/silabs/efr32/rs911x/rsi_if.cpp index d5560d69e97219..02500c80f78e35 100644 --- a/examples/platform/silabs/efr32/rs911x/rsi_if.cpp +++ b/examples/platform/silabs/efr32/rs911x/rsi_if.cpp @@ -54,10 +54,10 @@ extern "C" { #include "silabs_utils.h" #include "wfx_rsi.h" -// TODO convert this file to cpp and use CodeUtils.h -#ifndef MIN -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#endif +#include +#include +#include +#include #define WFX_QUEUE_SIZE 10 @@ -112,21 +112,21 @@ static void DHCPTimerEventHandler(void * arg) WfxPostEvent(&event); } -static void CancelDHCPTimer() +static void CancelDHCPTimer(void) { osStatus_t status; // Check if timer started if (!osTimerIsRunning(sDHCPTimer)) { - SILABS_LOG("CancelDHCPTimer: timer not running"); + ChipLogError(DeviceLayer, "CancelDHCPTimer: timer not running"); return; } status = osTimerStop(sDHCPTimer); if (status != osOK) { - SILABS_LOG("CancelDHCPTimer: failed to stop timer with status: %d", status); + ChipLogError(DeviceLayer, "CancelDHCPTimer: failed to stop timer with status: %d", status); } } @@ -140,7 +140,7 @@ static void StartDHCPTimer(uint32_t timeout) status = osTimerStart(sDHCPTimer, pdMS_TO_TICKS(timeout)); if (status != osOK) { - SILABS_LOG("StartDHCPTimer: failed to start timer with status: %d", status); + ChipLogError(DeviceLayer, "StartDHCPTimer: failed to start timer with status: %d", status); } } @@ -154,7 +154,7 @@ static void StartDHCPTimer(uint32_t timeout) *********************************************************************/ int32_t wfx_rsi_get_ap_info(wfx_wifi_scan_result_t * ap) { - int32_t status; + int32_t status = RSI_SUCCESS; uint8_t rssi; ap->security = wfx_rsi.sec.security; ap->chan = wfx_rsi.ap_chan; @@ -182,70 +182,65 @@ int32_t wfx_rsi_get_ap_ext(wfx_wifi_scan_ext_t * extra_info) status = rsi_wlan_get(RSI_WLAN_EXT_STATS, buff, sizeof(buff)); if (status != RSI_SUCCESS) { - SILABS_LOG("Failed, Error Code : 0x%lX", status); - } - else - { - rsi_wlan_ext_stats_t * test = (rsi_wlan_ext_stats_t *) buff; - extra_info->beacon_lost_count = test->beacon_lost_count - temp_reset.beacon_lost_count; - extra_info->beacon_rx_count = test->beacon_rx_count - temp_reset.beacon_rx_count; - extra_info->mcast_rx_count = test->mcast_rx_count - temp_reset.mcast_rx_count; - extra_info->mcast_tx_count = test->mcast_tx_count - temp_reset.mcast_tx_count; - extra_info->ucast_rx_count = test->ucast_rx_count - temp_reset.ucast_rx_count; - extra_info->ucast_tx_count = test->ucast_tx_count - temp_reset.ucast_tx_count; - extra_info->overrun_count = test->overrun_count - temp_reset.overrun_count; + ChipLogError(DeviceLayer, "Failed, Error Code : 0x%lX", status); + return status; } + rsi_wlan_ext_stats_t * test = (rsi_wlan_ext_stats_t *) buff; + extra_info->beacon_lost_count = test->beacon_lost_count - temp_reset.beacon_lost_count; + extra_info->beacon_rx_count = test->beacon_rx_count - temp_reset.beacon_rx_count; + extra_info->mcast_rx_count = test->mcast_rx_count - temp_reset.mcast_rx_count; + extra_info->mcast_tx_count = test->mcast_tx_count - temp_reset.mcast_tx_count; + extra_info->ucast_rx_count = test->ucast_rx_count - temp_reset.ucast_rx_count; + extra_info->ucast_tx_count = test->ucast_tx_count - temp_reset.ucast_tx_count; + extra_info->overrun_count = test->overrun_count - temp_reset.overrun_count; return status; } /****************************************************************** - * @fn int32_t wfx_rsi_reset_count() + * @fn int32_t wfx_rsi_reset_count(void) * @brief * Getting the driver reset count * @param[in] None * @return * status *********************************************************************/ -int32_t wfx_rsi_reset_count() +int32_t wfx_rsi_reset_count(void) { int32_t status; uint8_t buff[RSI_RESPONSE_MAX_SIZE] = { 0 }; status = rsi_wlan_get(RSI_WLAN_EXT_STATS, buff, sizeof(buff)); if (status != RSI_SUCCESS) { - SILABS_LOG("Failed, Error Code : 0x%lX", status); - } - else - { - rsi_wlan_ext_stats_t * test = (rsi_wlan_ext_stats_t *) buff; - temp_reset.beacon_lost_count = test->beacon_lost_count; - temp_reset.beacon_rx_count = test->beacon_rx_count; - temp_reset.mcast_rx_count = test->mcast_rx_count; - temp_reset.mcast_tx_count = test->mcast_tx_count; - temp_reset.ucast_rx_count = test->ucast_rx_count; - temp_reset.ucast_tx_count = test->ucast_tx_count; - temp_reset.overrun_count = test->overrun_count; + ChipLogError(DeviceLayer, "Failed, Error Code : 0x%lX", status); + return status; } + rsi_wlan_ext_stats_t * test = (rsi_wlan_ext_stats_t *) buff; + temp_reset.beacon_lost_count = test->beacon_lost_count; + temp_reset.beacon_rx_count = test->beacon_rx_count; + temp_reset.mcast_rx_count = test->mcast_rx_count; + temp_reset.mcast_tx_count = test->mcast_tx_count; + temp_reset.ucast_rx_count = test->ucast_rx_count; + temp_reset.ucast_tx_count = test->ucast_tx_count; + temp_reset.overrun_count = test->overrun_count; return status; } /****************************************************************** - * @fn wfx_rsi_disconnect() + * @fn wfx_rsi_disconnect(void) * @brief * Getting the driver disconnect status * @param[in] None * @return * status *********************************************************************/ -int32_t wfx_rsi_disconnect() +int32_t wfx_rsi_disconnect(void) { - int32_t status = rsi_wlan_disconnect(); - return status; + return rsi_wlan_disconnect(); } #if SL_ICD_ENABLED /****************************************************************** - * @fn wfx_rsi_power_save() + * @fn wfx_rsi_power_save(void) * @brief * Setting the RS911x in DTIM sleep based mode * @@ -253,14 +248,14 @@ int32_t wfx_rsi_disconnect() * @return * None *********************************************************************/ -int32_t wfx_rsi_power_save() +int32_t wfx_rsi_power_save(void) { int32_t status; #ifdef RSI_BLE_ENABLE status = rsi_bt_power_save_profile(RSI_SLEEP_MODE_2, RSI_MAX_PSP); if (status != RSI_SUCCESS) { - SILABS_LOG("BT Powersave Config Failed, Error Code : 0x%lX", status); + ChipLogError(DeviceLayer, "BT Powersave Config Failed, Error Code : 0x%lX", status); return status; } #endif /* RSI_BLE_ENABLE */ @@ -268,10 +263,10 @@ int32_t wfx_rsi_power_save() status = rsi_wlan_power_save_profile(RSI_SLEEP_MODE_2, RSI_MAX_PSP); if (status != RSI_SUCCESS) { - SILABS_LOG("Powersave Config Failed, Error Code : 0x%lX", status); + ChipLogError(DeviceLayer, "Powersave Config Failed, Error Code : 0x%lX", status); return status; } - SILABS_LOG("Powersave Config Success"); + ChipLogDetail(DeviceLayer, "Powersave Config Success"); return status; } #endif /* SL_ICD_ENABLED */ @@ -295,20 +290,19 @@ static void wfx_rsi_join_cb(uint16_t status, const uint8_t * buf, const uint16_t /* * We should enable retry.. (Need config variable for this) */ - SILABS_LOG("wfx_rsi_join_cb: failed. retry: %d", wfx_rsi.join_retries); + ChipLogProgress(DeviceLayer, "wfx_rsi_join_cb: failed. retry: %d", wfx_rsi.join_retries); wfx_retry_connection(++wfx_rsi.join_retries); + return; } - else - { - /* - * Join was complete - Do the DHCP - */ - memset(&temp_reset, 0, sizeof(wfx_wifi_scan_ext_t)); - SILABS_LOG("wfx_rsi_join_cb: join completed."); - WfxEvent.eventType = WFX_EVT_STA_CONN; - WfxPostEvent(&WfxEvent); - wfx_rsi.join_retries = 0; - } + + /* + * Join was complete - Do the DHCP + */ + ChipLogProgress(DeviceLayer, "wfx_rsi_join_cb: success"); + memset(&temp_reset, 0, sizeof(wfx_wifi_scan_ext_t)); + WfxEvent.eventType = WFX_EVT_STA_CONN; + WfxPostEvent(&WfxEvent); + wfx_rsi.join_retries = 0; } /****************************************************************** @@ -323,7 +317,7 @@ static void wfx_rsi_join_cb(uint16_t status, const uint8_t * buf, const uint16_t *********************************************************************/ static void wfx_rsi_join_fail_cb(uint16_t status, uint8_t * buf, uint32_t len) { - SILABS_LOG("wfx_rsi_join_fail_cb: error: failed status: %02x", status); + ChipLogError(DeviceLayer, "wfx_rsi_join_fail_cb: status: %d", status); WfxEvent_t WfxEvent; wfx_rsi.join_retries += 1; wfx_rsi.dev_state &= ~(WFX_RSI_ST_STA_CONNECTING | WFX_RSI_ST_STA_CONNECTED); @@ -363,30 +357,27 @@ static int32_t wfx_rsi_init(void) uint8_t buf[RSI_RESPONSE_HOLD_BUFF_SIZE]; extern void rsi_hal_board_init(void); - SILABS_LOG("wfx_rsi_init: starting(HEAP_SZ = %d)", SL_HEAP_SIZE); + ChipLogProgress(DeviceLayer, "wfx_rsi_init: starting(HEAP_SZ = %d)", SL_HEAP_SIZE); //! Driver initialization status = rsi_driver_init(wfx_rsi_drv_buf, WFX_RSI_BUF_SZ); if ((status < RSI_DRIVER_STATUS) || (status > WFX_RSI_BUF_SZ)) { - SILABS_LOG("wfx_rsi_init: error: RSI Driver initialization failed with status: %02x", status); + ChipLogError(DeviceLayer, "wfx_rsi_init: rsi_driver_init failed: %ld", status); return status; } - - SILABS_LOG("wfx_rsi_init: rsi_device_init", __func__); /* ! Redpine module intialisation */ if ((status = rsi_device_init(LOAD_NWP_FW)) != RSI_SUCCESS) { - SILABS_LOG("wfx_rsi_init: error: rsi_device_init failed with status: %02x", status); + ChipLogError(DeviceLayer, "wfx_rsi_init: rsi_device_init failed: %ld", status); return status; } - SILABS_LOG("wfx_rsi_init: start wireless drv task", __func__); /* * Create the driver wrapper thread */ sDrvThread = osThreadNew(rsi_wireless_driver_task_wrapper, NULL, &kDrvTaskAttr); if (NULL == sDrvThread) { - SILABS_LOG("wfx_rsi_init: error: rsi_wireless_driver_task failed", __func__); + ChipLogError(DeviceLayer, "wfx_rsi_init: failed to create task"); return RSI_ERROR_INVALID_PARAM; } @@ -397,41 +388,40 @@ static int32_t wfx_rsi_init(void) if ((status = rsi_wireless_init(OPER_MODE_0, COEX_MODE_0)) != RSI_SUCCESS) { #endif - SILABS_LOG("wfx_rsi_init: error: Initialize WiSeConnect failed with status: %02x", status); + ChipLogError(DeviceLayer, "wfx_rsi_init: rsi_wireless_init failed: %ld", status); return status; } - SILABS_LOG("wfx_rsi_init: get FW version..", __func__); /* * Get the MAC and other info to let the user know about it. */ if (rsi_wlan_get(RSI_FW_VERSION, buf, sizeof(buf)) != RSI_SUCCESS) { - SILABS_LOG("wfx_rsi_init: error: rsi_wlan_get(RSI_FW_VERSION) failed with status: %02x", status); + ChipLogError(DeviceLayer, "wfx_rsi_init: rsi_wlan_get(RSI_FW_VERSION) failed: %ld", status); return status; } buf[sizeof(buf) - 1] = 0; - SILABS_LOG("wfx_rsi_init: RSI firmware version: %s", buf); + ChipLogProgress(DeviceLayer, "RSI firmware version: %s", buf); //! Send feature frame if ((status = rsi_send_feature_frame()) != RSI_SUCCESS) { - SILABS_LOG("wfx_rsi_init: error: rsi_send_feature_frame failed with status: %02x", status); + ChipLogError(DeviceLayer, "error: rsi_send_feature_frame failed: %ld", status); return status; } - SILABS_LOG("wfx_rsi_init: sent rsi_send_feature_frame", __func__); /* initializes wlan radio parameters and WLAN supplicant parameters. */ (void) rsi_wlan_radio_init(); /* Required so we can get MAC address */ if ((status = rsi_wlan_get(RSI_MAC_ADDRESS, &wfx_rsi.sta_mac.octet[0], RESP_BUFF_SIZE)) != RSI_SUCCESS) { - SILABS_LOG("wfx_rsi_init: error: rsi_wlan_get failed with status: %02x", status); + ChipLogError(DeviceLayer, "wfx_rsi_init: rsi_wlan_get(RSI_MAC_ADDRESS) failed: %ld", status); return status; } - SILABS_LOG("wfx_rsi_init: WLAN: MAC %02x:%02x:%02x %02x:%02x:%02x", wfx_rsi.sta_mac.octet[0], wfx_rsi.sta_mac.octet[1], - wfx_rsi.sta_mac.octet[2], wfx_rsi.sta_mac.octet[3], wfx_rsi.sta_mac.octet[4], wfx_rsi.sta_mac.octet[5]); + ChipLogDetail(DeviceLayer, "wfx_rsi_init: MAC: %02x:%02x:%02x %02x:%02x:%02x", wfx_rsi.sta_mac.octet[0], + wfx_rsi.sta_mac.octet[1], wfx_rsi.sta_mac.octet[2], wfx_rsi.sta_mac.octet[3], wfx_rsi.sta_mac.octet[4], + wfx_rsi.sta_mac.octet[5]); // Create the message queue sWifiEventQueue = osMessageQueueNew(WFX_QUEUE_SIZE, sizeof(WfxEvent_t), NULL); @@ -453,12 +443,12 @@ static int32_t wfx_rsi_init(void) */ if ((status = rsi_wlan_register_callbacks(RSI_JOIN_FAIL_CB, wfx_rsi_join_fail_cb)) != RSI_SUCCESS) { - SILABS_LOG("wfx_rsi_init: RSI callback register join failed with status: %02x", status); + ChipLogError(DeviceLayer, "wfx_rsi_init: rsi_wlan_register_callbacks failed: %ld", status); return status; } if ((status = rsi_wlan_register_callbacks(RSI_WLAN_DATA_RECEIVE_NOTIFY_CB, wfx_rsi_wlan_pkt_cb)) != RSI_SUCCESS) { - SILABS_LOG("wfx_rsi_init: RSI callback register data-notify failed with status: %02x", status); + ChipLogError(DeviceLayer, "wfx_rsi_init: rsi_wlan_register_callbacks failed: %ld", status); return status; } @@ -467,26 +457,26 @@ static int32_t wfx_rsi_init(void) #endif wfx_rsi.dev_state |= WFX_RSI_ST_DEV_READY; - SILABS_LOG("wfx_rsi_init: RSI: OK", __func__); + ChipLogProgress(DeviceLayer, "wfx_rsi_init: success"); return RSI_SUCCESS; } /*************************************************************************************** - * @fn static void wfx_rsi_save_ap_info() + * @fn static void wfx_rsi_save_ap_info(void) * @brief * Saving the details of the AP * @param[in] None * @return * None *******************************************************************************************/ -static void wfx_rsi_save_ap_info() // translation +static void wfx_rsi_save_ap_info(void) // translation { int32_t status; rsi_rsp_scan_t rsp; status = rsi_wlan_scan_with_bitmap_options((int8_t *) &wfx_rsi.sec.ssid[0], AP_CHANNEL_NO_0, &rsp, sizeof(rsp), SCAN_BITMAP_OPTN_1); - if (status) + if (status != RSI_SUCCESS) { /* * Scan is done - failed @@ -496,7 +486,7 @@ static void wfx_rsi_save_ap_info() // translation #else /* !WIFI_ENABLE_SECURITY_WPA3_TRANSITION */ wfx_rsi.sec.security = WFX_SEC_WPA2; #endif /* WIFI_ENABLE_SECURITY_WPA3_TRANSITION */ - SILABS_LOG("wfx_rsi_save_ap_info: warn: failed with status: %02x", status); + ChipLogProgress(DeviceLayer, "warn: scan failed: %ld", status); return; } wfx_rsi.sec.security = WFX_SEC_UNSPECIFIED; @@ -532,8 +522,8 @@ static void wfx_rsi_save_ap_info() // translation break; } - SILABS_LOG("wfx_rsi_save_ap_info: WLAN: connecting to %s, sec=%d, status=%02x", &wfx_rsi.sec.ssid[0], wfx_rsi.sec.security, - status); + ChipLogProgress(DeviceLayer, "wfx_rsi_save_ap_info: connecting to %s, sec=%d, status=%ld", &wfx_rsi.sec.ssid[0], + wfx_rsi.sec.security, status); } /******************************************************************************************** @@ -550,58 +540,56 @@ static void wfx_rsi_do_join(void) if (wfx_rsi.dev_state & (WFX_RSI_ST_STA_CONNECTING | WFX_RSI_ST_STA_CONNECTED)) { - SILABS_LOG("wfx_rsi_do_join: not joining - already in progress"); + ChipLogProgress(DeviceLayer, "wfx_rsi_do_join: already in progress"); + return; } - else - { - switch (wfx_rsi.sec.security) - { - case WFX_SEC_WEP: - connect_security_mode = RSI_WEP; - break; - case WFX_SEC_WPA: - case WFX_SEC_WPA2: - connect_security_mode = RSI_WPA_WPA2_MIXED; - break; + switch (wfx_rsi.sec.security) + { + case WFX_SEC_WEP: + connect_security_mode = RSI_WEP; + break; + case WFX_SEC_WPA: + case WFX_SEC_WPA2: + connect_security_mode = RSI_WPA_WPA2_MIXED; + break; #if WIFI_ENABLE_SECURITY_WPA3_TRANSITION - case WFX_SEC_WPA3: - connect_security_mode = RSI_WPA3_PERSONAL_TRANSITION; - break; + case WFX_SEC_WPA3: + connect_security_mode = RSI_WPA3_PERSONAL_TRANSITION; + break; #endif // WIFI_ENABLE_SECURITY_WPA3_TRANSITION - case WFX_SEC_NONE: - connect_security_mode = RSI_OPEN; - break; - default: - SILABS_LOG("wfx_rsi_do_join: error: unknown security type."); - return; - } + case WFX_SEC_NONE: + connect_security_mode = RSI_OPEN; + break; + default: + ChipLogError(DeviceLayer, "wfx_rsi_do_join: error: unknown security type."); + return; + } - SILABS_LOG("wfx_rsi_do_join: WLAN: connecting to %s, sec=%d", &wfx_rsi.sec.ssid[0], wfx_rsi.sec.security); + ChipLogProgress(DeviceLayer, "wfx_rsi_do_join: connecting to %s, sec=%d", &wfx_rsi.sec.ssid[0], wfx_rsi.sec.security); - /* - * Join the network - */ - /* TODO - make the WFX_SECURITY_xxx - same as RSI_xxx - * Right now it's done by hand - we need something better - */ - wfx_rsi.dev_state |= WFX_RSI_ST_STA_CONNECTING; + /* + * Join the network + */ + /* TODO - make the WFX_SECURITY_xxx - same as RSI_xxx + * Right now it's done by hand - we need something better + */ + wfx_rsi.dev_state |= WFX_RSI_ST_STA_CONNECTING; - if ((status = rsi_wlan_register_callbacks(RSI_JOIN_FAIL_CB, wfx_rsi_join_fail_cb)) != RSI_SUCCESS) - { - SILABS_LOG("wfx_rsi_do_join: RSI callback register join failed with status: %02x", status); - } + if ((status = rsi_wlan_register_callbacks(RSI_JOIN_FAIL_CB, wfx_rsi_join_fail_cb)) != RSI_SUCCESS) + { + ChipLogError(DeviceLayer, "wfx_rsi_do_join: rsi_wlan_register_callbacks failed: %ld", status); + } - /* Try to connect Wifi with given Credentials - * untill there is a success or maximum number of tries allowed - */ - if ((status = rsi_wlan_connect_async((int8_t *) &wfx_rsi.sec.ssid[0], connect_security_mode, &wfx_rsi.sec.passkey[0], - wfx_rsi_join_cb)) != RSI_SUCCESS) - { - wfx_rsi.dev_state &= ~WFX_RSI_ST_STA_CONNECTING; - SILABS_LOG("wfx_rsi_do_join: rsi_wlan_connect_async failed with status: %02x on try %d", status, wfx_rsi.join_retries); - wfx_retry_connection(++wfx_rsi.join_retries); - } + /* Try to connect Wifi with given Credentials + * until there is a success or maximum number of tries allowed + */ + if ((status = rsi_wlan_connect_async((int8_t *) &wfx_rsi.sec.ssid[0], connect_security_mode, &wfx_rsi.sec.passkey[0], + wfx_rsi_join_cb)) != RSI_SUCCESS) + { + wfx_rsi.dev_state &= ~WFX_RSI_ST_STA_CONNECTING; + ChipLogProgress(DeviceLayer, "wfx_rsi_do_join: rsi_wlan_connect_async failed: %ld on try %d", status, wfx_rsi.join_retries); + wfx_retry_connection(++wfx_rsi.join_retries); } } @@ -609,7 +597,7 @@ static void wfx_rsi_do_join(void) * @brief Notify the application about the connectivity status if it has not been notified yet. * Helper function for HandleDHCPPolling. */ -void NotifyConnectivity() +void NotifyConnectivity(void) { if (!hasNotifiedWifiConnectivity) { @@ -618,7 +606,7 @@ void NotifyConnectivity() } } -void HandleDHCPPolling() +void HandleDHCPPolling(void) { struct netif * sta_netif; WfxEvent_t event; @@ -628,7 +616,7 @@ void HandleDHCPPolling() { // TODO: Notify the application that the interface is not set up or Chipdie here because we // are in an unkonwn state - SILABS_LOG("HandleDHCPPolling: failed to get STA netif"); + ChipLogError(DeviceLayer, "HandleDHCPPolling: failed to get STA netif"); return; } #if (CHIP_DEVICE_CONFIG_ENABLE_IPV4) @@ -662,7 +650,7 @@ void HandleDHCPPolling() * @brief Reset the flags that are used to notify the application about DHCP connectivity * and emits a WFX_EVT_STA_DO_DHCP event to trigger DHCP polling checks. Helper function for ProcessEvent. */ -void ResetDHCPNotificationFlags() +void ResetDHCPNotificationFlags(void) { WfxEvent_t outEvent; @@ -685,19 +673,27 @@ void WfxPostEvent(WfxEvent_t * event) if (status != osOK) { - SILABS_LOG("WfxPostEvent: failed to post event with status: %d", status); + ChipLogError(DeviceLayer, "WfxPostEvent: failed to post event with status: %ld", status); // TODO: Handle error, requeue event depending on queue size or notify relevant task, // Chipdie, etc. } } +/** + * @brief Process the Wi-Fi event. + * + * This function is responsible for processing different types of Wi-Fi events and taking appropriate actions based on the event + * type. + * + * @param inEvent The input Wi-Fi event to be processed. + */ void ProcessEvent(WfxEvent_t inEvent) { // Process event switch (inEvent.eventType) { case WFX_EVT_STA_CONN: { - SILABS_LOG("Starting LwIP STA"); + ChipLogDetail(DeviceLayer, "_onWFXEvent: WFX_EVT_STA_CONN"); wfx_rsi.dev_state |= WFX_RSI_ST_STA_CONNECTED; ResetDHCPNotificationFlags(); wfx_lwip_set_sta_link_up(); @@ -709,10 +705,10 @@ void ProcessEvent(WfxEvent_t inEvent) } break; case WFX_EVT_STA_DISCONN: { + ChipLogDetail(DeviceLayer, "_onWFXEvent: WFX_EVT_STA_DISCONN"); // TODO: This event is not being posted anywhere, seems to be a dead code or we are missing something wfx_rsi.dev_state &= ~(WFX_RSI_ST_STA_READY | WFX_RSI_ST_STA_CONNECTING | WFX_RSI_ST_STA_CONNECTED | WFX_RSI_ST_STA_DHCP_DONE); - SILABS_LOG("Disconnect notify"); /* TODO: Implement disconnect notify */ ResetDHCPNotificationFlags(); wfx_lwip_set_sta_link_down(); // Internally dhcpclient_poll(netif) -> @@ -732,48 +728,64 @@ void ProcessEvent(WfxEvent_t inEvent) case WFX_EVT_SCAN: { #ifdef SL_WFX_CONFIG_SCAN rsi_rsp_scan_t scan_rsp = { 0 }; - int32_t status = rsi_wlan_bgscan_profile(1, &scan_rsp, sizeof(scan_rsp)); + memset(&scan_rsp, 0, sizeof(scan_rsp)); + int32_t status = rsi_wlan_bgscan_profile(1, &scan_rsp, sizeof(scan_rsp)); - if (status) + if (status != RSI_SUCCESS) { - SILABS_LOG("SSID scan failed: %02x ", status); + ChipLogError(DeviceLayer, "rsi_wlan_bgscan failed: %ld ", status); + return; } - else + + if (wfx_rsi.scan_cb == NULL) + { + ChipLogError(DeviceLayer, "wfx_rsi.scan_cb is NULL"); + return; + } + + rsi_scan_info_t * scan; + wfx_wifi_scan_result_t ap; + + for (int x = 0; x < scan_rsp.scan_count[0]; x++) { - rsi_scan_info_t * scan; - wfx_wifi_scan_result_t ap; - for (int x = 0; x < scan_rsp.scan_count[0]; x++) + scan = &scan_rsp.scan_info[x]; + // clear structure and calculate size of SSID + memset(&ap, 0, sizeof(ap)); + ap.ssid_length = + strnlen(reinterpret_cast(scan->ssid), chip::min(sizeof(scan->ssid), WFX_MAX_SSID_LENGTH)); + chip::Platform::CopyString(ap.ssid, ap.ssid_length, reinterpret_cast(scan->ssid)); + + // check if the scanned ssid is the one we are looking for + if (wfx_rsi.scan_ssid_length != 0 && strncmp(wfx_rsi.scan_ssid, ap.ssid, WFX_MAX_SSID_LENGTH) != CMP_SUCCESS) { - scan = &scan_rsp.scan_info[x]; - // is it a scan all or target scan - if (wfx_rsi.scan_ssid != NULL && - (strncmp(wfx_rsi.scan_ssid, (char *) scan->ssid, MIN(strlen(wfx_rsi.scan_ssid), sizeof(scan->ssid))) == - CMP_SUCCESS)) - { - strncpy(ap.ssid, (char *) scan->ssid, MIN(sizeof(ap.ssid), sizeof(scan->ssid))); - ap.security = static_cast(scan->security_mode); - ap.rssi = (-1) * scan->rssi_val; - configASSERT(sizeof(ap.bssid) >= BSSID_LEN); - configASSERT(sizeof(scan->bssid) >= BSSID_LEN); - memcpy(ap.bssid, scan->bssid, BSSID_LEN); - (*wfx_rsi.scan_cb)(&ap); - - if (wfx_rsi.scan_ssid) - { - break; // we found the targeted ssid. - } - } + continue; // we found the targeted ssid. } + // TODO: convert security mode from RSI to WFX + ap.security = static_cast(scan->security_mode); + ap.rssi = (-1) * scan->rssi_val; + + configASSERT(sizeof(ap.bssid) == BSSID_LEN); + configASSERT(sizeof(scan->bssid) == BSSID_LEN); + memcpy(ap.bssid, scan->bssid, BSSID_LEN); + (*wfx_rsi.scan_cb)(&ap); + + // no ssid filter set, return all results + if (wfx_rsi.scan_ssid_length == 0) + { + continue; + } + + break; } /* Terminate with end of scan which is no ap sent back */ - (*wfx_rsi.scan_cb)((wfx_wifi_scan_result_t *) 0); - wfx_rsi.scan_cb = (void (*)(wfx_wifi_scan_result_t *)) 0; + (*wfx_rsi.scan_cb)((wfx_wifi_scan_result_t *) NULL); + wfx_rsi.scan_cb = nullptr; if (wfx_rsi.scan_ssid) { - vPortFree(wfx_rsi.scan_ssid); - wfx_rsi.scan_ssid = (char *) 0; + chip::Platform::MemoryFree(wfx_rsi.scan_ssid); + wfx_rsi.scan_ssid = NULL; } #endif /* SL_WFX_CONFIG_SCAN */ } @@ -819,14 +831,14 @@ void wfx_rsi_task(void * arg) uint32_t rsi_status = wfx_rsi_init(); if (rsi_status != RSI_SUCCESS) { - SILABS_LOG("wfx_rsi_task: error: wfx_rsi_init with status: %02x", rsi_status); + ChipLogError(DeviceLayer, "wfx_rsi_task: wfx_rsi_init failed: %ld", rsi_status); return; } WfxEvent_t wfxEvent; wfx_lwip_start(); wfx_started_notify(); - SILABS_LOG("Starting event loop"); + ChipLogProgress(DeviceLayer, "wfx_rsi_task: starting event loop"); for (;;) { osStatus_t status = osMessageQueueGet(sWifiEventQueue, &wfxEvent, NULL, osWaitForever); @@ -836,7 +848,7 @@ void wfx_rsi_task(void * arg) } else { - SILABS_LOG("Failed to get event with status: %x", status); + ChipLogProgress(DeviceLayer, "wfx_rsi_task: get event failed: %x", status); } } } @@ -859,8 +871,8 @@ void wfx_dhcp_got_ipv4(uint32_t ip) wfx_rsi.ip4_addr[1] = (ip >> 8) & HEX_VALUE_FF; wfx_rsi.ip4_addr[2] = (ip >> 16) & HEX_VALUE_FF; wfx_rsi.ip4_addr[3] = (ip >> 24) & HEX_VALUE_FF; - SILABS_LOG("wfx_dhcp_got_ipv4: DHCP OK: IP=%d.%d.%d.%d", wfx_rsi.ip4_addr[0], wfx_rsi.ip4_addr[1], wfx_rsi.ip4_addr[2], - wfx_rsi.ip4_addr[3]); + ChipLogProgress(DeviceLayer, "DHCP OK: IP=%d.%d.%d.%d", wfx_rsi.ip4_addr[0], wfx_rsi.ip4_addr[1], wfx_rsi.ip4_addr[2], + wfx_rsi.ip4_addr[3]); /* Notify the Connectivity Manager - via the app */ wfx_rsi.dev_state |= WFX_RSI_ST_STA_DHCP_DONE; wfx_ip_changed_notify(IP_STATUS_SUCCESS); @@ -875,14 +887,14 @@ void wfx_dhcp_got_ipv4(uint32_t ip) * see also: int32_t rsi_wlan_send_data_xx(uint8_t *buffer, uint32_t length) */ /******************************************************************************************** - * @fn void *wfx_rsi_alloc_pkt() + * @fn void *wfx_rsi_alloc_pkt(void) * @brief * Allocate packet to send data * @param[in] None * @return * None **********************************************************************************************/ -void * wfx_rsi_alloc_pkt() +void * wfx_rsi_alloc_pkt(void) { rsi_pkt_t * pkt; diff --git a/examples/platform/silabs/efr32/wf200/host_if.cpp b/examples/platform/silabs/efr32/wf200/host_if.cpp index 8247e385f61bcf..044ecc6e978cbd 100644 --- a/examples/platform/silabs/efr32/wf200/host_if.cpp +++ b/examples/platform/silabs/efr32/wf200/host_if.cpp @@ -42,6 +42,9 @@ #include "dhcp_client.h" #include "ethernetif.h" +#include +#include +#include #include using namespace ::chip; @@ -91,7 +94,7 @@ struct netif * sta_netif; wfx_wifi_provision_t wifi_provision; sl_wfx_get_counters_cnf_t * counters; sl_wfx_get_counters_cnf_t * Tempcounters; -#define PUT_COUNTER(name) SILABS_LOG("%-24s %lu\r\n", #name, (unsigned long) counters->body.count_##name); +#define PUT_COUNTER(name) ChipLogDetail(DeviceLayer, "%-24s %lu", #name, (unsigned long) counters->body.count_##name); bool hasNotifiedIPV6 = false; bool hasNotifiedIPV4 = false; @@ -108,6 +111,7 @@ static struct scan_result_holder static uint8_t scan_count = 0; static void (*scan_cb)(wfx_wifi_scan_result_t *); /* user-callback - when scan is done */ static char * scan_ssid; /* Which one are we scanning for */ +size_t scan_ssid_length = 0; static void sl_wfx_scan_result_callback(sl_wfx_scan_result_ind_body_t * scan_result); static void sl_wfx_scan_complete_callback(uint32_t status); #endif /* SL_WFX_CONFIG_SCAN */ @@ -133,7 +137,7 @@ extern uint32_t gOverrunCount; * @brief * Creates WFX events processing task. ******************************************************************************/ -static void wfx_events_task_start() +static void wfx_events_task_start(void) { /* create an event group to track Wi-Fi events */ sl_wfx_event_group = xEventGroupCreateStatic(&wfxEventGroup); @@ -142,7 +146,7 @@ static void wfx_events_task_start() wfxEventTaskStack, &wfxEventTaskBuffer); if (NULL == wfx_events_task_handle) { - SILABS_LOG("Failed to create WFX wfx_events"); + ChipLogError(DeviceLayer, "Failed to create WFX wfx_events"); } } @@ -159,7 +163,7 @@ sl_status_t sl_wfx_host_process_event(sl_wfx_generic_message_t * event_payload) { /******** INDICATION ********/ case SL_WFX_STARTUP_IND_ID: { - SILABS_LOG("WFX Startup Completed\r\n"); + ChipLogProgress(DeviceLayer, "startup completed."); PlatformMgrImpl().HandleWFXSystemEvent(WIFI_EVENT, event_payload); break; } @@ -237,34 +241,21 @@ sl_status_t sl_wfx_host_process_event(sl_wfx_generic_message_t * event_payload) } case SL_WFX_EXCEPTION_IND_ID: { sl_wfx_exception_ind_t * firmware_exception = (sl_wfx_exception_ind_t *) event_payload; - uint8_t * exception_tmp = (uint8_t *) firmware_exception; - SILABS_LOG("firmware exception\r\n"); - for (uint16_t i = 0; i < firmware_exception->header.length; i += 16) - { - SILABS_LOG("hif: %.8x:", i); - for (uint8_t j = 0; (j < 16) && ((i + j) < firmware_exception->header.length); j++) - { - SILABS_LOG(" %.2x", *exception_tmp); - exception_tmp++; - } - SILABS_LOG("\r\n"); - } + ChipLogError(DeviceLayer, "event: SL_WFX_EXCEPTION_IND_ID"); + ChipLogError(DeviceLayer, "firmware_exception->header.length: %d", firmware_exception->header.length); + // create a bytespan header.length with exception payload + ByteSpan exception_byte_span = ByteSpan((uint8_t *) firmware_exception, firmware_exception->header.length); + ChipLogByteSpan(DeviceLayer, exception_byte_span); break; } case SL_WFX_ERROR_IND_ID: { sl_wfx_error_ind_t * firmware_error = (sl_wfx_error_ind_t *) event_payload; - uint8_t * error_tmp = (uint8_t *) firmware_error; - SILABS_LOG("firmware error %lu\r\n", firmware_error->body.type); - for (uint16_t i = 0; i < firmware_error->header.length; i += 16) - { - SILABS_LOG("hif: %.8x:", i); - for (uint8_t j = 0; (j < 16) && ((i + j) < firmware_error->header.length); j++) - { - SILABS_LOG(" %.2x", *error_tmp); - error_tmp++; - } - SILABS_LOG("\r\n"); - } + ChipLogError(DeviceLayer, "event: SL_WFX_ERROR_IND_ID"); + ChipLogError(DeviceLayer, "firmware_error->type: %lu", firmware_error->body.type); + ChipLogError(DeviceLayer, "firmware_error->header.length: %d", firmware_error->header.length); + // create a bytespan header.length with error payload + ByteSpan error_byte_span = ByteSpan((uint8_t *) firmware_error, firmware_error->header.length); + ChipLogByteSpan(DeviceLayer, error_byte_span); break; } } @@ -282,28 +273,26 @@ static void sl_wfx_scan_result_callback(sl_wfx_scan_result_ind_body_t * scan_res { struct scan_result_holder * ap; - SILABS_LOG("# %2d %2d %03d %02X:%02X:%02X:%02X:%02X:%02X %s", scan_count, scan_result->channel, - ((int16_t) (scan_result->rcpi - 220) / 2), scan_result->mac[0], scan_result->mac[1], scan_result->mac[2], - scan_result->mac[3], scan_result->mac[4], scan_result->mac[5], scan_result->ssid_def.ssid); - /*Report one AP information*/ - SILABS_LOG("\r\n"); + ChipLogDetail(DeviceLayer, "# %2d %2d %03d %02X:%02X:%02X:%02X:%02X:%02X %s", scan_count, scan_result->channel, + ((int16_t) (scan_result->rcpi - 220) / 2), scan_result->mac[0], scan_result->mac[1], scan_result->mac[2], + scan_result->mac[3], scan_result->mac[4], scan_result->mac[5], scan_result->ssid_def.ssid); + /* Report one AP information */ /* don't save if filter only wants specific ssid */ - if (scan_ssid != (char *) 0) + if (scan_ssid != nullptr) { if (strcmp(scan_ssid, (char *) &scan_result->ssid_def.ssid[0]) != CMP_SUCCESS) return; } - if ((ap = (struct scan_result_holder *) pvPortMalloc(sizeof(*ap))) == (struct scan_result_holder *) 0) + if ((ap = (struct scan_result_holder *) (chip::Platform::MemoryAlloc(sizeof(*ap)))) == (struct scan_result_holder *) 0) { - SILABS_LOG("*ERR*Scan: No Mem"); + ChipLogError(DeviceLayer, "Scan: No Mem"); } else { ap->next = scan_save; scan_save = ap; /* Not checking if scan_result->ssid_length is < 33 */ - memcpy(ap->scan.ssid, scan_result->ssid_def.ssid, scan_result->ssid_def.ssid_length); - ap->scan.ssid[scan_result->ssid_def.ssid_length] = 0; /* make sure about null terminate */ + chip::Platform::CopyString(ap->scan.ssid, sizeof(ap->scan.ssid), (char *) &scan_result->ssid_def.ssid[0]); /* We do it in this order WPA3 first */ /* No EAP supported - Is this required */ ap->scan.security = WFX_SEC_UNSPECIFIED; @@ -363,7 +352,7 @@ static void sl_wfx_connect_callback(sl_wfx_connect_ind_body_t connect_indication switch (status) { case WFM_STATUS_SUCCESS: { - SILABS_LOG("STA-Connected\r\n"); + ChipLogProgress(DeviceLayer, "STA-Connected"); memcpy(&ap_mac.octet[0], mac, MAC_ADDRESS_FIRST_OCTET); sl_wfx_context->state = static_cast(static_cast(sl_wfx_context->state) | static_cast(SL_WFX_STA_INTERFACE_CONNECTED)); @@ -371,27 +360,27 @@ static void sl_wfx_connect_callback(sl_wfx_connect_ind_body_t connect_indication break; } case WFM_STATUS_NO_MATCHING_AP: { - SILABS_LOG("WFX Connection failed, access point not found\r\n"); + ChipLogError(DeviceLayer, "Connection failed, access point not found"); break; } case WFM_STATUS_CONNECTION_ABORTED: { - SILABS_LOG("WFX Connection aborted\r\n"); + ChipLogError(DeviceLayer, "Connection aborted"); break; } case WFM_STATUS_CONNECTION_TIMEOUT: { - SILABS_LOG("WFX Connection timeout\r\n"); + ChipLogError(DeviceLayer, "Connection timeout"); break; } case WFM_STATUS_CONNECTION_REJECTED_BY_AP: { - SILABS_LOG("WFX Connection rejected by the access point\r\n"); + ChipLogError(DeviceLayer, "Connection rejected by the access point"); break; } case WFM_STATUS_CONNECTION_AUTH_FAILURE: { - SILABS_LOG("WFX Connection authentication failure\r\n"); + ChipLogError(DeviceLayer, "Connection authentication failure"); break; } default: { - SILABS_LOG("WF Connection attempt error\r\n"); + ChipLogError(DeviceLayer, "Connection attempt error"); } } @@ -399,7 +388,7 @@ static void sl_wfx_connect_callback(sl_wfx_connect_ind_body_t connect_indication { retryJoin += 1; retryInProgress = false; - SILABS_LOG("WFX Retry to connect to network count: %d", retryJoin); + ChipLogProgress(DeviceLayer, "Retry to connect to network count: %d", retryJoin); sl_wfx_context->state = static_cast(static_cast(sl_wfx_context->state) & ~static_cast(SL_WFX_STARTED)); wfx_retry_connection(retryJoin); @@ -415,7 +404,7 @@ static void sl_wfx_connect_callback(sl_wfx_connect_ind_body_t connect_indication static void sl_wfx_disconnect_callback(uint8_t * mac, uint16_t reason) { (void) (mac); - SILABS_LOG("WFX Disconnected %d\r\n", reason); + ChipLogProgress(DeviceLayer, "Disconnected %d", reason); sl_wfx_context->state = static_cast(static_cast(sl_wfx_context->state) & ~static_cast(SL_WFX_STA_INTERFACE_CONNECTED)); retryInProgress = false; @@ -430,18 +419,10 @@ static void sl_wfx_disconnect_callback(uint8_t * mac, uint16_t reason) *****************************************************************************/ static void sl_wfx_start_ap_callback(uint32_t status) { - if (status == AP_START_SUCCESS) - { - SILABS_LOG("AP started\r\n"); - sl_wfx_context->state = - static_cast(static_cast(sl_wfx_context->state) | static_cast(SL_WFX_AP_INTERFACE_UP)); - xEventGroupSetBits(sl_wfx_event_group, SL_WFX_START_AP); - } - else - { - SILABS_LOG("AP start failed\r\n"); - strcpy(event_log, "AP start failed"); - } + VerifyOrReturnLogError(status == AP_START_SUCCESS, CHIP_ERROR_INTERNAL); + sl_wfx_context->state = + static_cast(static_cast(sl_wfx_context->state) | static_cast(SL_WFX_AP_INTERFACE_UP)); + xEventGroupSetBits(sl_wfx_event_group, SL_WFX_START_AP); } /**************************************************************************** @@ -452,7 +433,7 @@ static void sl_wfx_stop_ap_callback(void) { // TODO // dhcpserver_clear_stored_mac(); - SILABS_LOG("SoftAP stopped\r\n"); + ChipLogProgress(DeviceLayer, "SoftAP stopped"); sl_wfx_context->state = static_cast(static_cast(sl_wfx_context->state) & ~static_cast(SL_WFX_AP_INTERFACE_UP)); xEventGroupSetBits(sl_wfx_event_group, SL_WFX_STOP_AP); @@ -465,9 +446,8 @@ static void sl_wfx_stop_ap_callback(void) *****************************************************************************/ static void sl_wfx_client_connected_callback(uint8_t * mac) { - SILABS_LOG("Client connected, MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); - // TODO - SILABS_LOG("Open a web browser and go to http://%d.%d.%d.%d\r\n", ap_ip_addr0, ap_ip_addr1, ap_ip_addr2, ap_ip_addr3); + ChipLogProgress(DeviceLayer, "Client connected, MAC: %02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], + mac[5]); } /**************************************************************************** @@ -478,8 +458,8 @@ static void sl_wfx_client_connected_callback(uint8_t * mac) *****************************************************************************/ static void sl_wfx_ap_client_rejected_callback(uint32_t status, uint8_t * mac) { - SILABS_LOG("Client rejected, reason: %d, MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n", (int) status, mac[0], mac[1], mac[2], mac[3], - mac[4], mac[5]); + ChipLogError(DeviceLayer, "Client rejected, reason: %d, MAC: %02X:%02X:%02X:%02X:%02X:%02X", (int) status, mac[0], mac[1], + mac[2], mac[3], mac[4], mac[5]); } /**************************************************************************** @@ -490,9 +470,8 @@ static void sl_wfx_ap_client_rejected_callback(uint32_t status, uint8_t * mac) *****************************************************************************/ static void sl_wfx_ap_client_disconnected_callback(uint32_t status, uint8_t * mac) { - // TODO - SILABS_LOG("Client disconnected, reason: %d, MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n", (int) status, mac[0], mac[1], mac[2], - mac[3], mac[4], mac[5]); + ChipLogError(DeviceLayer, "Client disconnected, reason: %d, MAC: %02X:%02X:%02X:%02X:%02X:%02X", (int) status, mac[0], mac[1], + mac[2], mac[3], mac[4], mac[5]); } #endif /* SL_WFX_CONFIG_SOFTAP */ @@ -504,7 +483,6 @@ static void sl_wfx_ap_client_disconnected_callback(uint32_t status, uint8_t * ma static void sl_wfx_generic_status_callback(sl_wfx_generic_ind_t * frame) { (void) (frame); - SILABS_LOG("WFX Generic status received\r\n"); } /*************************************************************************** @@ -534,7 +512,7 @@ static void wfx_events_task(void * p_arg) pdTRUE, pdFALSE, pdMS_TO_TICKS(250)); /* 250 msec delay converted to ticks */ if (flags & SL_WFX_RETRY_CONNECT) { - SILABS_LOG("WFX sending the connect command"); + ChipLogProgress(DeviceLayer, "sending the connect command"); wfx_connect_to_ap(); } @@ -551,7 +529,7 @@ static void wfx_events_task(void * p_arg) hasNotifiedIPV4 = true; if (!hasNotifiedWifiConnectivity) { - SILABS_LOG("WIFI: Has Notified Wifi Connectivity"); + ChipLogProgress(DeviceLayer, "will notify WiFi connectivity"); wfx_connected_notify(CONNECTION_STATUS_SUCCESS, &ap_mac); hasNotifiedWifiConnectivity = true; } @@ -585,7 +563,7 @@ static void wfx_events_task(void * p_arg) wfx_ipv6_notify(GET_IPV6_FAIL); hasNotifiedIPV6 = false; hasNotifiedWifiConnectivity = false; - SILABS_LOG("WIFI: Connected to AP"); + ChipLogProgress(DeviceLayer, "connected to AP"); wifi_extra |= WE_ST_STA_CONN; retryJoin = 0; wfx_lwip_set_sta_link_up(); @@ -593,7 +571,7 @@ static void wfx_events_task(void * p_arg) if (!(wfx_get_wifi_state() & SL_WFX_AP_INTERFACE_UP)) { // Enable the power save - SILABS_LOG("WF200 going to DTIM based sleep"); + ChipLogProgress(DeviceLayer, "WF200 going to DTIM based sleep"); sl_wfx_set_power_mode(WFM_PM_MODE_DTIM, WFM_PM_POLL_FAST_PS, BEACON_1, 0 /*timeout*/); sl_wfx_enable_device_power_save(); } @@ -637,9 +615,10 @@ static void wfx_events_task(void * p_arg) sp = (sl_wfx_ssid_def_t *) 0; } - SILABS_LOG("WIFI Scan Paramter set to Active channel time %d, Passive " - "Channel Time: %d, Number of prob: %d", - ACTIVE_CHANNEL_TIME, PASSIVE_CHANNEL_TIME, NUM_PROBE_REQUEST); + ChipLogDetail(DeviceLayer, + "WIFI Scan Paramter set to Active channel time %d, Passive " + "Channel Time: %d, Number of prob: %d", + ACTIVE_CHANNEL_TIME, PASSIVE_CHANNEL_TIME, NUM_PROBE_REQUEST); (void) sl_wfx_set_scan_parameters(ACTIVE_CHANNEL_TIME, PASSIVE_CHANNEL_TIME, NUM_PROBE_REQUEST); (void) sl_wfx_send_scan_command(WFM_SCAN_MODE_ACTIVE, CHANNEL_LIST, /* Channel list */ CHANNEL_COUNT, /* Scan all chans */ @@ -650,20 +629,20 @@ static void wfx_events_task(void * p_arg) { struct scan_result_holder *hp, *next; - SILABS_LOG("WIFI: Return %d scan results", scan_count); + ChipLogDetail(DeviceLayer, "WIFI: Return %d scan results", scan_count); for (hp = scan_save; hp; hp = next) { next = hp->next; (*scan_cb)(&hp->scan); - vPortFree(hp); + chip::Platform::MemoryFree(hp); } (*scan_cb)((wfx_wifi_scan_result *) 0); scan_save = (struct scan_result_holder *) 0; scan_count = 0; if (scan_ssid) { - vPortFree(scan_ssid); - scan_ssid = (char *) 0; + chip::Platform::MemoryFree(scan_ssid); + scan_ssid = NULL; } /* Terminate scan */ scan_cb = 0; @@ -681,15 +660,15 @@ static sl_status_t wfx_init(void) /* Initialize the WF200 used by the two interfaces */ wfx_events_task_start(); sl_status_t status = sl_wfx_init(&wifiContext); - SILABS_LOG("FMAC Driver version %s", FMAC_DRIVER_VERSION_STRING); + ChipLogProgress(DeviceLayer, "FMAC Driver version: %s", FMAC_DRIVER_VERSION_STRING); switch (status) { case SL_STATUS_OK: - SILABS_LOG("WF200 FW ver:%d.%d.%d [MAC %02x:%02x:%02x-%02x:%02x:%02x]", wifiContext.firmware_major, - wifiContext.firmware_minor, wifiContext.firmware_build, wifiContext.mac_addr_0.octet[0], - wifiContext.mac_addr_0.octet[1], wifiContext.mac_addr_0.octet[2], wifiContext.mac_addr_0.octet[3], - wifiContext.mac_addr_0.octet[4], wifiContext.mac_addr_0.octet[5]); - SILABS_LOG("WF200 Init OK"); + ChipLogProgress(DeviceLayer, "WF200 FW ver:%d.%d.%d [MAC %02x:%02x:%02x-%02x:%02x:%02x]", wifiContext.firmware_major, + wifiContext.firmware_minor, wifiContext.firmware_build, wifiContext.mac_addr_0.octet[0], + wifiContext.mac_addr_0.octet[1], wifiContext.mac_addr_0.octet[2], wifiContext.mac_addr_0.octet[3], + wifiContext.mac_addr_0.octet[4], wifiContext.mac_addr_0.octet[5]); + ChipLogProgress(DeviceLayer, "WF200 Init OK"); if (wifiContext.state == SL_WFX_STA_INTERFACE_CONNECTED) { @@ -698,19 +677,19 @@ static sl_status_t wfx_init(void) break; case SL_STATUS_WIFI_INVALID_KEY: - SILABS_LOG("*ERR*WF200: F/W keyset invalid"); + ChipLogError(DeviceLayer, "WF200: F/W keyset invalid"); break; case SL_STATUS_WIFI_FIRMWARE_DOWNLOAD_TIMEOUT: - SILABS_LOG("*ERR*WF200: F/W download timo"); + ChipLogError(DeviceLayer, "WF200: F/W download timo"); break; case SL_STATUS_TIMEOUT: - SILABS_LOG("*ERR*WF200: Poll for value timo"); + ChipLogError(DeviceLayer, "WF200: Poll for value timo"); break; case SL_STATUS_FAIL: - SILABS_LOG("*ERR*WF200: Error"); + ChipLogError(DeviceLayer, "WF200: Error"); break; default: - SILABS_LOG("*ERR*WF200: Unknown"); + ChipLogError(DeviceLayer, "WF200: Unknown"); } return status; @@ -728,22 +707,22 @@ static void wfx_wifi_hw_start(void) if (wifi_extra & WE_ST_HW_STARTED) return; - SILABS_LOG("STARTING WF200\n"); + ChipLogDetail(DeviceLayer, "STARTING WF200"); wifi_extra |= WE_ST_HW_STARTED; sl_wfx_host_gpio_init(); if ((status = wfx_init()) == SL_STATUS_OK) { /* Initialize the LwIP stack */ - SILABS_LOG("WF200:Start LWIP"); + ChipLogDetail(DeviceLayer, "WF200:Start LWIP"); wfx_lwip_start(); wfx_started_notify(); wifiContext.state = SL_WFX_STARTED; /* Really this is a bit mask */ - SILABS_LOG("WF200:ready.."); + ChipLogDetail(DeviceLayer, "WF200:ready.."); } else { - SILABS_LOG("*ERR*WF200:init failed"); + ChipLogError(DeviceLayer, "WF200:init failed"); } } @@ -756,23 +735,22 @@ static void wfx_wifi_hw_start(void) int32_t wfx_get_ap_info(wfx_wifi_scan_result_t * ap) { int32_t signal_strength; - SILABS_LOG("WIFI:SSID:: %s", &ap_info.ssid[0]); - memcpy(ap->ssid, ap_info.ssid, sizeof(ap_info.ssid)); - SILABS_LOG("WIFI:Mac addr:: %02x:%02x:%02x:%02x:%02x:%02x", ap_info.bssid[0], ap_info.bssid[1], ap_info.bssid[2], - ap_info.bssid[3], ap_info.bssid[4], ap_info.bssid[5]); + + ap->ssid_length = strnlen(ap_info.ssid, chip::min(sizeof(ap_info.ssid), WFX_MAX_SSID_LENGTH)); + chip::Platform::CopyString(ap->ssid, ap->ssid_length, ap_info.ssid); memcpy(ap->bssid, ap_info.bssid, sizeof(ap_info.bssid)); ap->security = ap_info.security; - SILABS_LOG("WIFI:security:: %d", ap->security); - ap->chan = ap_info.chan; - SILABS_LOG("WIFI:Channel:: to %d", ap->chan); + ap->chan = ap_info.chan; + ChipLogDetail(DeviceLayer, "WIFI:SSID :: %s", &ap_info.ssid[0]); + ChipLogDetail(DeviceLayer, "WIFI:BSSID :: %02x:%02x:%02x:%02x:%02x:%02x", ap_info.bssid[0], ap_info.bssid[1], + ap_info.bssid[2], ap_info.bssid[3], ap_info.bssid[4], ap_info.bssid[5]); + ChipLogDetail(DeviceLayer, "WIFI:security :: %d", ap->security); + ChipLogDetail(DeviceLayer, "WIFI:channel :: %d", ap->chan); sl_status_t status = sl_wfx_get_signal_strength((uint32_t *) &signal_strength); - - if (status == SL_STATUS_OK) - { - SILABS_LOG("status SL_STATUS_OK & signal_strength:: %d", signal_strength); - ap->rssi = (signal_strength - 220) / 2; - } + VerifyOrReturnError(status == SL_STATUS_OK, status); + ChipLogDetail(DeviceLayer, "signal_strength: %ld", signal_strength); + ap->rssi = (signal_strength - 220) / 2; return status; } @@ -788,7 +766,7 @@ int32_t wfx_get_ap_ext(wfx_wifi_scan_ext_t * extra_info) status = get_all_counters(); if (status != SL_STATUS_OK) { - SILABS_LOG("Failed to get the couters"); + ChipLogError(DeviceLayer, "Failed to get the couters"); } else { @@ -808,15 +786,13 @@ sl_status_t get_all_counters(void) sl_status_t result; uint8_t command_id = 0x05; uint16_t mib_id = 0x2035; - sl_wfx_mib_req_t * request = NULL; + sl_wfx_mib_req_t * request = nullptr; uint32_t request_length = SL_WFX_ROUND_UP_EVEN(sizeof(sl_wfx_header_mib_t) + sizeof(sl_wfx_mib_req_body_t)); result = sl_wfx_allocate_command_buffer((sl_wfx_generic_message_t **) &request, command_id, SL_WFX_CONTROL_BUFFER, request_length); - if (request == NULL) - { - } + VerifyOrReturnError(request != nullptr, SL_STATUS_NULL_POINTER); request->body.mib_id = mib_id; request->header.interface = 0x2; @@ -828,8 +804,8 @@ sl_status_t get_all_counters(void) result = sl_wfx_host_wait_for_confirmation(command_id, SL_WFX_DEFAULT_REQUEST_TIMEOUT_MS, (void **) &counters); SL_WFX_ERROR_CHECK(result); - SILABS_LOG("%-24s %12s \r\n", "", "Debug Counters Content"); - SILABS_LOG("%-24s %lu\r\n", "rcpi", (unsigned long) counters->body.rcpi); + ChipLogDetail(DeviceLayer, "%-24s %12s ", "", "Debug Counters Content"); + ChipLogDetail(DeviceLayer, "%-24s %lu", "rcpi", (unsigned long) counters->body.rcpi); PUT_COUNTER(plcp_errors); PUT_COUNTER(fcs_errors); PUT_COUNTER(tx_packets); @@ -865,7 +841,7 @@ sl_status_t get_all_counters(void) sl_wfx_context->used_buffers--; } } - if (request != NULL) + if (request != nullptr) { sl_wfx_free_command_buffer((sl_wfx_generic_message_t *) request, command_id, SL_WFX_CONTROL_BUFFER); } @@ -878,7 +854,7 @@ sl_status_t get_all_counters(void) * reset the count * @return returns -1 **************************************************************************/ -int32_t wfx_reset_counts() +int32_t wfx_reset_counts(void) { /* TODO */ return -1; @@ -893,7 +869,7 @@ sl_status_t wfx_wifi_start(void) { if (wifi_extra & WE_ST_STARTED) { - SILABS_LOG("WIFI: Already started"); + ChipLogDetail(DeviceLayer, "WIFI: Already started"); return SL_STATUS_OK; } wifi_extra |= WE_ST_STARTED; @@ -921,7 +897,7 @@ sl_wfx_state_t wfx_get_wifi_state(void) *****************************************************************************/ struct netif * wfx_GetNetif(sl_wfx_interface_t interface) { - struct netif * SelectedNetif = NULL; + struct netif * SelectedNetif = nullptr; if (interface == SL_WFX_STA_INTERFACE) { SelectedNetif = sta_netif; @@ -955,10 +931,10 @@ sl_wfx_mac_address_t wfx_get_wifi_mac_addr(sl_wfx_interface_t interface) *****************************************************************************/ void wfx_set_wifi_provision(wfx_wifi_provision_t * wifiConfig) { - memcpy(wifi_provision.ssid, wifiConfig->ssid, sizeof(wifiConfig->ssid)); - memcpy(wifi_provision.passkey, wifiConfig->passkey, sizeof(wifiConfig->passkey)); + Platform::CopyString(wifi_provision.ssid, sizeof(wifi_provision.ssid), wifiConfig->ssid); + Platform::CopyString(wifi_provision.passkey, sizeof(wifi_provision.passkey), wifiConfig->passkey); wifi_provision.security = wifiConfig->security; - SILABS_LOG("WIFI: Provision SSID=%s", &wifi_provision.ssid[0]); + ChipLogProgress(DeviceLayer, "WIFI: Provision SSID=%s", &wifi_provision.ssid[0]); } /**************************************************************************** @@ -970,12 +946,8 @@ void wfx_set_wifi_provision(wfx_wifi_provision_t * wifiConfig) *****************************************************************************/ bool wfx_get_wifi_provision(wfx_wifi_provision_t * wifiConfig) { - if (wifiConfig == NULL) - { - return false; - } + VerifyOrReturnError(wifiConfig != nullptr, false); memcpy(wifiConfig, &wifi_provision, sizeof(wfx_wifi_provision_t)); - return true; } @@ -1012,15 +984,13 @@ sl_status_t wfx_connect_to_ap(void) sl_status_t result; sl_wfx_security_mode_t connect_security_mode; - if (wifi_provision.ssid[0] == 0) - { - return SL_STATUS_NOT_AVAILABLE; - } - SILABS_LOG("WIFI:JOIN to %s", &wifi_provision.ssid[0]); + VerifyOrReturnError(wifi_provision.ssid[0], SL_STATUS_NOT_AVAILABLE); + ChipLogDetail(DeviceLayer, "WIFI:JOIN to %s", &wifi_provision.ssid[0]); - SILABS_LOG("WIFI Scan Paramter set to Active channel time %d, Passive Channel " - "Time: %d, Number of prob: %d", - ACTIVE_CHANNEL_TIME, PASSIVE_CHANNEL_TIME, NUM_PROBE_REQUEST); + ChipLogDetail(DeviceLayer, + "WIFI Scan Paramter set to Active channel time %d, Passive Channel " + "Time: %d, Number of prob: %d", + ACTIVE_CHANNEL_TIME, PASSIVE_CHANNEL_TIME, NUM_PROBE_REQUEST); (void) sl_wfx_set_scan_parameters(ACTIVE_CHANNEL_TIME, PASSIVE_CHANNEL_TIME, NUM_PROBE_REQUEST); switch (wifi_provision.security) { @@ -1038,7 +1008,7 @@ sl_status_t wfx_connect_to_ap(void) connect_security_mode = sl_wfx_security_mode_e::WFM_SECURITY_MODE_OPEN; break; default: - SILABS_LOG("%s: error: unknown security type."); + ChipLogError(DeviceLayer, "error: unknown security type."); return SL_STATUS_INVALID_STATE; } result = sl_wfx_send_join_command((uint8_t *) wifi_provision.ssid, strlen(wifi_provision.ssid), NULL, CHANNEL_0, @@ -1064,8 +1034,8 @@ void wfx_get_wifi_mac_addr(sl_wfx_interface_t interface, sl_wfx_mac_address_t * mac = &wifiContext.mac_addr_0; #endif *addr = *mac; - SILABS_LOG("WLAN:Get WiFi Mac addr %02x:%02x:%02x:%02x:%02x:%02x", mac->octet[0], mac->octet[1], mac->octet[2], mac->octet[3], - mac->octet[4], mac->octet[5]); + ChipLogDetail(DeviceLayer, "WLAN:Get WiFi Mac addr %02x:%02x:%02x:%02x:%02x:%02x", mac->octet[0], mac->octet[1], mac->octet[2], + mac->octet[3], mac->octet[4], mac->octet[5]); memcpy(&ap_info.bssid[0], &mac->octet[0], 6); } @@ -1078,14 +1048,8 @@ void wfx_get_wifi_mac_addr(sl_wfx_interface_t interface, sl_wfx_mac_address_t * *****************************************************************************/ bool wfx_have_ipv4_addr(sl_wfx_interface_t which_if) { - if (which_if == SL_WFX_STA_INTERFACE) - { - return (sta_ip == STA_IP_FAIL) ? false : true; - } - else - { - return false; /* TODO */ - } + VerifyOrReturnError(which_if == SL_WFX_STA_INTERFACE, false); + return (sta_ip == STA_IP_FAIL) ? false : true; } /**************************************************************************** @@ -1097,18 +1061,8 @@ bool wfx_have_ipv4_addr(sl_wfx_interface_t which_if) *****************************************************************************/ bool wfx_have_ipv6_addr(sl_wfx_interface_t which_if) { - SILABS_LOG("%s: started.", __func__); - bool status = false; - if (which_if == SL_WFX_STA_INTERFACE) - { - status = wfx_is_sta_connected(); - } - else - { - status = false; /* TODO */ - } - SILABS_LOG("%s: status: %d", __func__, status); - return status; + VerifyOrReturnError(which_if == SL_WFX_STA_INTERFACE, false); + return wfx_is_sta_connected(); } /**************************************************************************** @@ -1119,7 +1073,7 @@ bool wfx_have_ipv6_addr(sl_wfx_interface_t which_if) *****************************************************************************/ sl_status_t wfx_sta_discon(void) { - SILABS_LOG("STA-Disconnecting"); + ChipLogProgress(DeviceLayer, "STA-Disconnecting"); int32_t status = sl_wfx_send_disconnect_command(); wifi_extra &= ~WE_ST_STA_CONN; xEventGroupSetBits(sl_wfx_event_group, SL_WFX_RETRY_CONNECT); @@ -1145,11 +1099,7 @@ bool wfx_is_sta_mode_enabled(void) bool wfx_is_sta_connected(void) { bool val; - val = (wifi_extra & WE_ST_STA_CONN) ? true : false; - - SILABS_LOG("WLAN: STA %s connected", (val ? "IS" : "NOT")); - return val; } @@ -1159,10 +1109,7 @@ bool wfx_is_sta_connected(void) * @return returns true if sucessful, * false otherwise *****************************************************************************/ -void wfx_setup_ip6_link_local(sl_wfx_interface_t whichif) -{ - SILABS_LOG("Setup-IP6: TODO"); /* It is automatically done when lwip link up */ -} +void wfx_setup_ip6_link_local(sl_wfx_interface_t whichif) {} /**************************************************************************** * @brief @@ -1170,7 +1117,7 @@ void wfx_setup_ip6_link_local(sl_wfx_interface_t whichif) * @return returns WIFI_MODE_NULL if sucessful, * WIFI_MODE_STA otherwise *****************************************************************************/ -wifi_mode_t wfx_get_wifi_mode() +wifi_mode_t wfx_get_wifi_mode(void) { if (wifiContext.state & SL_WFX_STARTED) return WIFI_MODE_STA; @@ -1234,22 +1181,16 @@ void wfx_enable_sta_mode(void) #ifdef SL_WFX_CONFIG_SCAN bool wfx_start_scan(char * ssid, void (*callback)(wfx_wifi_scan_result_t *)) { - int sz; - - if (scan_cb) - return false; /* Already in progress */ + VerifyOrReturnError(scan_cb != nullptr, false); if (ssid) { - sz = strlen(ssid); - if ((scan_ssid = (char *) pvPortMalloc(sz + 1)) == (char *) 0) - { - return false; - } - strcpy(scan_ssid, ssid); + scan_ssid_length = strnlen(ssid, WFX_MAX_SSID_LENGTH); + scan_ssid = reinterpret_cast(chip::Platform::MemoryAlloc(scan_ssid_length)); + VerifyOrReturnError(scan_ssid != nullptr, false); + Platform::CopyString(scan_ssid, scan_ssid_length, ssid); } scan_cb = callback; xEventGroupSetBits(sl_wfx_event_group, SL_WFX_SCAN_START); - return true; } @@ -1261,23 +1202,20 @@ void wfx_cancel_scan(void) { struct scan_result_holder *hp, *next; /* Not possible */ - if (!scan_cb) - { - return; - } + VerifyOrReturn(scan_cb != nullptr); sl_wfx_send_stop_scan_command(); for (hp = scan_save; hp; hp = next) { next = hp->next; - vPortFree(hp); + chip::Platform::MemoryFree(hp); } scan_save = (struct scan_result_holder *) 0; scan_count = 0; if (scan_ssid) { - vPortFree(scan_ssid); - scan_ssid = (char *) 0; + chip::Platform::MemoryFree(scan_ssid); + scan_ssid = nullptr; } - scan_cb = 0; + scan_cb = nullptr; } #endif /* SL_WFX_CONFIG_SCAN */ diff --git a/examples/platform/silabs/wfx_rsi.h b/examples/platform/silabs/wfx_rsi.h index 5e7358e0d02cb1..0e62cb78029a79 100644 --- a/examples/platform/silabs/wfx_rsi.h +++ b/examples/platform/silabs/wfx_rsi.h @@ -77,6 +77,7 @@ typedef struct wfx_rsi_s #ifdef SL_WFX_CONFIG_SCAN void (*scan_cb)(wfx_wifi_scan_result_t *); char * scan_ssid; /* Which one are we scanning for */ + size_t scan_ssid_length; #endif #ifdef SL_WFX_CONFIG_SOFTAP sl_wfx_mac_address_t softap_mac; diff --git a/examples/platform/silabs/wifi/wfx_notify.cpp b/examples/platform/silabs/wifi/wfx_notify.cpp index e1d3c81abf8504..de1becacb33b30 100644 --- a/examples/platform/silabs/wifi/wfx_notify.cpp +++ b/examples/platform/silabs/wifi/wfx_notify.cpp @@ -60,13 +60,13 @@ static void RetryConnectionTimerHandler(void * arg) } } /*********************************************************************************** - * @fn wfx_started_notify() + * @fn wfx_started_notify(void) * @brief * Wifi device started notification * @param[in]: None * @return None *************************************************************************************/ -void wfx_started_notify() +void wfx_started_notify(void) { sl_wfx_startup_ind_t evt; sl_wfx_mac_address_t mac; diff --git a/examples/platform/silabs/wifi/wfx_rsi_host.cpp b/examples/platform/silabs/wifi/wfx_rsi_host.cpp index 921ec82587fe77..130d9c90d19817 100644 --- a/examples/platform/silabs/wifi/wfx_rsi_host.cpp +++ b/examples/platform/silabs/wifi/wfx_rsi_host.cpp @@ -15,16 +15,20 @@ * limitations under the License. */ -#include "stdbool.h" +#include #include #include #include #include "FreeRTOS.h" #include "event_groups.h" -#include "silabs_utils.h" -#include "sl_status.h" #include "task.h" + +#include +#include +#include +#include + #include "wfx_host_events.h" #include "wfx_rsi.h" @@ -54,22 +58,15 @@ constexpr osThreadAttr_t kWlanTaskAttr = { .name = "wlan_rsi", ***********************************************************************/ sl_status_t wfx_wifi_start(void) { - if (wfx_rsi.dev_state & WFX_RSI_ST_STARTED) - { - return SL_STATUS_OK; - } - + VerifyOrReturnError(!(wfx_rsi.dev_state & WFX_RSI_ST_STARTED), SL_STATUS_OK); wfx_rsi.dev_state |= WFX_RSI_ST_STARTED; - SILABS_LOG("%s: starting..", __func__); - /* - * Create the Wifi driver task - */ // Creating a Wi-Fi driver thread sWlanThread = osThreadNew(wfx_rsi_task, NULL, &kWlanTaskAttr); VerifyOrReturnError(sWlanThread != NULL, SL_STATUS_FAIL); + ChipLogProgress(DeviceLayer, "wfx_rsi_task created successfully"); return SL_STATUS_OK; } @@ -110,14 +107,12 @@ bool wfx_is_sta_mode_enabled(void) ***********************************************************************/ void wfx_get_wifi_mac_addr(sl_wfx_interface_t interface, sl_wfx_mac_address_t * addr) { - if (addr) - { + VerifyOrReturn(addr != nullptr); #ifdef SL_WFX_CONFIG_SOFTAP - *addr = (interface == SL_WFX_SOFTAP_INTERFACE) ? wfx_rsi.softap_mac : wfx_rsi.sta_mac; + *addr = (interface == SL_WFX_SOFTAP_INTERFACE) ? wfx_rsi.softap_mac : wfx_rsi.sta_mac; #else - *addr = wfx_rsi.sta_mac; + *addr = wfx_rsi.sta_mac; #endif - } } /********************************************************************* @@ -130,11 +125,9 @@ void wfx_get_wifi_mac_addr(sl_wfx_interface_t interface, sl_wfx_mac_address_t * ***********************************************************************/ void wfx_set_wifi_provision(wfx_wifi_provision_t * cfg) { - if (cfg) - { - wfx_rsi.sec = *cfg; - wfx_rsi.dev_state |= WFX_RSI_ST_STA_PROVISIONED; - } + VerifyOrReturn(cfg != nullptr); + wfx_rsi.sec = *cfg; + wfx_rsi.dev_state |= WFX_RSI_ST_STA_PROVISIONED; } /********************************************************************* @@ -147,15 +140,10 @@ void wfx_set_wifi_provision(wfx_wifi_provision_t * cfg) ***********************************************************************/ bool wfx_get_wifi_provision(wfx_wifi_provision_t * wifiConfig) { - if (wifiConfig != NULL) - { - if (wfx_rsi.dev_state & WFX_RSI_ST_STA_PROVISIONED) - { - *wifiConfig = wfx_rsi.sec; - return true; - } - } - return false; + VerifyOrReturnError(wifiConfig != nullptr, false); + VerifyOrReturnError(wfx_rsi.dev_state & WFX_RSI_ST_STA_PROVISIONED, false); + *wifiConfig = wfx_rsi.sec; + return true; } /********************************************************************* @@ -169,7 +157,7 @@ void wfx_clear_wifi_provision(void) { memset(&wfx_rsi.sec, 0, sizeof(wfx_rsi.sec)); wfx_rsi.dev_state &= ~WFX_RSI_ST_STA_PROVISIONED; - SILABS_LOG("%s: completed.", __func__); + ChipLogProgress(DeviceLayer, "Clear WiFi Provision"); } /************************************************************************* @@ -177,30 +165,25 @@ void wfx_clear_wifi_provision(void) * @brief * Start a JOIN command to the AP - Done by the wfx_rsi task * @param[in] None - * @return returns SL_STATUS_OK if successful, - * SL_STATUS_INVALID_CONFIGURATION otherwise + * @return returns SL_STATUS_OK if successful ****************************************************************************/ sl_status_t wfx_connect_to_ap(void) { + VerifyOrReturnError(wfx_rsi.dev_state & WFX_RSI_ST_STA_PROVISIONED, SL_STATUS_INVALID_CONFIGURATION); + VerifyOrReturnError(wfx_rsi.sec.ssid_length, SL_STATUS_INVALID_CREDENTIALS); + VerifyOrReturnError(wfx_rsi.sec.ssid_length <= WFX_MAX_SSID_LENGTH, SL_STATUS_HAS_OVERFLOWED); + ChipLogProgress(DeviceLayer, "connect to access point: %s", wfx_rsi.sec.ssid); WfxEvent_t event; - if (wfx_rsi.dev_state & WFX_RSI_ST_STA_PROVISIONED) - { - SILABS_LOG("Connecting to access point -> SSID: %s", &wfx_rsi.sec.ssid[0]); - event.eventType = WFX_EVT_STA_START_JOIN; - WfxPostEvent(&event); - } - else - { - SILABS_LOG("Error: access point not provisioned."); - return SL_STATUS_INVALID_CONFIGURATION; - } + event.eventType = WFX_EVT_STA_START_JOIN; + WfxPostEvent(&event); return SL_STATUS_OK; } #if SL_ICD_ENABLED #if SLI_SI917 /********************************************************************* - * @fn sl_status_t wfx_power_save() + * @fn sl_status_t wfx_power_save(rsi_power_save_profile_mode_t sl_si91x_ble_state, sl_si91x_performance_profile_t + sl_si91x_wifi_state) * @brief * Implements the power save in sleepy application * @param[in] sl_si91x_ble_state : State to set for the BLE @@ -214,14 +197,14 @@ sl_status_t wfx_power_save(rsi_power_save_profile_mode_t sl_si91x_ble_state, sl_ } #else // For RS9116 /********************************************************************* - * @fn sl_status_t wfx_power_save() + * @fn sl_status_t wfx_power_save(void) * @brief * Implements the power save in sleepy application * @param[in] None * @return SL_STATUS_OK if successful, * SL_STATUS_FAIL otherwise ***********************************************************************/ -sl_status_t wfx_power_save() +sl_status_t wfx_power_save(void) { return (wfx_rsi_power_save() ? SL_STATUS_FAIL : SL_STATUS_OK); } @@ -241,7 +224,6 @@ void wfx_setup_ip6_link_local(sl_wfx_interface_t whichif) * TODO: Implement IPV6 setup, currently in wfx_rsi_task() * This is hooked with MATTER code. */ - SILABS_LOG("%s: warning: not implemented.", __func__); } /********************************************************************* @@ -255,19 +237,18 @@ void wfx_setup_ip6_link_local(sl_wfx_interface_t whichif) bool wfx_is_sta_connected(void) { bool status = (wfx_rsi.dev_state & WFX_RSI_ST_STA_CONNECTED) > 0; - SILABS_LOG("%s: %s", __func__, (status ? "Connected" : "Disconnected")); return status; } /********************************************************************* - * @fn wifi_mode_t wfx_get_wifi_mode() + * @fn wifi_mode_t wfx_get_wifi_mode(void) * @brief * get the wifi mode * @param[in] None * @return return WIFI_MODE_NULL if successful, * WIFI_MODE_STA otherwise ***********************************************************************/ -wifi_mode_t wfx_get_wifi_mode() +wifi_mode_t wfx_get_wifi_mode(void) { if (wfx_rsi.dev_state & WFX_RSI_ST_DEV_READY) return WIFI_MODE_STA; @@ -284,11 +265,9 @@ wifi_mode_t wfx_get_wifi_mode() ***********************************************************************/ sl_status_t wfx_sta_discon(void) { - SILABS_LOG("%s: started.", __func__); - int32_t status; + sl_status_t status; status = wfx_rsi_disconnect(); wfx_rsi.dev_state &= ~WFX_RSI_ST_STA_CONNECTED; - SILABS_LOG("%s: completed.", __func__); return status; } #if CHIP_DEVICE_CONFIG_ENABLE_IPV4 @@ -302,17 +281,8 @@ sl_status_t wfx_sta_discon(void) ***********************************************************************/ bool wfx_have_ipv4_addr(sl_wfx_interface_t which_if) { - bool status = false; - if (which_if == SL_WFX_STA_INTERFACE) - { - status = (wfx_rsi.dev_state & WFX_RSI_ST_STA_DHCP_DONE) > 0; - } - else - { - status = false; /* TODO */ - } - SILABS_LOG("%s: status: %d", __func__, status); - return status; + VerifyOrReturnError(which_if == SL_WFX_STA_INTERFACE, false); + return ((wfx_rsi.dev_state & WFX_RSI_ST_STA_DHCP_DONE) > 0); } #endif /* CHIP_DEVICE_CONFIG_ENABLE_IPV4 */ @@ -326,17 +296,9 @@ bool wfx_have_ipv4_addr(sl_wfx_interface_t which_if) ***********************************************************************/ bool wfx_have_ipv6_addr(sl_wfx_interface_t which_if) { - bool status = false; - if (which_if == SL_WFX_STA_INTERFACE) - { - status = (wfx_rsi.dev_state & WFX_RSI_ST_STA_CONNECTED) > 0; - } - else - { - status = false; /* TODO */ - } - SILABS_LOG("%s: %d", __func__, status); - return status; + VerifyOrReturnError(which_if == SL_WFX_STA_INTERFACE, false); + // TODO: WFX_RSI_ST_STA_CONNECTED does not guarantee SLAAC IPv6 LLA, maybe use a different FLAG + return ((wfx_rsi.dev_state & WFX_RSI_ST_STA_CONNECTED) > 0); } /********************************************************************* @@ -379,14 +341,14 @@ int32_t wfx_get_ap_ext(wfx_wifi_scan_ext_t * extra_info) } /*************************************************************************** - * @fn int32_t wfx_reset_counts(){ + * @fn int32_t wfx_reset_counts(void) * @brief * get the driver reset count * @param[in] None * @return * reset count *****************************************************************************/ -int32_t wfx_reset_counts() +int32_t wfx_reset_counts(void) { return wfx_rsi_reset_count(); } @@ -402,21 +364,17 @@ int32_t wfx_reset_counts() *******************************************************************************/ bool wfx_start_scan(char * ssid, void (*callback)(wfx_wifi_scan_result_t *)) { - int sz; - WfxEvent_t event; - if (wfx_rsi.scan_cb) - return false; /* Already in progress */ - if (ssid) - { - sz = strlen(ssid); - if ((wfx_rsi.scan_ssid = (char *) pvPortMalloc(sz + 1)) == (char *) 0) - { - return false; - } - strcpy(wfx_rsi.scan_ssid, ssid); - } + // check if already in progress + VerifyOrReturnError(wfx_rsi.scan_cb != nullptr, false); wfx_rsi.scan_cb = callback; + VerifyOrReturnError(ssid != nullptr, false); + wfx_rsi.scan_ssid_length = strnlen(ssid, chip::min(sizeof(ssid), WFX_MAX_SSID_LENGTH)); + wfx_rsi.scan_ssid = reinterpret_cast(chip::Platform::MemoryAlloc(wfx_rsi.scan_ssid_length)); + VerifyOrReturnError(wfx_rsi.scan_ssid != nullptr, false); + chip::Platform::CopyString(wfx_rsi.scan_ssid, wfx_rsi.scan_ssid_length, ssid); + + WfxEvent_t event; event.eventType = WFX_EVT_SCAN; WfxPostEvent(&event); @@ -434,6 +392,6 @@ bool wfx_start_scan(char * ssid, void (*callback)(wfx_wifi_scan_result_t *)) void wfx_cancel_scan(void) { /* Not possible */ - SILABS_LOG("%s: cannot cancel scan", __func__); + ChipLogError(DeviceLayer, "cannot cancel scan"); } #endif /* SL_WFX_CONFIG_SCAN */ diff --git a/src/platform/silabs/ConnectivityManagerImpl_WIFI.cpp b/src/platform/silabs/ConnectivityManagerImpl_WIFI.cpp index b5a9c1eb56a3f8..6e5470f7d05f26 100644 --- a/src/platform/silabs/ConnectivityManagerImpl_WIFI.cpp +++ b/src/platform/silabs/ConnectivityManagerImpl_WIFI.cpp @@ -327,7 +327,7 @@ void ConnectivityManagerImpl::DriveStationState() ChipLogProgress(DeviceLayer, "Attempting to connect WiFi"); if ((serr = wfx_connect_to_ap()) != SL_STATUS_OK) { - ChipLogError(DeviceLayer, "wfx_connect_to_ap() failed."); + ChipLogError(DeviceLayer, "wfx_connect_to_ap() failed: %" PRId32, serr); } SuccessOrExit(serr); diff --git a/src/platform/silabs/NetworkCommissioningWiFiDriver.cpp b/src/platform/silabs/NetworkCommissioningWiFiDriver.cpp index 614a121280eaef..7f6240c32c5858 100644 --- a/src/platform/silabs/NetworkCommissioningWiFiDriver.cpp +++ b/src/platform/silabs/NetworkCommissioningWiFiDriver.cpp @@ -147,10 +147,19 @@ CHIP_ERROR SlWiFiDriver::ConnectWiFiNetwork(const char * ssid, uint8_t ssidLen, } } ReturnErrorOnFailure(ConnectivityMgr().SetWiFiStationMode(ConnectivityManager::kWiFiStationMode_Disabled)); + // Set the wifi configuration - wfx_wifi_provision_t wifiConfig = {}; + wfx_wifi_provision_t wifiConfig; + memset(&wifiConfig, 0, sizeof(wifiConfig)); + + VerifyOrReturnError(ssidLen <= WFX_MAX_SSID_LENGTH, CHIP_ERROR_BUFFER_TOO_SMALL); memcpy(wifiConfig.ssid, ssid, ssidLen); + wifiConfig.ssid_length = ssidLen; + + VerifyOrReturnError(keyLen < WFX_MAX_PASSKEY_LENGTH, CHIP_ERROR_BUFFER_TOO_SMALL); memcpy(wifiConfig.passkey, key, keyLen); + wifiConfig.passkey_length = keyLen; + wifiConfig.security = WFX_SEC_WPA2; ChipLogProgress(NetworkProvisioning, "Setting up connection for WiFi SSID: %.*s", static_cast(ssidLen), ssid); diff --git a/src/platform/silabs/SiWx917/wifi/ethernetif.cpp b/src/platform/silabs/SiWx917/wifi/ethernetif.cpp index 72725102d6da48..2860b895ce7fae 100644 --- a/src/platform/silabs/SiWx917/wifi/ethernetif.cpp +++ b/src/platform/silabs/SiWx917/wifi/ethernetif.cpp @@ -44,7 +44,7 @@ extern "C" { #include "lwip/ethip6.h" #include "lwip/timeouts.h" #include "netif/etharp.h" -#include "silabs_utils.h" +#include StaticSemaphore_t xEthernetIfSemaBuffer; @@ -131,13 +131,13 @@ static void low_level_input(struct netif * netif, uint8_t * b, uint16_t len) (memcmp(netif->hwaddr, dst_mac, netif->hwaddr_len) != 0)) { #ifdef WIFI_DEBUG_ENABLED - SILABS_LOG("%s: DROP, [%02x:%02x:%02x:%02x:%02x:%02x]<-[%02x:%02x:%02x:%02x:%02x:%02x] type=%02x%02x", __func__, + ChipLogDetail(DeviceLayer, "DROP: [%02x:%02x:%02x:%02x:%02x:%02x]->[%02x:%02x:%02x:%02x:%02x:%02x] type=%02x%02x", - dst_mac[0], dst_mac[1], dst_mac[2], dst_mac[3], dst_mac[4], dst_mac[5], + src_mac[0], src_mac[1], src_mac[2], src_mac[3], src_mac[4], src_mac[5], - src_mac[0], src_mac[1], src_mac[2], src_mac[3], src_mac[4], src_mac[5], + dst_mac[0], dst_mac[1], dst_mac[2], dst_mac[3], dst_mac[4], dst_mac[5], - b[12], b[13]); + b[12], b[13]); #endif return; } @@ -153,14 +153,14 @@ static void low_level_input(struct netif * netif, uint8_t * b, uint16_t len) bufferoffset += q->len; } #ifdef WIFI_DEBUG_ENABLED - SILABS_LOG("%s: ACCEPT %d, [%02x:%02x:%02x:%02x:%02x:%02x]<-[%02x:%02x:%02x:%02x:%02x:%02x] type=%02x%02x", __func__, - bufferoffset, + ChipLogDetail(DeviceLayer, "ACCEPT(%d): [%02x:%02x:%02x:%02x:%02x:%02x]->[%02x:%02x:%02x:%02x:%02x:%02x] type=%02x%02x", + bufferoffset, - dst_mac[0], dst_mac[1], dst_mac[2], dst_mac[3], dst_mac[4], dst_mac[5], + src_mac[0], src_mac[1], src_mac[2], src_mac[3], src_mac[4], src_mac[5], - src_mac[0], src_mac[1], src_mac[2], src_mac[3], src_mac[4], src_mac[5], + dst_mac[0], dst_mac[1], dst_mac[2], dst_mac[3], dst_mac[4], dst_mac[5], - b[12], b[13]); + b[12], b[13]); #endif if (netif->input(p, netif) != ERR_OK) diff --git a/src/platform/silabs/SiWx917/wifi/wfx_host_events.h b/src/platform/silabs/SiWx917/wifi/wfx_host_events.h index 319a1c508e658d..42a5dfffc1c381 100644 --- a/src/platform/silabs/SiWx917/wifi/wfx_host_events.h +++ b/src/platform/silabs/SiWx917/wifi/wfx_host_events.h @@ -159,7 +159,9 @@ typedef enum typedef struct { char ssid[WFX_MAX_SSID_LENGTH + 1]; + size_t ssid_length; char passkey[WFX_MAX_PASSKEY_LENGTH + 1]; + size_t passkey_length; wfx_sec_t security; } wfx_wifi_provision_t; @@ -175,6 +177,7 @@ typedef enum typedef struct wfx_wifi_scan_result { char ssid[WFX_MAX_SSID_LENGTH + 1]; + size_t ssid_length; wfx_sec_t security; uint8_t bssid[BSSID_LEN]; uint8_t chan; diff --git a/src/platform/silabs/efr32/wifi/ethernetif.cpp b/src/platform/silabs/efr32/wifi/ethernetif.cpp index 0388337939a3e2..d0f0ec6daf47f7 100644 --- a/src/platform/silabs/efr32/wifi/ethernetif.cpp +++ b/src/platform/silabs/efr32/wifi/ethernetif.cpp @@ -148,8 +148,8 @@ static void low_level_input(struct netif * netif, uint8_t * b, uint16_t len) (memcmp(netif->hwaddr, dst_mac, netif->hwaddr_len) != 0)) { #ifdef WIFI_DEBUG_ENABLED - ChipLogProgress(DeviceLayer, "%s: DROP, [%02x:%02x:%02x:%02x:%02x:%02x]<-[%02x:%02x:%02x:%02x:%02x:%02x] type=%02x%02x", - __func__, + ChipLogProgress(DeviceLayer, + "lwip_input: DROP, [%02x:%02x:%02x:%02x:%02x:%02x]<-[%02x:%02x:%02x:%02x:%02x:%02x] type=%02x%02x", dst_mac[0], dst_mac[1], dst_mac[2], dst_mac[3], dst_mac[4], dst_mac[5], @@ -172,7 +172,7 @@ static void low_level_input(struct netif * netif, uint8_t * b, uint16_t len) } #ifdef WIFI_DEBUG_ENABLED ChipLogProgress(DeviceLayer, - "%s: ACCEPT %ld, [%02x:%02x:%02x:%02x:%02x:%02x]<-[%02x:%02x:%02x:%02x:%02x:%02x] type=%02x%02x", __func__, + "lwip_input: ACCEPT %ld, [%02x:%02x:%02x:%02x:%02x:%02x]<-[%02x:%02x:%02x:%02x:%02x:%02x] type=%02x%02x", bufferoffset, dst_mac[0], dst_mac[1], dst_mac[2], dst_mac[3], dst_mac[4], dst_mac[5], diff --git a/src/platform/silabs/efr32/wifi/wfx_host_events.h b/src/platform/silabs/efr32/wifi/wfx_host_events.h index 51f96d7b9dbc73..4686931eafac4e 100644 --- a/src/platform/silabs/efr32/wifi/wfx_host_events.h +++ b/src/platform/silabs/efr32/wifi/wfx_host_events.h @@ -254,7 +254,9 @@ typedef enum typedef struct { char ssid[WFX_MAX_SSID_LENGTH + 1]; + size_t ssid_length; char passkey[WFX_MAX_PASSKEY_LENGTH + 1]; + size_t passkey_length; wfx_sec_t security; } wfx_wifi_provision_t; @@ -270,6 +272,7 @@ typedef enum typedef struct wfx_wifi_scan_result { char ssid[WFX_MAX_SSID_LENGTH + 1]; + size_t ssid_length; wfx_sec_t security; uint8_t bssid[BSSID_LEN]; uint8_t chan; From f5216e8ec34cabbfd1c0f450871d52ae574c1357 Mon Sep 17 00:00:00 2001 From: Terence Hampson Date: Tue, 10 Sep 2024 13:30:56 -0400 Subject: [PATCH 25/50] Clean up subscriptions from fabric sync tests (#35485) --- src/python_testing/TC_BRBINFO_4_1.py | 9 +++++++-- src/python_testing/TC_MCORE_FS_1_2.py | 11 ++++++++--- src/python_testing/TC_MCORE_FS_1_5.py | 20 +++++++++++++++----- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/python_testing/TC_BRBINFO_4_1.py b/src/python_testing/TC_BRBINFO_4_1.py index df922748999dd0..8b064a775f358b 100644 --- a/src/python_testing/TC_BRBINFO_4_1.py +++ b/src/python_testing/TC_BRBINFO_4_1.py @@ -123,6 +123,7 @@ async def setup_class(self): self.set_of_dut_endpoints_before_adding_device = set(root_part_list) super().setup_class() + self._active_change_event_subscription = None self.app_process = None self.app_process_paused = False app = self.user_params.get("th_icd_server_app_path", None) @@ -156,6 +157,10 @@ async def setup_class(self): params.commissioningParameters.setupManualCode, params.commissioningParameters.setupQRCode) def teardown_class(self): + if self._active_change_event_subscription is not None: + self._active_change_event_subscription.Shutdown() + self._active_change_event_subscription = None + # In case the th_icd_server_app_path does not exist, then we failed the test # and there is nothing to remove if self.app_process is not None: @@ -239,8 +244,8 @@ async def test_TC_BRBINFO_4_1(self): self.q = queue.Queue() urgent = 1 cb = SimpleEventCallback("ActiveChanged", event.cluster_id, event.event_id, self.q) - subscription = await self.default_controller.ReadEvent(nodeid=self.dut_node_id, events=[(dynamic_endpoint_id, event, urgent)], reportInterval=[1, 3]) - subscription.SetEventUpdateCallback(callback=cb) + self._active_change_event_subscription = await self.default_controller.ReadEvent(nodeid=self.dut_node_id, events=[(dynamic_endpoint_id, event, urgent)], reportInterval=[1, 3]) + self._active_change_event_subscription.SetEventUpdateCallback(callback=cb) self.step("3") stay_active_duration_ms = 1000 diff --git a/src/python_testing/TC_MCORE_FS_1_2.py b/src/python_testing/TC_MCORE_FS_1_2.py index 816abe5d876b00..b18dcc5b42ef64 100644 --- a/src/python_testing/TC_MCORE_FS_1_2.py +++ b/src/python_testing/TC_MCORE_FS_1_2.py @@ -63,10 +63,15 @@ class TC_MCORE_FS_1_2(MatterBaseTest): @async_test_body async def setup_class(self): super().setup_class() + self._partslist_subscription = None self._app_th_server_process = None self._th_server_kvs = None def teardown_class(self): + if self._partslist_subscription is not None: + self._partslist_subscription.Shutdown() + self._partslist_subscription = None + if self._app_th_server_process is not None: logging.warning("Stopping app with SIGTERM") self._app_th_server_process.send_signal(signal.SIGTERM.value) @@ -142,7 +147,7 @@ async def test_TC_MCORE_FS_1_2(self): subscription_contents = [ (root_endpoint, Clusters.Descriptor.Attributes.PartsList) ] - sub = await self.default_controller.ReadAttribute( + self._partslist_subscription = await self.default_controller.ReadAttribute( nodeid=self.dut_node_id, attributes=subscription_contents, reportInterval=(min_report_interval_sec, max_report_interval_sec), @@ -152,8 +157,8 @@ async def test_TC_MCORE_FS_1_2(self): parts_list_queue = queue.Queue() attribute_handler = AttributeChangeAccumulator( name=self.default_controller.name, expected_attribute=Clusters.Descriptor.Attributes.PartsList, output=parts_list_queue) - sub.SetAttributeUpdateCallback(attribute_handler) - cached_attributes = sub.GetAttributes() + self._partslist_subscription.SetAttributeUpdateCallback(attribute_handler) + cached_attributes = self._partslist_subscription.GetAttributes() step_1_dut_parts_list = cached_attributes[root_endpoint][Clusters.Descriptor][Clusters.Descriptor.Attributes.PartsList] asserts.assert_true(type_matches(step_1_dut_parts_list, list), "PartsList is expected to be a list") diff --git a/src/python_testing/TC_MCORE_FS_1_5.py b/src/python_testing/TC_MCORE_FS_1_5.py index df80072d5126e3..22654c994bf41f 100755 --- a/src/python_testing/TC_MCORE_FS_1_5.py +++ b/src/python_testing/TC_MCORE_FS_1_5.py @@ -61,10 +61,20 @@ class TC_MCORE_FS_1_5(MatterBaseTest): @async_test_body async def setup_class(self): super().setup_class() + self._partslist_subscription = None + self._cadmin_subscription = None self._app_th_server_process = None self._th_server_kvs = None def teardown_class(self): + if self._partslist_subscription is not None: + self._partslist_subscription.Shutdown() + self._partslist_subscription = None + + if self._cadmin_subscription is not None: + self._cadmin_subscription.Shutdown() + self._cadmin_subscription = None + if self._app_th_server_process is not None: logging.warning("Stopping app with SIGTERM") self._app_th_server_process.send_signal(signal.SIGTERM.value) @@ -142,7 +152,7 @@ async def test_TC_MCORE_FS_1_5(self): parts_list_subscription_contents = [ (root_endpoint, Clusters.Descriptor.Attributes.PartsList) ] - parts_list_sub = await self.default_controller.ReadAttribute( + self._partslist_subscription = await self.default_controller.ReadAttribute( nodeid=self.dut_node_id, attributes=parts_list_subscription_contents, reportInterval=(min_report_interval_sec, max_report_interval_sec), @@ -152,8 +162,8 @@ async def test_TC_MCORE_FS_1_5(self): parts_list_queue = queue.Queue() parts_list_attribute_handler = AttributeChangeAccumulator( name=self.default_controller.name, expected_attribute=Clusters.Descriptor.Attributes.PartsList, output=parts_list_queue) - parts_list_sub.SetAttributeUpdateCallback(parts_list_attribute_handler) - parts_list_cached_attributes = parts_list_sub.GetAttributes() + self._partslist_subscription.SetAttributeUpdateCallback(parts_list_attribute_handler) + parts_list_cached_attributes = self._partslist_subscription.GetAttributes() step_1_dut_parts_list = parts_list_cached_attributes[root_endpoint][Clusters.Descriptor][Clusters.Descriptor.Attributes.PartsList] asserts.assert_true(type_matches(step_1_dut_parts_list, list), "PartsList is expected to be a list") @@ -219,7 +229,7 @@ async def test_TC_MCORE_FS_1_5(self): cadmin_subscription_contents = [ (newly_added_endpoint, Clusters.AdministratorCommissioning) ] - cadmin_sub = await self.default_controller.ReadAttribute( + self._cadmin_subscription = await self.default_controller.ReadAttribute( nodeid=self.dut_node_id, attributes=cadmin_subscription_contents, reportInterval=(min_report_interval_sec, max_report_interval_sec), @@ -230,7 +240,7 @@ async def test_TC_MCORE_FS_1_5(self): # This AttributeChangeAccumulator is really just to let us know when new subscription came in cadmin_attribute_handler = AttributeChangeAccumulator( name=self.default_controller.name, expected_attribute=Clusters.AdministratorCommissioning.Attributes.WindowStatus, output=cadmin_queue) - cadmin_sub.SetAttributeUpdateCallback(cadmin_attribute_handler) + self._cadmin_subscription.SetAttributeUpdateCallback(cadmin_attribute_handler) time.sleep(1) self.step(7) From cbd15a16f5feadec2bdf02b63d2e65659cb3e822 Mon Sep 17 00:00:00 2001 From: Petru Lauric <81822411+plauric@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:55:24 -0400 Subject: [PATCH 26/50] initial commit (#35513) --- src/python_testing/TC_SEAR_1_2.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/python_testing/TC_SEAR_1_2.py b/src/python_testing/TC_SEAR_1_2.py index 2c253efa860038..1bed2c8d12cac8 100644 --- a/src/python_testing/TC_SEAR_1_2.py +++ b/src/python_testing/TC_SEAR_1_2.py @@ -180,12 +180,12 @@ async def read_and_validate_progress(self, step): progareaid_list.append(p.areaID) asserts.assert_true(p.areaID in self.areaid_list, f"Progress entry has invalid AreaID value ({p.areaID})") - asserts.assert_true(p.status in (Clusters.ServiceArea.OperationalStatusEnum.kPending, - Clusters.ServiceArea.OperationalStatusEnum.kOperating, - Clusters.ServiceArea.OperationalStatusEnum.kSkipped, - Clusters.ServiceArea.OperationalStatusEnum.kCompleted), + asserts.assert_true(p.status in (Clusters.ServiceArea.Enums.OperationalStatusEnum.kPending, + Clusters.ServiceArea.Enums.OperationalStatusEnum.kOperating, + Clusters.ServiceArea.Enums.OperationalStatusEnum.kSkipped, + Clusters.ServiceArea.Enums.OperationalStatusEnum.kCompleted), f"Progress entry has invalid Status value ({p.status})") - if p.status not in (Clusters.ServiceArea.OperationalStatusEnum.kSkipped, Clusters.ServiceArea.OperationalStatusEnum.kCompleted): + if p.status not in (Clusters.ServiceArea.Enums.OperationalStatusEnum.kSkipped, Clusters.ServiceArea.Enums.OperationalStatusEnum.kCompleted): asserts.assert_true(p.totalOperationalTime is NullValue, f"Progress entry should have a null TotalOperationalTime value (Status is {p.status})") # TODO how to check that InitialTimeEstimate is either null or uint32? From d1279a83eacd21f5d084ca1883c852e98ff89dad Mon Sep 17 00:00:00 2001 From: Karsten Sperling <113487422+ksperling-apple@users.noreply.github.com> Date: Wed, 11 Sep 2024 06:43:17 +1200 Subject: [PATCH 27/50] Add matter_enable_recommended meta-setting (#34942) * Add matter_enable_recommended meta-setting This setting defaults to true which leaves current behavior unchanged. However it can be set to false to achieve a more conservative / minimal set of defaults, without having to manually disable an ever-increasing set of features. Consider using this setting as the default value for other settings that increase code size or add debugging / tracing or similar features that are not always desired. Especially settings that default to true on Linux and Mac ("because you're probably building for development") should likely use this option for their default, e.g. matter_foo = matter_enable_recommended && (current_os == "linux" || current_os == "mac") * Add more documentation and turn off the setting for minimal CI builds * Move matter_enable_recommended into /config/recommended.gni This allows it to be uesd from args.gni (i.e. in the context of a default_args scope, where variables like current_os are not defined) as well as within a build / toolchain context. --- .github/workflows/minimal-build.yaml | 10 ++++----- config/recommended.gni | 31 ++++++++++++++++++++++++++++ examples/shell/shell_common/BUILD.gn | 7 +++---- src/app/common_flags.gni | 5 ++++- src/lib/core/core.gni | 15 ++++++++++---- src/tracing/tracing_args.gni | 6 +++--- 6 files changed, 57 insertions(+), 17 deletions(-) create mode 100644 config/recommended.gni diff --git a/.github/workflows/minimal-build.yaml b/.github/workflows/minimal-build.yaml index 9ba9565b44c25b..ade1bd56ea36ff 100644 --- a/.github/workflows/minimal-build.yaml +++ b/.github/workflows/minimal-build.yaml @@ -17,7 +17,7 @@ name: Minimal Build (Linux / configure) on: push: branches-ignore: - - 'dependabot/**' + - "dependabot/**" pull_request: merge_group: @@ -42,11 +42,11 @@ jobs: - name: Checkout submodules # but don't bootstrap! uses: ./.github/actions/checkout-submodules with: - platform: linux + platform: linux - name: Configure and build All Clusters App run: | - CC=gcc CXX=g++ scripts/configure --project=examples/all-clusters-app/linux && ./ninja-build + CC=gcc CXX=g++ scripts/configure --project=examples/all-clusters-app/linux --enable-recommended=no && ./ninja-build minimal-network-manager: name: Linux / configure build of network-manager-app @@ -64,8 +64,8 @@ jobs: - name: Checkout submodules # but don't bootstrap! uses: ./.github/actions/checkout-submodules with: - platform: linux + platform: linux - name: Configure and build Network Manager App run: | - CC=gcc CXX=g++ scripts/configure --project=examples/network-manager-app/linux && ./ninja-build + CC=gcc CXX=g++ scripts/configure --project=examples/network-manager-app/linux --enable-recommended=no && ./ninja-build diff --git a/config/recommended.gni b/config/recommended.gni new file mode 100644 index 00000000000000..a30045ced7814e --- /dev/null +++ b/config/recommended.gni @@ -0,0 +1,31 @@ +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +declare_args() { + # Note for SDK developers: As additional features with their own settings + # are added to the SDK, consider using the `matter_enable_recommended` + # meta-setting instead of a default value of 'true', especially where a + # different default is used based on platform (current_os): Often various + # debugging features have previously been defaulted to on for Linux and/or + # Mac but off for embedded platforms (on the assumption that Linux / Mac + # don't have resource constraints?); build settings of that nature should + # instead reference this meta-setting. E.g. + # enable_flux_capacitor = matter_enable_recommended && current_os == "linux" + + # Enable recommended settings by default. This is a meta-setting + # that is enabled by default, and acts as a default for various + # other settings. Setting it to false produces a more conservative / + # minimal set of defaults. + matter_enable_recommended = true +} diff --git a/examples/shell/shell_common/BUILD.gn b/examples/shell/shell_common/BUILD.gn index e4aa2973f8cc04..645c8ddb510220 100644 --- a/examples/shell/shell_common/BUILD.gn +++ b/examples/shell/shell_common/BUILD.gn @@ -13,13 +13,12 @@ # limitations under the License. import("//build_overrides/chip.gni") -import("//build_overrides/openthread.gni") - +import("${chip_root}/config/recommended.gni") import("${chip_root}/src/platform/device.gni") declare_args() { - # Enable server command only on linux for now. - chip_shell_cmd_server = current_os == "linux" || current_os == "mac" + chip_shell_cmd_server = matter_enable_recommended && + (current_os == "linux" || current_os == "mac") } config("shell_common_config") { diff --git a/src/app/common_flags.gni b/src/app/common_flags.gni index 953afc23a20650..d3e7ce34bf0338 100644 --- a/src/app/common_flags.gni +++ b/src/app/common_flags.gni @@ -12,6 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +import("//build_overrides/chip.gni") +import("${chip_root}/config/recommended.gni") + declare_args() { # Temporary flag for interaction model and echo protocols, set it to true to enable chip_app_use_echo = false @@ -26,7 +29,7 @@ declare_args() { # - disabled: does not use data model interface at all # - check: runs BOTH datamodel and non-data-model (if possible) functionality and compares results # - enabled: runs only the data model interface (does not use the legacy code) - if (current_os == "linux") { + if (matter_enable_recommended && current_os == "linux") { chip_use_data_model_interface = "check" } else { chip_use_data_model_interface = "disabled" diff --git a/src/lib/core/core.gni b/src/lib/core/core.gni index f2189198e36131..eea73a5c56f7b3 100644 --- a/src/lib/core/core.gni +++ b/src/lib/core/core.gni @@ -12,6 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +import("//build_overrides/chip.gni") +import("${chip_root}/config/recommended.gni") + declare_args() { # Enable logging. Shorthand for chip_error_logging, etc. chip_logging = true @@ -28,13 +31,16 @@ declare_args() { chip_progress_logging = chip_logging # Enable detail logging. - chip_detail_logging = chip_logging + chip_detail_logging = matter_enable_recommended && chip_logging # Enable automation logging. - chip_automation_logging = chip_logging + chip_automation_logging = matter_enable_recommended && chip_logging +} +declare_args() { # Configure the maximum size for logged messages - if (current_os == "linux" || current_os == "mac" || current_os == "ios") { + if ((matter_enable_recommended || chip_detail_logging) && + (current_os == "linux" || current_os == "mac" || current_os == "ios")) { # Allow base64 encoding of 1 MTU (4 * (1280 / 3) + padding chip_log_message_max_size = 1708 } else { @@ -88,7 +94,8 @@ declare_args() { chip_config_memory_debug_dmalloc = false # When enabled trace messages using tansport trace hook. - chip_enable_transport_trace = current_os == "linux" || current_os == "mac" + chip_enable_transport_trace = matter_enable_recommended && + (current_os == "linux" || current_os == "mac") # When this is enabled trace messages will be sent to pw_trace. chip_enable_transport_pw_trace = false diff --git a/src/tracing/tracing_args.gni b/src/tracing/tracing_args.gni index d6ddb1fd2e99b8..085844e4a53605 100644 --- a/src/tracing/tracing_args.gni +++ b/src/tracing/tracing_args.gni @@ -11,9 +11,8 @@ # WITHOUT 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("${build_root}/config/compiler/compiler.gni") +import("${chip_root}/config/recommended.gni") import("${chip_root}/src/platform/device.gni") declare_args() { @@ -24,7 +23,8 @@ declare_args() { # Additionally, if tracing is enabled, the main() function has to add # backends explicitly matter_enable_tracing_support = - current_os == "android" || chip_device_platform == "darwin" + matter_enable_recommended && + (current_os == "android" || chip_device_platform == "darwin") # Defines the trace backend. Current matter tracing splits the logic # into two parts: From bd6ae0980fde3d20a49385caa6d64adb6aee3276 Mon Sep 17 00:00:00 2001 From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> Date: Tue, 10 Sep 2024 15:01:55 -0400 Subject: [PATCH 28/50] [Silabs] Increase the max supported KVS entries (#35480) * Increase the maximum KVS entries our implementation can handle * add gn argument to configure the nvm3 max object size --- src/platform/silabs/KeyValueStoreManagerImpl.cpp | 10 +++++----- src/platform/silabs/SilabsConfig.h | 16 +++++++++++----- third_party/silabs/SiWx917_sdk.gni | 2 +- third_party/silabs/efr32_sdk.gni | 3 ++- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/platform/silabs/KeyValueStoreManagerImpl.cpp b/src/platform/silabs/KeyValueStoreManagerImpl.cpp index 012c951aaaa729..34d88388badf22 100644 --- a/src/platform/silabs/KeyValueStoreManagerImpl.cpp +++ b/src/platform/silabs/KeyValueStoreManagerImpl.cpp @@ -88,9 +88,9 @@ uint16_t KeyValueStoreManagerImpl::hashKvsKeyString(const char * key) const CHIP_ERROR KeyValueStoreManagerImpl::MapKvsKeyToNvm3(const char * key, uint16_t hash, uint32_t & nvm3Key, bool isSlotNeeded) const { CHIP_ERROR err; - char * strPrefix = nullptr; - uint8_t firstEmptyKeySlot = kMaxEntries; - for (uint8_t keyIndex = 0; keyIndex < kMaxEntries; keyIndex++) + char * strPrefix = nullptr; + uint16_t firstEmptyKeySlot = kMaxEntries; + for (uint16_t keyIndex = 0; keyIndex < kMaxEntries; keyIndex++) { if (mKvsKeyMap[keyIndex] == hash) { @@ -165,7 +165,7 @@ void KeyValueStoreManagerImpl::ScheduleKeyMapSave(void) Commit the key map in nvm once it as stabilized. */ SystemLayer().StartTimer( - std::chrono::duration_cast(System::Clock::Seconds32(SILABS_KVS_SAVE_DELAY_SECONDS)), + std::chrono::duration_cast(System::Clock::Seconds32(SL_KVS_SAVE_DELAY_SECONDS)), KeyValueStoreManagerImpl::OnScheduledKeyMapSave, NULL); } @@ -247,7 +247,7 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Delete(const char * key) void KeyValueStoreManagerImpl::ErasePartition(void) { // Iterate over all the Matter Kvs nvm3 records and delete each one... - for (uint32_t nvm3Key = SilabsConfig::kMinConfigKey_MatterKvs; nvm3Key <= SilabsConfig::kMaxConfigKey_MatterKvs; nvm3Key++) + for (uint32_t nvm3Key = SilabsConfig::kMinConfigKey_MatterKvs; nvm3Key <= SilabsConfig::kConfigKey_KvsLastKeySlot; nvm3Key++) { SilabsConfig::ClearConfigValue(nvm3Key); } diff --git a/src/platform/silabs/SilabsConfig.h b/src/platform/silabs/SilabsConfig.h index ccb14beeb8f177..cef9ca323f74d2 100644 --- a/src/platform/silabs/SilabsConfig.h +++ b/src/platform/silabs/SilabsConfig.h @@ -35,9 +35,11 @@ #endif // Delay before Key/Value is actually saved in NVM -#define SILABS_KVS_SAVE_DELAY_SECONDS 5 +#ifndef SL_KVS_SAVE_DELAY_SECONDS +#define SL_KVS_SAVE_DELAY_SECONDS 2 +#endif -static_assert((KVS_MAX_ENTRIES <= 255), "Implementation supports up to 255 Kvs entries"); +static_assert((KVS_MAX_ENTRIES <= 511), "Implementation supports up to 511 Kvs entries"); static_assert((KVS_MAX_ENTRIES >= 30), "Mininimal Kvs entries requirement is not met"); namespace chip { @@ -89,7 +91,8 @@ class SilabsConfig // Persistent counter values set at runtime. Retained during factory reset. static constexpr uint8_t kMatterCounter_KeyBase = 0x74; // Persistent config values set at runtime. Cleared during factory reset. - static constexpr uint8_t kMatterKvs_KeyBase = 0x75; + static constexpr uint8_t kMatterKvs_KeyBase = 0x75; + static constexpr uint8_t kMatterKvs_ExtendedRange = 0x76; // Key definitions for well-known configuration values. // Factory config keys @@ -167,7 +170,8 @@ class SilabsConfig // Matter KVS storage Keys static constexpr Key kConfigKey_KvsStringKeyMap = SilabsConfigKey(kMatterKvs_KeyBase, 0x00); static constexpr Key kConfigKey_KvsFirstKeySlot = SilabsConfigKey(kMatterKvs_KeyBase, 0x01); - static constexpr Key kConfigKey_KvsLastKeySlot = SilabsConfigKey(kMatterKvs_KeyBase, KVS_MAX_ENTRIES); + static constexpr Key kConfigKey_KvsLastKeySlot = + SilabsConfigKey(kMatterKvs_KeyBase + (KVS_MAX_ENTRIES >> 8), KVS_MAX_ENTRIES & UINT8_MAX); // Set key id limits for each group. static constexpr Key kMinConfigKey_MatterFactory = SilabsConfigKey(kMatterFactory_KeyBase, 0x00); @@ -180,7 +184,9 @@ class SilabsConfig static constexpr Key kMaxConfigKey_MatterCounter = SilabsConfigKey(kMatterCounter_KeyBase, 0x1F); static constexpr Key kMinConfigKey_MatterKvs = kConfigKey_KvsStringKeyMap; - static constexpr Key kMaxConfigKey_MatterKvs = kConfigKey_KvsLastKeySlot; + static constexpr Key kMaxConfigKey_MatterKvs = SilabsConfigKey(kMatterKvs_ExtendedRange, 0xFF); + static_assert(kConfigKey_KvsLastKeySlot <= kMaxConfigKey_MatterKvs, + "Configured KVS_MAX_ENTRIES overflows the reserved KVS Key range"); static CHIP_ERROR Init(void); static void DeInit(void); diff --git a/third_party/silabs/SiWx917_sdk.gni b/third_party/silabs/SiWx917_sdk.gni index 30e1595493c60c..e91afe7483b3fa 100644 --- a/third_party/silabs/SiWx917_sdk.gni +++ b/third_party/silabs/SiWx917_sdk.gni @@ -187,7 +187,7 @@ template("siwx917_sdk") { # 1->SOC and 0->NCP "RSI_WLAN_API_ENABLE", "NVM3_DEFAULT_NVM_SIZE=40960", - "NVM3_DEFAULT_MAX_OBJECT_SIZE=4092", + "NVM3_DEFAULT_MAX_OBJECT_SIZE=${sl_nvm3_max_object_size}", "KVS_MAX_ENTRIES=${kvs_max_entries}", "${silabs_mcu}=1", "${silabs_board}=1", diff --git a/third_party/silabs/efr32_sdk.gni b/third_party/silabs/efr32_sdk.gni index 1cd69d31e7084b..3f30a0ca52f867 100644 --- a/third_party/silabs/efr32_sdk.gni +++ b/third_party/silabs/efr32_sdk.gni @@ -38,6 +38,7 @@ declare_args() { # enable by default for thread/non-wifi-ncp builds enable_openthread_cli = !(use_rs9116 || use_wf200 || use_SiWx917) kvs_max_entries = 255 + sl_nvm3_max_object_size = 4092 # Use Silabs factory data provider example. # Users can implement their own. @@ -421,7 +422,7 @@ template("efr32_sdk") { "HARD_FAULT_LOG_ENABLE", "CORTEXM3_EFM32_MICRO", "NVM3_DEFAULT_NVM_SIZE=40960", - "NVM3_DEFAULT_MAX_OBJECT_SIZE=4092", + "NVM3_DEFAULT_MAX_OBJECT_SIZE=${sl_nvm3_max_object_size}", "KVS_MAX_ENTRIES=${kvs_max_entries}", "CORTEXM3=1", "MICRO=EMBER_MICRO_CORTEXM3_EFR32", From 2b7965d9e3fc9423f9ad6530b610bb994b6c63e5 Mon Sep 17 00:00:00 2001 From: Terence Hampson Date: Tue, 10 Sep 2024 15:22:11 -0400 Subject: [PATCH 29/50] Change TC_CCTRL_2_3.py to no longer use per_endpoint_test (#35516) --- src/python_testing/TC_CCTRL_2_3.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/python_testing/TC_CCTRL_2_3.py b/src/python_testing/TC_CCTRL_2_3.py index 224f283f46d27b..6fa5e7038f88ef 100644 --- a/src/python_testing/TC_CCTRL_2_3.py +++ b/src/python_testing/TC_CCTRL_2_3.py @@ -34,7 +34,7 @@ from chip import ChipDeviceCtrl from chip.interaction_model import InteractionModelError, Status from matter_testing_support import (MatterBaseTest, TestStep, async_test_body, default_matter_test_main, has_cluster, - per_endpoint_test) + run_if_endpoint_matches) from mobly import asserts @@ -109,7 +109,7 @@ def steps_TC_CCTRL_2_3(self) -> list[TestStep]: def default_timeout(self) -> int: return 3*60 - @per_endpoint_test(has_cluster(Clusters.CommissionerControl)) + @run_if_endpoint_matches(has_cluster(Clusters.CommissionerControl)) async def test_TC_CCTRL_2_3(self): self.is_ci = self.check_pics('PICS_SDK_CI_ONLY') From dc397c2a0cd29532a2763b655ff73a81b32deed6 Mon Sep 17 00:00:00 2001 From: Terence Hampson Date: Tue, 10 Sep 2024 15:49:51 -0400 Subject: [PATCH 30/50] Fix fabric sync tests after name update (#35518) --- src/python_testing/TC_CCTRL_2_2.py | 26 +++++++++---------- src/python_testing/TC_CCTRL_2_3.py | 12 ++++----- src/python_testing/TC_MCORE_FS_1_1.py | 8 +++--- src/python_testing/TC_MCORE_FS_1_3.py | 8 +++--- .../test_testing/test_TC_CCNTL_2_2.py | 4 +-- .../test_testing/test_TC_MCORE_FS_1_1.py | 2 +- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/python_testing/TC_CCTRL_2_2.py b/src/python_testing/TC_CCTRL_2_2.py index 8e7a8f1fde6ac3..87849e40443d01 100644 --- a/src/python_testing/TC_CCTRL_2_2.py +++ b/src/python_testing/TC_CCTRL_2_2.py @@ -141,7 +141,7 @@ async def test_TC_CCTRL_2_2(self): events = await self.default_controller.ReadEvent(nodeid=self.dut_node_id, events=event_path) self.step(5) - cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestId=1, responseTimeoutSeconds=30) + cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestID=1, responseTimeoutSeconds=30) try: await self.send_single_cmd(cmd) asserts.fail("Unexpected success on CommissionNode") @@ -162,7 +162,7 @@ async def test_TC_CCTRL_2_2(self): self.step(8) good_request_id = 0x1234567887654321 cmd = Clusters.CommissionerControl.Commands.RequestCommissioningApproval( - requestId=good_request_id, vendorId=th_server_vid, productId=th_server_pid) + requestID=good_request_id, vendorID=th_server_vid, productID=th_server_pid) try: await self.send_single_cmd(cmd=cmd, node_id=pase_nodeid) asserts.fail("Unexpected success on RequestCommissioningApproval over PASE") @@ -187,7 +187,7 @@ async def test_TC_CCTRL_2_2(self): not_th_server_vid = 0x6006 asserts.assert_not_equal(not_th_server_vid, th_server_vid, "Test implementation assumption incorrect") cmd = Clusters.CommissionerControl.Commands.RequestCommissioningApproval( - requestId=good_request_id, vendorId=not_th_server_vid, productId=th_server_pid) + requestID=good_request_id, vendorID=not_th_server_vid, productID=th_server_pid) # If no exception is raised, this is success await self.send_single_cmd(cmd) @@ -203,13 +203,13 @@ async def test_TC_CCTRL_2_2(self): new_event = await self.default_controller.ReadEvent(nodeid=self.dut_node_id, events=event_path, eventNumberFilter=max(event_nums)+1) asserts.assert_equal(len(new_event), 1, "Unexpected event list len") asserts.assert_equal(new_event[0].Data.statusCode, 0, "Unexpected status code") - asserts.assert_equal(new_event[0].Data.clientNodeId, + asserts.assert_equal(new_event[0].Data.clientNodeID, self.matter_test_config.controller_node_id, "Unexpected client node id") - asserts.assert_equal(new_event[0].Data.requestId, good_request_id, "Unexpected request ID") + asserts.assert_equal(new_event[0].Data.requestID, good_request_id, "Unexpected request ID") self.step(14) bad_request_id = 0x1234567887654322 - cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestId=bad_request_id, responseTimeoutSeconds=30) + cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestID=bad_request_id, responseTimeoutSeconds=30) try: await self.send_single_cmd(cmd=cmd) asserts.fail("Unexpected success on CommissionNode") @@ -217,7 +217,7 @@ async def test_TC_CCTRL_2_2(self): asserts.assert_equal(e.status, Status.Failure, "Incorrect error returned") self.step(15) - cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestId=good_request_id, responseTimeoutSeconds=29) + cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestID=good_request_id, responseTimeoutSeconds=29) try: await self.send_single_cmd(cmd=cmd) asserts.fail("Unexpected success on CommissionNode") @@ -225,7 +225,7 @@ async def test_TC_CCTRL_2_2(self): asserts.assert_equal(e.status, Status.ConstraintError, "Incorrect error returned") self.step(16) - cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestId=good_request_id, responseTimeoutSeconds=121) + cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestID=good_request_id, responseTimeoutSeconds=121) try: await self.send_single_cmd(cmd=cmd) asserts.fail("Unexpected success on CommissionNode") @@ -233,7 +233,7 @@ async def test_TC_CCTRL_2_2(self): asserts.assert_equal(e.status, Status.ConstraintError, "Incorrect error returned") self.step(17) - cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestId=good_request_id, responseTimeoutSeconds=30) + cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestID=good_request_id, responseTimeoutSeconds=30) resp: Clusters.CommissionerControl.Commands.ReverseOpenCommissioningWindow = await self.send_single_cmd(cmd) asserts.assert_equal(type(resp), Clusters.CommissionerControl.Commands.ReverseOpenCommissioningWindow, "Incorrect response type") @@ -263,7 +263,7 @@ async def test_TC_CCTRL_2_2(self): self.step(22) good_request_id = 0x1234567812345678 cmd = Clusters.CommissionerControl.Commands.RequestCommissioningApproval( - requestId=good_request_id, vendorId=th_server_vid, productId=th_server_pid, label="Test Ecosystem") + requestID=good_request_id, vendorID=th_server_vid, productID=th_server_pid, label="Test Ecosystem") await self.send_single_cmd(cmd) self.step(23) @@ -276,12 +276,12 @@ async def test_TC_CCTRL_2_2(self): new_event = await self.default_controller.ReadEvent(nodeid=self.dut_node_id, events=event_path, eventNumberFilter=max(event_nums)+1) asserts.assert_equal(len(new_event), 1, "Unexpected event list len") asserts.assert_equal(new_event[0].Data.statusCode, 0, "Unexpected status code") - asserts.assert_equal(new_event[0].Data.clientNodeId, + asserts.assert_equal(new_event[0].Data.clientNodeID, self.matter_test_config.controller_node_id, "Unexpected client node id") - asserts.assert_equal(new_event[0].Data.requestId, good_request_id, "Unexpected request ID") + asserts.assert_equal(new_event[0].Data.requestID, good_request_id, "Unexpected request ID") self.step(25) - cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestId=good_request_id, responseTimeoutSeconds=30) + cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestID=good_request_id, responseTimeoutSeconds=30) resp = await self.send_single_cmd(cmd) asserts.assert_equal(type(resp), Clusters.CommissionerControl.Commands.ReverseOpenCommissioningWindow, "Incorrect response type") diff --git a/src/python_testing/TC_CCTRL_2_3.py b/src/python_testing/TC_CCTRL_2_3.py index 6fa5e7038f88ef..2c1c20e17f309f 100644 --- a/src/python_testing/TC_CCTRL_2_3.py +++ b/src/python_testing/TC_CCTRL_2_3.py @@ -125,7 +125,7 @@ async def test_TC_CCTRL_2_3(self): self.step(4) good_request_id = 0x1234567812345678 cmd = Clusters.CommissionerControl.Commands.RequestCommissioningApproval( - requestId=good_request_id, vendorId=th_server_vid, productId=th_server_pid, label="Test Ecosystem") + requestID=good_request_id, vendorID=th_server_vid, productID=th_server_pid, label="Test Ecosystem") await self.send_single_cmd(cmd=cmd) self.step(5) @@ -137,13 +137,13 @@ async def test_TC_CCTRL_2_3(self): events = await self.default_controller.ReadEvent(nodeid=self.dut_node_id, events=event_path) asserts.assert_equal(len(events), 1, "Unexpected event list len") asserts.assert_equal(events[0].Data.statusCode, 0, "Unexpected status code") - asserts.assert_equal(events[0].Data.clientNodeId, + asserts.assert_equal(events[0].Data.clientNodeID, self.matter_test_config.controller_node_id, "Unexpected client node id") - asserts.assert_equal(events[0].Data.requestId, good_request_id, "Unexpected request ID") + asserts.assert_equal(events[0].Data.requestID, good_request_id, "Unexpected request ID") self.step(7) cmd = Clusters.CommissionerControl.Commands.RequestCommissioningApproval( - requestId=good_request_id, vendorId=th_server_vid, productId=th_server_pid) + requestID=good_request_id, vendorID=th_server_vid, productID=th_server_pid) try: await self.send_single_cmd(cmd=cmd) asserts.fail("Unexpected success on CommissionNode") @@ -151,13 +151,13 @@ async def test_TC_CCTRL_2_3(self): asserts.assert_equal(e.status, Status.Failure, "Incorrect error returned") self.step(8) - cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestId=good_request_id, responseTimeoutSeconds=30) + cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestID=good_request_id, responseTimeoutSeconds=30) resp = await self.send_single_cmd(cmd) asserts.assert_equal(type(resp), Clusters.CommissionerControl.Commands.ReverseOpenCommissioningWindow, "Incorrect response type") self.step(9) - cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestId=good_request_id, responseTimeoutSeconds=30) + cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestID=good_request_id, responseTimeoutSeconds=30) try: await self.send_single_cmd(cmd=cmd) asserts.fail("Unexpected success on CommissionNode") diff --git a/src/python_testing/TC_MCORE_FS_1_1.py b/src/python_testing/TC_MCORE_FS_1_1.py index e56a1fb8246b56..4ea9d362655884 100755 --- a/src/python_testing/TC_MCORE_FS_1_1.py +++ b/src/python_testing/TC_MCORE_FS_1_1.py @@ -111,7 +111,7 @@ async def test_TC_MCORE_FS_1_1(self): self.step("3a") good_request_id = 0x1234567812345678 cmd = Clusters.CommissionerControl.Commands.RequestCommissioningApproval( - requestId=good_request_id, vendorId=th_fsa_server_vid, productId=th_fsa_server_pid, label="Test Ecosystem") + requestID=good_request_id, vendorID=th_fsa_server_vid, productID=th_fsa_server_pid, label="Test Ecosystem") await self.send_single_cmd(cmd, endpoint=dut_commissioning_control_endpoint) if not self.is_ci: @@ -125,12 +125,12 @@ async def test_TC_MCORE_FS_1_1(self): asserts.assert_equal(len(new_event), 1, "Unexpected event list len") asserts.assert_equal(new_event[0].Data.statusCode, 0, "Unexpected status code") - asserts.assert_equal(new_event[0].Data.clientNodeId, + asserts.assert_equal(new_event[0].Data.clientNodeID, self.matter_test_config.controller_node_id, "Unexpected client node id") - asserts.assert_equal(new_event[0].Data.requestId, good_request_id, "Unexpected request ID") + asserts.assert_equal(new_event[0].Data.requestID, good_request_id, "Unexpected request ID") self.step("3b") - cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestId=good_request_id, responseTimeoutSeconds=30) + cmd = Clusters.CommissionerControl.Commands.CommissionNode(requestID=good_request_id, responseTimeoutSeconds=30) resp = await self.send_single_cmd(cmd, endpoint=dut_commissioning_control_endpoint) asserts.assert_equal(type(resp), Clusters.CommissionerControl.Commands.ReverseOpenCommissioningWindow, "Incorrect response type") diff --git a/src/python_testing/TC_MCORE_FS_1_3.py b/src/python_testing/TC_MCORE_FS_1_3.py index 1a18896c055952..2a21c977c9fc8b 100644 --- a/src/python_testing/TC_MCORE_FS_1_3.py +++ b/src/python_testing/TC_MCORE_FS_1_3.py @@ -170,9 +170,9 @@ async def commission_via_commissioner_control(self, controller_node_id: int, dev await self.send_single_cmd( node_id=controller_node_id, cmd=Clusters.CommissionerControl.Commands.RequestCommissioningApproval( - requestId=request_id, - vendorId=vendor_id, - productId=product_id, + requestID=request_id, + vendorID=vendor_id, + productID=product_id, ), ) @@ -182,7 +182,7 @@ async def commission_via_commissioner_control(self, controller_node_id: int, dev resp = await self.send_single_cmd( node_id=controller_node_id, cmd=Clusters.CommissionerControl.Commands.CommissionNode( - requestId=request_id, + requestID=request_id, responseTimeoutSeconds=30, ), ) diff --git a/src/python_testing/test_testing/test_TC_CCNTL_2_2.py b/src/python_testing/test_testing/test_TC_CCNTL_2_2.py index d528b5652e1b45..bd28023b8e32e8 100644 --- a/src/python_testing/test_testing/test_TC_CCNTL_2_2.py +++ b/src/python_testing/test_testing/test_TC_CCNTL_2_2.py @@ -94,14 +94,14 @@ def dynamic_event_return(*args, **argv): header = Attribute.EventHeader(EndpointId=0, ClusterId=Clusters.CommissionerControl.id, EventId=Clusters.CommissionerControl.Events.CommissioningRequestResult.event_id, EventNumber=1) data = Clusters.CommissionerControl.Events.CommissioningRequestResult( - requestId=0x1234567887654321, clientNodeId=112233, statusCode=0) + requestID=0x1234567887654321, clientNodeID=112233, statusCode=0) result = Attribute.EventReadResult(Header=header, Status=Status.Success, Data=data) return [result] elif event_call_count == 4: # returned event with new request header = Attribute.EventHeader(EndpointId=0, ClusterId=Clusters.CommissionerControl.id, EventId=Clusters.CommissionerControl.Events.CommissioningRequestResult.event_id, EventNumber=1) data = Clusters.CommissionerControl.Events.CommissioningRequestResult( - requestId=0x1234567812345678, clientNodeId=112233, statusCode=0) + requestID=0x1234567812345678, clientNodeID=112233, statusCode=0) result = Attribute.EventReadResult(Header=header, Status=Status.Success, Data=data) return [result] else: diff --git a/src/python_testing/test_testing/test_TC_MCORE_FS_1_1.py b/src/python_testing/test_testing/test_TC_MCORE_FS_1_1.py index 5b2e29b71915b1..d79b4125309e11 100644 --- a/src/python_testing/test_testing/test_TC_MCORE_FS_1_1.py +++ b/src/python_testing/test_testing/test_TC_MCORE_FS_1_1.py @@ -72,7 +72,7 @@ def dynamic_event_return(*args, **argv): header = Attribute.EventHeader(EndpointId=0, ClusterId=Clusters.CommissionerControl.id, EventId=Clusters.CommissionerControl.Events.CommissioningRequestResult.event_id, EventNumber=1) data = Clusters.CommissionerControl.Events.CommissioningRequestResult( - requestId=0x1234567812345678, clientNodeId=112233, statusCode=0) + requestID=0x1234567812345678, clientNodeID=112233, statusCode=0) result = Attribute.EventReadResult(Header=header, Status=Status.Success, Data=data) return [result] else: From 3d3784ecd5c93141e51dddd8c1f8e2f095313feb Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Tue, 10 Sep 2024 17:01:12 -0400 Subject: [PATCH 31/50] Fix MTRCommissionableBrowserTests when remove/add happen after we found all the devices. (#35515) --- .../CHIPTests/MTRCommissionableBrowserTests.m | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/darwin/Framework/CHIPTests/MTRCommissionableBrowserTests.m b/src/darwin/Framework/CHIPTests/MTRCommissionableBrowserTests.m index 15ef7a839de97a..0acfbd9a580371 100644 --- a/src/darwin/Framework/CHIPTests/MTRCommissionableBrowserTests.m +++ b/src/darwin/Framework/CHIPTests/MTRCommissionableBrowserTests.m @@ -55,6 +55,7 @@ @interface DeviceScannerDelegate : NSObject @property (nonatomic, nullable) XCTestExpectation * expectation; @property (nonatomic) NSMutableArray *> * results; @property (nonatomic) NSMutableArray *> * removedResults; +@property (nonatomic) BOOL expectedResultsCountReached; - (instancetype)initWithExpectation:(XCTestExpectation *)expectation; - (void)controller:(MTRDeviceController *)controller didFindCommissionableDevice:(MTRCommissionableBrowserResult *)device; @@ -71,6 +72,7 @@ - (instancetype)initWithExpectation:(XCTestExpectation *)expectation _expectation = expectation; _results = [[NSMutableArray alloc] init]; _removedResults = [[NSMutableArray alloc] init]; + _expectedResultsCountReached = NO; return self; } @@ -83,6 +85,7 @@ - (instancetype)init _expectation = nil; _results = [[NSMutableArray alloc] init]; _removedResults = [[NSMutableArray alloc] init]; + _expectedResultsCountReached = NO; return self; } @@ -111,7 +114,14 @@ - (void)controller:(MTRDeviceController *)controller didFindCommissionableDevice // Ensure that we just saw the same results as our final set popping in and out if things // ever got removed here. XCTAssertEqualObjects(finalResultsSet, allResultsSet); - [self.expectation fulfill]; + + // If we have a remove and re-add after the result count reached the + // expected one, we can end up in this branch again. Doing the above + // checks is fine, but we shouldn't double-fulfill the expectation. + if (self.expectedResultsCountReached == NO) { + self.expectedResultsCountReached = YES; + [self.expectation fulfill]; + } } XCTAssertLessThanOrEqual(_results.count, kExpectedDiscoveredDevicesCount); From 02316de18c09f246a4ecb1fabf4db46ebbd08a96 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Tue, 10 Sep 2024 17:55:17 -0400 Subject: [PATCH 32/50] Document mask argument of DECLARE_DYNAMIC_ATTRIBUTE. (#35228) People keep forgetting ATTRIBUTE_MASK_WRITABLE here, then being confused why writes do not work. --- src/app/util/attribute-storage.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/app/util/attribute-storage.h b/src/app/util/attribute-storage.h index b45bfe43cff43e..23a9b9b5fd20c3 100644 --- a/src/app/util/attribute-storage.h +++ b/src/app/util/attribute-storage.h @@ -60,6 +60,12 @@ static constexpr uint16_t kEmberInvalidEndpointIndex = 0xFFFF; } /* cluster revision */ \ } +// The attrMask must contain the relevant ATTRIBUTE_MASK_* bits from +// attribute-metadata.h. Specifically: +// +// * Writable attributes must have ATTRIBUTE_MASK_WRITABLE +// * Nullable attributes (have X in the quality column in the spec) must have ATTRIBUTE_MASK_NULLABLE +// * Attributes that have T in the Access column in the spec must have ATTRIBUTE_MASK_MUST_USE_TIMED_WRITE #define DECLARE_DYNAMIC_ATTRIBUTE(attId, attType, attSizeBytes, attrMask) \ { \ ZAP_EMPTY_DEFAULT(), attId, attSizeBytes, ZAP_TYPE(attType), attrMask | ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) \ From b1829ff5ee77449db5dfee62aa7b81eb9f129601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Tomkiel?= Date: Wed, 11 Sep 2024 00:02:51 +0200 Subject: [PATCH 33/50] [chip-tool] Print DeviceType names next to ids (#35445) * Add DeviceTypeIdToText and it's usage * Update Zap-generated files * Minor ZAP fixes * Update Zap-generated files * Revert empty line * Update missing Zap-generated files --- .../logging/DataModelLogger-src.zapt | 1 + .../templates/logging/EntryToText-src.zapt | 10 ++ .../templates/logging/EntryToText.zapt | 4 +- .../templates/partials/StructLoggerImpl.zapt | 22 +++ .../cluster/logging/DataModelLogger.cpp | 25 +-- .../cluster/logging/EntryToText.cpp | 143 ++++++++++++++++++ .../cluster/logging/EntryToText.h | 2 + 7 files changed, 196 insertions(+), 11 deletions(-) diff --git a/examples/chip-tool/templates/logging/DataModelLogger-src.zapt b/examples/chip-tool/templates/logging/DataModelLogger-src.zapt index 3f76143ffab36c..cbce6c27abf767 100644 --- a/examples/chip-tool/templates/logging/DataModelLogger-src.zapt +++ b/examples/chip-tool/templates/logging/DataModelLogger-src.zapt @@ -1,6 +1,7 @@ {{> header}} #include +#include using namespace chip::app::Clusters; diff --git a/examples/chip-tool/templates/logging/EntryToText-src.zapt b/examples/chip-tool/templates/logging/EntryToText-src.zapt index 646ee2ad872eaf..f7cf8ab51c533b 100644 --- a/examples/chip-tool/templates/logging/EntryToText-src.zapt +++ b/examples/chip-tool/templates/logging/EntryToText-src.zapt @@ -81,4 +81,14 @@ char const * GeneratedCommandIdToText(chip::ClusterId cluster, chip::CommandId i {{/zcl_clusters}} default: return "Unknown"; } +} + +char const * DeviceTypeIdToText(chip::DeviceTypeId id) { + switch(id) + { +{{#zcl_device_types}} + case {{asHex code 8}}: return "{{caption}}"; +{{/zcl_device_types}} + default: return "Unknown"; + } } \ No newline at end of file diff --git a/examples/chip-tool/templates/logging/EntryToText.zapt b/examples/chip-tool/templates/logging/EntryToText.zapt index d1a78f84dc218c..fa77ffc916dced 100644 --- a/examples/chip-tool/templates/logging/EntryToText.zapt +++ b/examples/chip-tool/templates/logging/EntryToText.zapt @@ -10,4 +10,6 @@ char const * AttributeIdToText(chip::ClusterId cluster, chip::AttributeId id); char const * AcceptedCommandIdToText(chip::ClusterId cluster, chip::CommandId id); -char const * GeneratedCommandIdToText(chip::ClusterId cluster, chip::CommandId id); \ No newline at end of file +char const * GeneratedCommandIdToText(chip::ClusterId cluster, chip::CommandId id); + +char const * DeviceTypeIdToText(chip::DeviceTypeId id); \ No newline at end of file diff --git a/examples/chip-tool/templates/partials/StructLoggerImpl.zapt b/examples/chip-tool/templates/partials/StructLoggerImpl.zapt index 3dbd99e7400ef4..e4da56005b8064 100644 --- a/examples/chip-tool/templates/partials/StructLoggerImpl.zapt +++ b/examples/chip-tool/templates/partials/StructLoggerImpl.zapt @@ -3,12 +3,34 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, const ch DataModelLogger::LogString(label, indent, "{"); {{#zcl_struct_items}} { +{{#if (isEqual type "devtype_id") }} +{{#if isNullable }} + if (value.{{asLowerCamelCase label}}.IsNull()) + { + CHIP_ERROR err = LogValue("{{asUpperCamelCase label}}", indent + 1, value.{{asLowerCamelCase label}}); + if (err != CHIP_NO_ERROR) + { + DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for '{{asUpperCamelCase label}}'"); + return err; + } + } + else + { + std::string item = std::to_string(value.{{asLowerCamelCase label}}.Value()) + " (" + DeviceTypeIdToText(value.{{asLowerCamelCase label}}.Value()) + ")"; + DataModelLogger::LogString("{{asUpperCamelCase label}}", indent + 1, item); + } +{{else}} + std::string item = std::to_string(value.{{asLowerCamelCase label}}) + " (" + DeviceTypeIdToText(value.{{asLowerCamelCase label}}) + ")"; + DataModelLogger::LogString("{{asUpperCamelCase label}}", indent + 1, item); +{{/if}} +{{else}} CHIP_ERROR err = LogValue("{{asUpperCamelCase label}}", indent + 1, value.{{asLowerCamelCase label}}); if (err != CHIP_NO_ERROR) { DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for '{{asUpperCamelCase label}}'"); return err; } +{{/if}} } {{/zcl_struct_items}} DataModelLogger::LogString(indent, "}"); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp index 2d788bd2613215..8def02781d4b9a 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp @@ -18,6 +18,7 @@ // THIS FILE IS GENERATED BY ZAP #include +#include using namespace chip::app::Clusters; @@ -273,12 +274,8 @@ CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, { DataModelLogger::LogString(label, indent, "{"); { - CHIP_ERROR err = LogValue("DeviceType", indent + 1, value.deviceType); - if (err != CHIP_NO_ERROR) - { - DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'DeviceType'"); - return err; - } + std::string item = std::to_string(value.deviceType) + " (" + DeviceTypeIdToText(value.deviceType) + ")"; + DataModelLogger::LogString("DeviceType", indent + 1, item); } { CHIP_ERROR err = LogValue("Revision", indent + 1, value.revision); @@ -641,11 +638,19 @@ DataModelLogger::LogValue(const char * label, size_t indent, } } { - CHIP_ERROR err = LogValue("DeviceType", indent + 1, value.deviceType); - if (err != CHIP_NO_ERROR) + if (value.deviceType.IsNull()) { - DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'DeviceType'"); - return err; + CHIP_ERROR err = LogValue("DeviceType", indent + 1, value.deviceType); + if (err != CHIP_NO_ERROR) + { + DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'DeviceType'"); + return err; + } + } + else + { + std::string item = std::to_string(value.deviceType.Value()) + " (" + DeviceTypeIdToText(value.deviceType.Value()) + ")"; + DataModelLogger::LogString("DeviceType", indent + 1, item); } } DataModelLogger::LogString(indent, "}"); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.cpp index 07bac4319c7c61..8f320e64e682b8 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.cpp @@ -6700,3 +6700,146 @@ char const * GeneratedCommandIdToText(chip::ClusterId cluster, chip::CommandId i return "Unknown"; } } + +char const * DeviceTypeIdToText(chip::DeviceTypeId id) +{ + switch (id) + { + case 0x0000000A: + return "Matter Door Lock"; + case 0x0000000B: + return "Matter Door Lock Controller"; + case 0x0000000E: + return "Matter Aggregator"; + case 0x0000000F: + return "Matter Generic Switch"; + case 0x00000011: + return "Matter Power Source"; + case 0x00000012: + return "Matter OTA Requestor"; + case 0x00000013: + return "Matter Bridged Device"; + case 0x00000014: + return "Matter OTA Provider"; + case 0x00000015: + return "Matter Contact Sensor"; + case 0x00000016: + return "Matter Root Node"; + case 0x00000019: + return "Matter Secondary Network Interface Device Type"; + case 0x00000022: + return "Matter Speaker"; + case 0x00000023: + return "Matter Casting Video Player"; + case 0x00000024: + return "Matter Content App"; + case 0x00000027: + return "Matter Mode Select"; + case 0x00000028: + return "Matter Basic Video Player"; + case 0x00000029: + return "Matter Casting Video Client"; + case 0x0000002A: + return "Matter Video Remote Control"; + case 0x0000002B: + return "Matter Fan"; + case 0x0000002C: + return "Matter Air Quality Sensor"; + case 0x0000002D: + return "Matter Air Purifier"; + case 0x00000041: + return "Matter Water Freeze Detector"; + case 0x00000042: + return "Matter Water Valve"; + case 0x00000043: + return "Matter Water Leak Detector"; + case 0x00000044: + return "Matter Rain Sensor"; + case 0x00000070: + return "Matter Refrigerator"; + case 0x00000071: + return "Matter Temperature Controlled Cabinet"; + case 0x00000072: + return "Matter Room Air Conditioner"; + case 0x00000073: + return "Matter Laundry Washer"; + case 0x00000074: + return "Matter Robotic Vacuum Cleaner"; + case 0x00000075: + return "Matter Dishwasher"; + case 0x00000076: + return "Matter Smoke CO Alarm"; + case 0x00000077: + return "Matter Cook Surface"; + case 0x00000078: + return "Matter Cooktop"; + case 0x00000079: + return "Matter Microwave Oven"; + case 0x0000007A: + return "Matter Extractor Hood"; + case 0x0000007B: + return "Matter Oven"; + case 0x0000007C: + return "Matter Laundry Dryer"; + case 0x00000090: + return "Matter Network Infrastructure Manager"; + case 0x00000091: + return "Matter Thread Border Router"; + case 0x00000100: + return "Matter On/Off Light"; + case 0x00000101: + return "Matter Dimmable Light"; + case 0x00000103: + return "Matter On/Off Light Switch"; + case 0x00000104: + return "Matter Dimmer Switch"; + case 0x00000105: + return "Matter Color Dimmer Switch"; + case 0x00000106: + return "Matter Light Sensor"; + case 0x00000107: + return "Matter Occupancy Sensor"; + case 0x0000010A: + return "Matter On/Off Plug-in Unit"; + case 0x0000010B: + return "Matter Dimmable Plug-in Unit"; + case 0x0000010C: + return "Matter Color Temperature Light"; + case 0x0000010D: + return "Matter Extended Color Light"; + case 0x00000202: + return "Matter Window Covering"; + case 0x00000203: + return "Matter Window Covering Controller"; + case 0x00000300: + return "Matter Heating/Cooling Unit"; + case 0x00000301: + return "Matter Thermostat"; + case 0x00000302: + return "Matter Temperature Sensor"; + case 0x00000303: + return "Matter Pump"; + case 0x00000304: + return "Matter Pump Controller"; + case 0x00000305: + return "Matter Pressure Sensor"; + case 0x00000306: + return "Matter Flow Sensor"; + case 0x00000307: + return "Matter Humidity Sensor"; + case 0x0000050C: + return "Matter EVSE"; + case 0x00000510: + return "Matter Electrical Sensor"; + case 0x00000840: + return "Matter Control Bridge"; + case 0x00000850: + return "Matter On/Off Sensor"; + case 0xFFF10001: + return "Matter Orphan Clusters"; + case 0xFFF10003: + return "Matter All-clusters-app Server Example"; + default: + return "Unknown"; + } +} diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.h b/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.h index 27fa6512fbdd01..f65ab6e45f549a 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/EntryToText.h @@ -28,3 +28,5 @@ char const * AttributeIdToText(chip::ClusterId cluster, chip::AttributeId id); char const * AcceptedCommandIdToText(chip::ClusterId cluster, chip::CommandId id); char const * GeneratedCommandIdToText(chip::ClusterId cluster, chip::CommandId id); + +char const * DeviceTypeIdToText(chip::DeviceTypeId id); From 702fae3c22e6c0b19066a8487b3a411971be9a53 Mon Sep 17 00:00:00 2001 From: Jeff Tung <100387939+jtung-apple@users.noreply.github.com> Date: Tue, 10 Sep 2024 17:47:45 -0700 Subject: [PATCH 34/50] [Darwin] MTRDeviceController initial device retain should not depend on matter queue (#35498) --- src/darwin/Framework/CHIP/MTRDeviceController.mm | 2 +- src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 69bb02d5f1f03d..246955afdfd55b 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -859,7 +859,7 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams // // Note that this is just an optimization to avoid throwing the information away and immediately // re-reading it from storage. - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (kSecondsToWaitBeforeAPIClientRetainsMTRDevice * NSEC_PER_SEC)), self.chipWorkQueue, ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (kSecondsToWaitBeforeAPIClientRetainsMTRDevice * NSEC_PER_SEC)), dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), ^{ MTR_LOG("%@ un-retain devices loaded at startup %lu", self, static_cast(deviceList.count)); }); }]; diff --git a/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm b/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm index c8f8950579b350..bdcbafae1b6c9d 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController_Concrete.mm @@ -761,7 +761,7 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams // // Note that this is just an optimization to avoid throwing the information away and immediately // re-reading it from storage. - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (kSecondsToWaitBeforeAPIClientRetainsMTRDevice * NSEC_PER_SEC)), self.chipWorkQueue, ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) (kSecondsToWaitBeforeAPIClientRetainsMTRDevice * NSEC_PER_SEC)), dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), ^{ MTR_LOG("%@ un-retain devices loaded at startup %lu", self, static_cast(deviceList.count)); }); }]; From 1f2f6be08137d7c9117920afbedb69cf3dff7241 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Tue, 10 Sep 2024 21:08:20 -0400 Subject: [PATCH 35/50] Add a step timeout for Matter.framework unit tests. (#35530) If a test hangs, we end up running until job timeout after 6 hours. But that skips later steps, including log uploads, which makes it harder to figure out why the hang happened. The fix is to use a timeout on the test job that is somewhat shorter than the 6-hour job timeout, so we allow time for the log upload too. --- .github/workflows/darwin.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/darwin.yaml b/.github/workflows/darwin.yaml index 360c5bb6963217..9eeac9118ef9d3 100644 --- a/.github/workflows/darwin.yaml +++ b/.github/workflows/darwin.yaml @@ -105,10 +105,9 @@ jobs: run: | scripts/examples/gn_build_example.sh examples/ota-requestor-app/linux out/debug/ota-requestor-app chip_config_network_layer_ble=false non_spec_compliant_ota_action_delay_floor=0 - name: Run Framework Tests - # For now disable unguarded-availability-new warnings because we - # internally use APIs that we are annotating as only available on - # new enough versions. Maybe we should change out deployment - # target versions instead? + # We want to ensure that our log upload runs on timeout, so use a timeout here shorter + # than the 6-hour overall job timeout. 4.5 hours should be plenty. + timeout-minutes: 270 working-directory: src/darwin/Framework run: | mkdir -p /tmp/darwin/framework-tests From 9257ca775ebb50467eae0678b9751c4162800b10 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Tue, 10 Sep 2024 21:43:06 -0400 Subject: [PATCH 36/50] Fix deadlock in MTRDeviceController suspend/resume. (#35526) If a resume happened before the async work from a suspend finished running on the Matter queue, we could deadlock: the Matter queue would be holding the device lock and try to acquire the lock to read "suspended" from the controller, while the controller would be holding the "suspended" lock and trying to acquire the device lock as part of synchronous resume work. The fix is to: 1) Stop trying to read the suspended state of the controller in MTRDevice_Concrete except during MTRDevice_Concrete initialization. Instead, store the suspended state directly in MTRDevice_Concrete at init time and update it when the controller notifies about suspend/resume. 2) Fix controller suspend/resume to guarantee that we create the device list snapshot and set our suspended state in one atomic operation, so that devices are either created before that op (and then end up in the list) or after it (and then pick up the new controller suspended state. 3) Remove the locking around controller suspend/resume, because it's proving hard to reason about. This will be replaced by something better once we figure out how threadsafety should work in controller API in general. In the meantime, suspend/resume on a given controller should only be done on a single serial queue. 4) Use an atomic for the suspended state, so reading it can be done from any thread/queue even without locking. --- .../Framework/CHIP/MTRDeviceController.mm | 71 ++++++++++--------- .../Framework/CHIP/MTRDevice_Concrete.mm | 16 +++-- 2 files changed, 49 insertions(+), 38 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 246955afdfd55b..2f40df76a7086d 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -154,7 +154,11 @@ @implementation MTRDeviceController { MTRP256KeypairBridge _signingKeypairBridge; MTRP256KeypairBridge _operationalKeypairBridge; - BOOL _suspended; + // For now, we just ensure that access to _suspended is atomic, but don't + // guarantee atomicity of the the entire suspend/resume operation. The + // expectation is that suspend/resume on a given controller happen on some + // specific queue, so can't race against each other. + std::atomic _suspended; // Counters to track assertion status and access controlled by the _assertionLock NSUInteger _keepRunningAssertionCounter; @@ -378,9 +382,7 @@ - (BOOL)isRunning - (BOOL)isSuspended { - @synchronized(self) { - return _suspended; - } + return _suspended; } - (void)_notifyDelegatesOfSuspendState @@ -397,48 +399,49 @@ - (void)suspend { MTR_LOG("%@ suspending", self); - @synchronized(self) { + NSArray * devicesToSuspend; + { + std::lock_guard lock(*self.deviceMapLock); + // Set _suspended under the device map lock. This guarantees that + // for any given device exactly one of two things is true: + // * It is in the snapshot we are creating + // * It is created after we have changed our _suspended state. _suspended = YES; + devicesToSuspend = [self.nodeIDToDeviceMap objectEnumerator].allObjects; + } - NSArray * devicesToSuspend; - { - std::lock_guard lock(*self.deviceMapLock); - devicesToSuspend = [self.nodeIDToDeviceMap objectEnumerator].allObjects; - } - - for (MTRDevice * device in devicesToSuspend) { - [device controllerSuspended]; - } - - // TODO: In the concrete class, consider what should happen with: - // - // * Active commissioning sessions (presumably close them?) - // * CASE sessions in general. - // * Possibly try to see whether we can change our fabric entry to not advertise and restart advertising. - - [self _notifyDelegatesOfSuspendState]; + for (MTRDevice * device in devicesToSuspend) { + [device controllerSuspended]; } + + // TODO: In the concrete class, consider what should happen with: + // + // * Active commissioning sessions (presumably close them?) + // * CASE sessions in general. + // * Possibly try to see whether we can change our fabric entry to not advertise and restart advertising. + [self _notifyDelegatesOfSuspendState]; } - (void)resume { MTR_LOG("%@ resuming", self); - @synchronized(self) { + NSArray * devicesToResume; + { + std::lock_guard lock(*self.deviceMapLock); + // Set _suspended under the device map lock. This guarantees that + // for any given device exactly one of two things is true: + // * It is in the snapshot we are creating + // * It is created after we have changed our _suspended state. _suspended = NO; + devicesToResume = [self.nodeIDToDeviceMap objectEnumerator].allObjects; + } - NSArray * devicesToResume; - { - std::lock_guard lock(*self.deviceMapLock); - devicesToResume = [self.nodeIDToDeviceMap objectEnumerator].allObjects; - } - - for (MTRDevice * device in devicesToResume) { - [device controllerResumed]; - } - - [self _notifyDelegatesOfSuspendState]; + for (MTRDevice * device in devicesToResume) { + [device controllerResumed]; } + + [self _notifyDelegatesOfSuspendState]; } - (BOOL)matchesPendingShutdownControllerWithOperationalCertificate:(nullable MTRCertificateDERBytes)operationalCertificate andRootCertificate:(nullable MTRCertificateDERBytes)rootCertificate diff --git a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm index 055c8a31ac45c5..64ba651f0ce192 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm @@ -62,6 +62,7 @@ @interface MTRDevice_Concrete () @property (nonatomic, readwrite) MTRDeviceState state; @property (nonatomic, readwrite, nullable) NSDate * estimatedStartTime; @property (nonatomic, readwrite, nullable, copy) NSNumber * estimatedSubscriptionLatency; +@property (nonatomic, readwrite, assign) BOOL suspended; @end @@ -395,6 +396,8 @@ - (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceControlle }]; } + self.suspended = controller.suspended; + MTR_LOG_DEBUG("%@ init with hex nodeID 0x%016llX", self, _nodeID.unsignedLongLongValue); } return self; @@ -719,8 +722,8 @@ - (BOOL)_subscriptionsAllowed { os_unfair_lock_assert_owner(&self->_lock); - // We should not allow a subscription for suspended controllers or device controllers over XPC. - return _deviceController.isSuspended == NO && ![_deviceController isKindOfClass:MTRDeviceControllerOverXPC.class]; + // We should not allow a subscription when we are suspended or for device controllers over XPC. + return self.suspended == NO && ![_deviceController isKindOfClass:MTRDeviceControllerOverXPC.class]; } - (void)_delegateAdded @@ -1290,7 +1293,7 @@ - (void)_doHandleSubscriptionReset:(NSNumber * _Nullable)retryDelay os_unfair_lock_assert_owner(&_lock); - if (_deviceController.isSuspended) { + if (self.suspended) { MTR_LOG("%@ ignoring expected subscription reset on controller suspend", self); return; } @@ -1378,7 +1381,6 @@ - (void)_reattemptSubscriptionNowIfNeededWithReason:(NSString *)reason } MTR_LOG("%@ reattempting subscription with reason %@", self, reason); - self.reattemptingSubscription = NO; [self _setupSubscriptionWithReason:reason]; } @@ -2302,6 +2304,10 @@ - (void)_setupSubscriptionWithReason:(NSString *)reason os_unfair_lock_assert_owner(&self->_lock); + // If we have a pending subscription reattempt, make sure it does not + // actually happen, since we are trying to do a subscription now. + self.reattemptingSubscription = NO; + if (![self _subscriptionsAllowed]) { MTR_LOG("%@ _setupSubscription: Subscriptions not allowed. Do not set up subscription (reason: %@)", self, reason); return; @@ -3991,6 +3997,7 @@ - (void)controllerSuspended [super controllerSuspended]; std::lock_guard lock(self->_lock); + self.suspended = YES; [self _resetSubscriptionWithReasonString:@"Controller suspended"]; // Ensure that any pre-existing resubscribe attempts we control don't try to @@ -4003,6 +4010,7 @@ - (void)controllerResumed [super controllerResumed]; std::lock_guard lock(self->_lock); + self.suspended = NO; if (![self _delegateExists]) { MTR_LOG("%@ ignoring controller resume: no delegates", self); From 9a6694fca3ee23ed4af5bfa168c4851e0dca00cf Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 11 Sep 2024 00:47:25 -0400 Subject: [PATCH 37/50] Add better logging when doing Matter frameworks controller suspend/resume. (#35520) --- src/darwin/Framework/CHIP/MTRDeviceController.mm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 2f40df76a7086d..dc36aeb694d1e7 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -410,6 +410,7 @@ - (void)suspend devicesToSuspend = [self.nodeIDToDeviceMap objectEnumerator].allObjects; } + MTR_LOG("%@ found %lu devices to suspend", self, static_cast(devicesToSuspend.count)); for (MTRDevice * device in devicesToSuspend) { [device controllerSuspended]; } @@ -437,6 +438,7 @@ - (void)resume devicesToResume = [self.nodeIDToDeviceMap objectEnumerator].allObjects; } + MTR_LOG("%@ found %lu devices to resume", self, static_cast(devicesToResume.count)); for (MTRDevice * device in devicesToResume) { [device controllerResumed]; } From edf1f6559658963fd196273fcbf88a51efebcb70 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 11 Sep 2024 01:46:11 -0400 Subject: [PATCH 38/50] Add documentation for adding a new libfuzzer fuzzer. (#35158) --- .github/.wordlist.txt | 1 + docs/testing/fuzz_testing.md | 108 ++++++++++++++++++++++++++++++++++- 2 files changed, 108 insertions(+), 1 deletion(-) diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt index c84d4038352101..f317901e450aa6 100644 --- a/.github/.wordlist.txt +++ b/.github/.wordlist.txt @@ -572,6 +572,7 @@ fsync ftd fullclean fuzzer +fuzzers fuzztest FW gbl diff --git a/docs/testing/fuzz_testing.md b/docs/testing/fuzz_testing.md index b7faeae463a10e..7660e18032ef9a 100644 --- a/docs/testing/fuzz_testing.md +++ b/docs/testing/fuzz_testing.md @@ -7,13 +7,119 @@ thousands of different inputs. - Fuzz testing is often done with sanitizers enabled; to catch memory errors and undefined behavior. -- The most commonly used fuzz testing frameworks for C/C++ are LibFuzzer and +- The most commonly used fuzz testing frameworks for C/C++ are libFuzzer and AFL. - [Google's FuzzTest](https://github.com/google/fuzztest) is a newer framework that simplifies writing fuzz tests with user-friendly APIs and offers more control over input generation. It also integrates seamlessly with Google Test (GTest). +## Fuzz testing with libFuzzer + +The following example demonstrates how to use libFuzzer to write a simple fuzz +test. Each fuzzer function is defined using +`LLVMFuzzerTestOneInput(const uint8_t * data, size_t len)`. + +The Fuzzer must be located in a Test Folder : `src/some_directory/tests/` + +``` +#include +#include + +/** + * @file + * This file describes a Fuzzer for ... + */ + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t * data, size_t len) +{ + + // Instantiate values as needed + // Call target function for the fuzzer with the fuzzing input (data and len) + + return 0; +} + +``` + +See +[FuzzBase38Decode.cpp](https://github.com/project-chip/connectedhomeip/blob/master/src/setup_payload/tests/FuzzBase38Decode.cpp) +for an example of a simple fuzz test. + +### Compiling and running + +- Add to `src/some_directory/tests/BUILD.gn` + + - Example + + ``` + import("${chip_root}/build/chip/fuzz_test.gni") + + if (enable_fuzz_test_targets) { + chip_fuzz_target("FuzzTargetName1") { + sources = [ "Fuzzer1.cpp" ] + public_deps = [ + // Dependencies go here. + ] + } + chip_fuzz_target("FuzzTargetName2") { + sources = [ "Fuzzer2.cpp" ] + public_deps = [ + // Dependencies go here. + ] + } + } + ``` + + - CHIP_FUZZ_TARGET : the name of the fuzz target + - SOURCES : file in the test folder containing the fuzzer + implementation + - PUBLIC_DEPS : Code Dependencies needed to build fuzzer + + - Another example: + [src/setup_payload/tests/BUILD.gn](https://github.com/project-chip/connectedhomeip/blob/b367512f519e5e109346e81a0d84fd85cd9192f7/src/setup_payload/tests/BUILD.gn#L43) + +- Add to `src/BUILD.gn` + + - Add the Fuzzing Target in this part of the code : + [src/BUILD.gn](https://github.com/project-chip/connectedhomeip/blob/b367512f519e5e109346e81a0d84fd85cd9192f7/BUILD.gn#L52) + + - Add Fuzzing Target like that + + ``` + if (enable_fuzz_test_targets) { + group("fuzz_tests") { + deps = [ + "${chip_root}/src/credentials/tests:fuzz-chip-cert", + "${chip_root}/src/lib/core/tests:fuzz-tlv-reader", + "${chip_root}/src/lib/dnssd/minimal_mdns/tests:fuzz-minmdns-packet-parsing", + "${chip_root}/src/lib/format/tests:fuzz-payload-decoder", + "${chip_root}/src/setup_payload/tests:fuzz-setup-payload-base38", + "${chip_root}/src/setup_payload/tests:fuzz-setup-payload-base38-decode", + // ADD HERE YOUR FUZZING TARGET + "${chip_root}/some_directory/tests:FuzzTargetName" + ] + } + } + ``` + +- Build all fuzzers + ``` + ./scripts/build/build_examples.py --target --tests-asan-libfuzzer-clang build + ``` + e.g. + ``` + ./scripts/build/build_examples.py --target darwin-arm64-tests-asan-libfuzzer-clang build + ``` + \*\* Make sure to put the right host and compiler +- Fuzzers binaries are compiled into: + + - `out/--tests-asan-libfuzzer-clang/tests` + - e.g. `darwin-arm64-tests-asan-libfuzzer-clang` + +- Running the fuzzer with a corpus + - `path_to_fuzzer_in_test_folder path_to_corpus` + ## `Google's FuzzTest` - Google FuzzTest is integrated through Pigweed From 4f25d84136a67f67c499dad237e9be567cf10fdd Mon Sep 17 00:00:00 2001 From: William Date: Wed, 11 Sep 2024 13:06:01 +0100 Subject: [PATCH 39/50] encourage the use of CopyCharSpanToMutableCharSpanWithTruncation (#35444) * Updated the service area documentation to encourage the use of CopyCharSpanToMutableCharSpanWithTruncation for memory safety. Updated the rvc-app example to use this method. * Restyled by whitespace --------- Co-authored-by: Restyled.io --- .../rvc-app/rvc-common/src/rvc-device.cpp | 6 ++--- .../src/rvc-service-area-delegate.cpp | 6 ++--- .../service-area-delegate.h | 23 +++++++++++-------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/examples/rvc-app/rvc-common/src/rvc-device.cpp b/examples/rvc-app/rvc-common/src/rvc-device.cpp index 88b8095ddf8bdd..02a75c51f56074 100644 --- a/examples/rvc-app/rvc-common/src/rvc-device.cpp +++ b/examples/rvc-app/rvc-common/src/rvc-device.cpp @@ -168,7 +168,7 @@ bool RvcDevice::SaIsSetSelectedAreasAllowed(MutableCharSpan & statusText) { if (mOperationalStateInstance.GetCurrentOperationalState() == to_underlying(OperationalState::OperationalStateEnum::kRunning)) { - CopyCharSpanToMutableCharSpan("cannot set the Selected Areas while the device is running"_span, statusText); + CopyCharSpanToMutableCharSpanWithTruncation("cannot set the Selected Areas while the device is running"_span, statusText); return false; } return true; @@ -179,14 +179,14 @@ bool RvcDevice::SaHandleSkipArea(uint32_t skippedArea, MutableCharSpan & skipSta if (mServiceAreaInstance.GetCurrentArea() != skippedArea) { // This device only supports skipping the current location. - CopyCharSpanToMutableCharSpan("the skipped area does not match the current area"_span, skipStatusText); + CopyCharSpanToMutableCharSpanWithTruncation("the skipped area does not match the current area"_span, skipStatusText); return false; } if (mOperationalStateInstance.GetCurrentOperationalState() != to_underlying(OperationalState::OperationalStateEnum::kRunning)) { // This device only accepts the skip are command while in the running state - CopyCharSpanToMutableCharSpan("skip area is only accepted when the device is running"_span, skipStatusText); + CopyCharSpanToMutableCharSpanWithTruncation("skip area is only accepted when the device is running"_span, skipStatusText); return false; } diff --git a/examples/rvc-app/rvc-common/src/rvc-service-area-delegate.cpp b/examples/rvc-app/rvc-common/src/rvc-service-area-delegate.cpp index b46206ec50ee75..1a6ba6d8c95999 100644 --- a/examples/rvc-app/rvc-common/src/rvc-service-area-delegate.cpp +++ b/examples/rvc-app/rvc-common/src/rvc-service-area-delegate.cpp @@ -134,7 +134,7 @@ bool RvcServiceAreaDelegate::IsValidSelectAreasSet(const Span & if (!GetInstance()->GetSupportedAreaById(selectedAreas[0], ignoredIndex, tempArea)) { areaStatus = SelectAreasStatus::kUnsupportedArea; - CopyCharSpanToMutableCharSpan("unable to find selected area in supported areas"_span, statusText); + CopyCharSpanToMutableCharSpanWithTruncation("unable to find selected area in supported areas"_span, statusText); return false; } @@ -145,14 +145,14 @@ bool RvcServiceAreaDelegate::IsValidSelectAreasSet(const Span & if (!GetInstance()->GetSupportedAreaById(areaId, ignoredIndex, tempArea)) { areaStatus = SelectAreasStatus::kUnsupportedArea; - CopyCharSpanToMutableCharSpan("unable to find selected area in supported areas"_span, statusText); + CopyCharSpanToMutableCharSpanWithTruncation("unable to find selected area in supported areas"_span, statusText); return false; } if (tempArea.mapID.Value() != mapId) { areaStatus = SelectAreasStatus::kInvalidSet; - CopyCharSpanToMutableCharSpan("all selected areas must be in the same map"_span, statusText); + CopyCharSpanToMutableCharSpanWithTruncation("all selected areas must be in the same map"_span, statusText); return false; } } diff --git a/src/app/clusters/service-area-server/service-area-delegate.h b/src/app/clusters/service-area-server/service-area-delegate.h index 3983e8d6ed7c25..f82f71fea31d13 100644 --- a/src/app/clusters/service-area-server/service-area-delegate.h +++ b/src/app/clusters/service-area-server/service-area-delegate.h @@ -55,9 +55,10 @@ class Delegate * @brief Can the selected locations be set by the client in the current operating mode? * @param[out] statusText text describing why the selected locations cannot be set (if return is false). * Max size kMaxSizeStatusText. - * Note: If the return is false and statusText is not successfully set, for example due to a string that can be longer than - * kMaxSizeStatusText, the size of this value should be set to 0 with .reduce_size(0) to avoid callers using un-initialized - * memory. + * Note: statusText must be successfully set if the return is false. Use CopyCharSpanToMutableCharSpanWithTruncation to + * ensure that a message is copied successfully. Otherwise, ensure that if setting the statusText can fail (e.g., due + * to exceeding kMaxSizeStatusText) the size of this value is set to 0 with .reduce_size(0) to avoid callers using + * un-initialized memory. * @return true if the current device state allows selected locations to be set by user. * * @note The statusText field SHOULD indicate why the request is not allowed, given the current mode @@ -77,9 +78,10 @@ class Delegate * @param[in] selectedAreas List of new selected locations. * @param[out] locationStatus Success if all checks pass, error code if failure. * @param[out] statusText text describing failure (see description above). Max size kMaxSizeStatusText. - * Note: If the return is false and statusText is not successfully set, for example due to a string that can be longer than - * kMaxSizeStatusText, the size of this value should be set to 0 with .reduce_size(0) to avoid callers using un-initialized - * memory. + * Note: statusText must be successfully set if the return is false. Use CopyCharSpanToMutableCharSpanWithTruncation to + * ensure that a message is copied successfully. Otherwise, ensure that if setting the statusText can fail (e.g., due + * to exceeding kMaxSizeStatusText) the size of this value is set to 0 with .reduce_size(0) to avoid callers using + * un-initialized memory. * @return true if success. * * @note If the SelectAreas command is allowed when the device is operating and the selected locations change to none, the @@ -93,9 +95,10 @@ class Delegate * calling this method. * @param[in] skippedArea the area ID to skip. * @param[out] skipStatusText text describing why the current location cannot be skipped. Max size kMaxSizeStatusText. - * Note: If the return is false and skipStatusText is not successfully set, for example due to a string that can be longer than - * kMaxSizeStatusText, the size of this value should be set to 0 with .reduce_size(0) to avoid callers using un-initialized - * memory. + * Note: skipStatusText must be successfully set if the return is false. Use CopyCharSpanToMutableCharSpanWithTruncation to + * ensure that a message is copied successfully. Otherwise, ensure that if setting the skipStatusText can fail (e.g., due + * to exceeding kMaxSizeStatusText) the size of this value is set to 0 with .reduce_size(0) to avoid callers using + * un-initialized memory. * @return true if command is successful, false if the received skip request cannot be handled due to the current mode of the * device. * @@ -120,7 +123,7 @@ class Delegate virtual bool HandleSkipArea(uint32_t skippedArea, MutableCharSpan & skipStatusText) { // device support of this command is optional - CopyCharSpanToMutableCharSpan("Skip Current Area command not supported by device"_span, skipStatusText); + CopyCharSpanToMutableCharSpanWithTruncation("Skip Current Area command not supported by device"_span, skipStatusText); return false; } From 4541956b589eb2200c4a7d357df8f30a0d980d3b Mon Sep 17 00:00:00 2001 From: Marius Tache <102153746+marius-alex-tache@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:27:47 +0300 Subject: [PATCH 40/50] [NXP] Add mcxw71 examples (#35514) * [nxp][platform][common] Add BLE related headers in common area Signed-off-by: marius-alex-tache (cherry picked from commit f67f7a16e42127badff01b8af84543810b81b3d7) * [nxp][examples][common] Add mcxw71/k32w1 references in common readme Signed-off-by: marius-alex-tache * [nxp][examples][mcxw71] Add lighting-app and contact-sensor-app Signed-off-by: marius-alex-tache [nxp noup][examples][mcxw71] Disable status led from BUILD.gn * CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR is not propagated in examples folder causing LED_MANAGER_ENABLE_STATUS_LED to always be se to 1. This makes the OTA fail due to status led and ext flash CS pin being wired together. Signed-off-by: Andrei Menzopol (cherry picked from commit 188301ab68c348c6ff2c0207b19fc0a7291a1b17) * [nxp][scripts] Add mcxw71 build_examples support Signed-off-by: marius-alex-tache * [nxp][docs][common] Update manufacturing flow * Update factory data write address to APP section * Add hw_params option info * Add reference command for k32w1 factory data generation * Update k32w1 related paths after removing parent folder k32w Signed-off-by: Andrei Menzopol (cherry picked from commit a2927b74419ed090595993447c40991befd7d6d6) * Add mcxw71 in workflow Signed-off-by: marius-alex-tache * [nxp][examples][mcxw71_k32w1] Rename app linker script Signed-off-by: marius-alex-tache * [nxp][examples][k32w1] Update reference to linker script Signed-off-by: marius-alex-tache * [nxp][examples][mcxw71] Remove k32w1 references Update instructions related to NBU flash. Signed-off-by: marius-alex-tache * Restyled by gn * Restyled by prettier-markdown * [nxp] Fix readme misspell errors Signed-off-by: marius-alex-tache * [nxp] Fix lighting app build gn import order Signed-off-by: marius-alex-tache --------- Signed-off-by: marius-alex-tache Co-authored-by: Restyled.io --- .github/workflows/examples-nxp.yaml | 54 ++++ docs/guides/nxp/nxp_manufacturing_flow.md | 16 +- examples/contact-sensor-app/nxp/README.md | 1 + examples/contact-sensor-app/nxp/mcxw71/.gn | 31 ++ .../contact-sensor-app/nxp/mcxw71/BUILD.gn | 260 +++++++++++++++++ .../contact-sensor-app/nxp/mcxw71/README.md | 194 +++++++++++++ .../contact-sensor-app/nxp/mcxw71/args.gni | 43 +++ .../nxp/mcxw71/build_overrides | 1 + .../nxp/mcxw71/include/config/AppConfig.h | 29 ++ .../mcxw71/include/config/CHIPProjectConfig.h | 233 +++++++++++++++ .../nxp/mcxw71/third_party/connectedhomeip | 1 + examples/lighting-app/nxp/README.md | 1 + examples/lighting-app/nxp/k32w1/BUILD.gn | 2 +- examples/lighting-app/nxp/k32w1/README.md | 6 +- examples/lighting-app/nxp/mcxw71/.gn | 31 ++ examples/lighting-app/nxp/mcxw71/BUILD.gn | 268 +++++++++++++++++ examples/lighting-app/nxp/mcxw71/README.md | 270 ++++++++++++++++++ examples/lighting-app/nxp/mcxw71/args.gni | 39 +++ .../lighting-app/nxp/mcxw71/build_overrides | 1 + .../nxp/mcxw71/include/config/AppConfig.h | 29 ++ .../mcxw71/include/config/CHIPProjectConfig.h | 235 +++++++++++++++ .../nxp/mcxw71/third_party/connectedhomeip | 1 + .../lighting-app/nxp/mcxw71/with_pw_rpc.gni | 37 +++ .../app/ldscripts/{k32w1_app.ld => app.ld} | 0 .../mcxw71_k32w1/doc/images/frdm-mcxw71.jpg | Bin 0 -> 922296 bytes .../mcxw71_k32w1/doc/images/mcxw71_debug.jpg | Bin 0 -> 68145 bytes .../doc/images/mcxw71_installed_sdks.jpg | Bin 0 -> 42462 bytes scripts/build/build/targets.py | 9 +- scripts/build/builders/nxp.py | 5 + .../build/testdata/all_targets_linux_x64.txt | 2 +- src/platform/nxp/common/legacy/gatt_db.h | 30 ++ src/platform/nxp/common/legacy/gatt_uuid128.h | 26 ++ 32 files changed, 1840 insertions(+), 15 deletions(-) create mode 100644 examples/contact-sensor-app/nxp/mcxw71/.gn create mode 100644 examples/contact-sensor-app/nxp/mcxw71/BUILD.gn create mode 100644 examples/contact-sensor-app/nxp/mcxw71/README.md create mode 100644 examples/contact-sensor-app/nxp/mcxw71/args.gni create mode 120000 examples/contact-sensor-app/nxp/mcxw71/build_overrides create mode 100644 examples/contact-sensor-app/nxp/mcxw71/include/config/AppConfig.h create mode 100644 examples/contact-sensor-app/nxp/mcxw71/include/config/CHIPProjectConfig.h create mode 120000 examples/contact-sensor-app/nxp/mcxw71/third_party/connectedhomeip create mode 100644 examples/lighting-app/nxp/mcxw71/.gn create mode 100644 examples/lighting-app/nxp/mcxw71/BUILD.gn create mode 100644 examples/lighting-app/nxp/mcxw71/README.md create mode 100644 examples/lighting-app/nxp/mcxw71/args.gni create mode 120000 examples/lighting-app/nxp/mcxw71/build_overrides create mode 100644 examples/lighting-app/nxp/mcxw71/include/config/AppConfig.h create mode 100644 examples/lighting-app/nxp/mcxw71/include/config/CHIPProjectConfig.h create mode 120000 examples/lighting-app/nxp/mcxw71/third_party/connectedhomeip create mode 100644 examples/lighting-app/nxp/mcxw71/with_pw_rpc.gni rename examples/platform/nxp/mcxw71_k32w1/app/ldscripts/{k32w1_app.ld => app.ld} (100%) create mode 100755 examples/platform/nxp/mcxw71_k32w1/doc/images/frdm-mcxw71.jpg create mode 100755 examples/platform/nxp/mcxw71_k32w1/doc/images/mcxw71_debug.jpg create mode 100755 examples/platform/nxp/mcxw71_k32w1/doc/images/mcxw71_installed_sdks.jpg create mode 100644 src/platform/nxp/common/legacy/gatt_db.h create mode 100644 src/platform/nxp/common/legacy/gatt_uuid128.h diff --git a/.github/workflows/examples-nxp.yaml b/.github/workflows/examples-nxp.yaml index 050751457645d4..d09e893f2909dd 100644 --- a/.github/workflows/examples-nxp.yaml +++ b/.github/workflows/examples-nxp.yaml @@ -140,6 +140,60 @@ jobs: if: ${{ !env.ACT }} with: platform-name: K32W1 + mcxw71: + name: MCXW71 + + env: + BUILD_TYPE: gn_k32w + + runs-on: ubuntu-latest + if: github.actor != 'restyled-io[bot]' + + container: + image: ghcr.io/project-chip/chip-build-nxp:71 + volumes: + - "/tmp/bloat_reports:/tmp/bloat_reports" + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Checkout submodules & Bootstrap + uses: ./.github/actions/checkout-submodules-and-bootstrap + with: + platform: nxp + extra-submodule-parameters: --recursive + + - name: Set up environment for size reports + uses: ./.github/actions/setup-size-reports + if: ${{ !env.ACT }} + with: + gh-context: ${{ toJson(github) }} + + - name: Build examples + run: | + scripts/run_in_build_env.sh "\ + ./scripts/build/build_examples.py \ + --target nxp-mcxw71-freertos-lighting \ + --target nxp-mcxw71-freertos-contact-sensor-low-power \ + build \ + --copy-artifacts-to out/artifacts \ + " + - name: Get lighting app size stats + run: | + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + nxp mcxw71+release light \ + out/artifacts/nxp-mcxw71-freertos-lighting/chip-mcxw71-light-example.elf \ + /tmp/bloat_reports/ + - name: Get contact sensor size stats + run: | + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + nxp mcxw71+release contact \ + out/artifacts/nxp-mcxw71-freertos-contact-sensor-low-power/chip-mcxw71-contact-example.elf \ + /tmp/bloat_reports/ + - name: Uploading Size Reports + uses: ./.github/actions/upload-size-reports + if: ${{ !env.ACT }} + with: + platform-name: MCXW71 rw61x: name: RW61X diff --git a/docs/guides/nxp/nxp_manufacturing_flow.md b/docs/guides/nxp/nxp_manufacturing_flow.md index cb8431cc3b3083..0551d43966f08e 100644 --- a/docs/guides/nxp/nxp_manufacturing_flow.md +++ b/docs/guides/nxp/nxp_manufacturing_flow.md @@ -132,6 +132,7 @@ Here is the interpretation of the **optional** parameters: --unique_id -> Unique id used for rotating device id generation --product_finish -> Visible finish of the product --product_primary_color -> Representative color of the visible parts of the product +--hw_params -> Use application factory data from Hardware Parameters component ``` ## 3. Write provisioning data @@ -144,15 +145,12 @@ DK6Programmer.exe -Y -V2 -s -P 1000000 -Y -p FLASH@0x9D600="factory_d ``` For **K32W1** platform, the binary needs to be written in the internal flash at -location given by `__MATTER_FACTORY_DATA_START`, using `JLink`: +location given by **0xFE080**, using `JLink`: ``` -loadfile factory_data.bin 0xf4000 +loadfile factory_data.bin 0xFE080 ``` -where `0xf4000` is the value of `__MATTER_FACTORY_DATA_START` in the -corresponding .map file (can be different if using a custom linker script). - For **RW61X** platform, the binary needs to be written in the internal flash at location given by `__MATTER_FACTORY_DATA_START`, using `JLink`: @@ -208,7 +206,7 @@ Also, demo **DAC**, **PAI** and **PAA** certificates needed in case Supported platforms: -- K32W1 - `src/plaftorm/nxp/k32w/k32w1/FactoryDataProviderImpl.h` +- K32W1 - `src/plaftorm/nxp/k32w1/FactoryDataProviderImpl.h` For platforms that have a secure subsystem (`SSS`), the DAC private key can be converted to an encrypted blob. This blob will overwrite the DAC private key in @@ -219,6 +217,12 @@ The application will check at initialization whether the DAC private key has been converted or not and convert it if needed. However, the conversion process should be done at manufacturing time for security reasons. +Reference factory data generation command: + +```shell +python3 ./scripts/tools/nxp/factory_data_generator/generate.py -i 10000 -s UXKLzwHdN3DZZLBaL2iVGhQi/OoQwIwJRQV4rpEalbA= -p 14014 -d 1000 --vid "0x1037" --pid "0xA221" --vendor_name "NXP Semiconductors" --product_name "Lighting app" --serial_num "12345678" --date "2023-01-01" --hw_version 1 --hw_version_str "1.0" --cert_declaration ./Chip-Test-CD-1037-A221.der --dac_cert ./Chip-DAC-NXP-1037-A221-Cert.der --dac_key ./Chip-DAC-NXP-1037-A221-Key.der --pai_cert ./Chip-PAI-NXP-1037-A221-Cert.der --spake2p_path ./out/spake2p --unique_id "00112233445566778899aabbccddeeff" --hw_params --out ./factory_data.bin +``` + There is no need for an extra binary. - Write factory data binary. diff --git a/examples/contact-sensor-app/nxp/README.md b/examples/contact-sensor-app/nxp/README.md index 473afb793f9700..133539e44ce3ec 100644 --- a/examples/contact-sensor-app/nxp/README.md +++ b/examples/contact-sensor-app/nxp/README.md @@ -24,6 +24,7 @@ The example is based on: ## Supported devices - [k32w1](k32w1/README.md) +- [mcxw71](mcxw71/README.md) ## Introduction diff --git a/examples/contact-sensor-app/nxp/mcxw71/.gn b/examples/contact-sensor-app/nxp/mcxw71/.gn new file mode 100644 index 00000000000000..146e2b9c27ec06 --- /dev/null +++ b/examples/contact-sensor-app/nxp/mcxw71/.gn @@ -0,0 +1,31 @@ +# Copyright (c) 2020-2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/build.gni") + +# The location of the build configuration file. +buildconfig = "${build_root}/config/BUILDCONFIG.gn" + +# CHIP uses angle bracket includes. +check_system_includes = true + +default_args = { + target_cpu = "arm" + target_os = "freertos" + + import("//args.gni") + + # Import default platform configs + import("${chip_root}/src/platform/nxp/mcxw71_k32w1/args.gni") +} diff --git a/examples/contact-sensor-app/nxp/mcxw71/BUILD.gn b/examples/contact-sensor-app/nxp/mcxw71/BUILD.gn new file mode 100644 index 00000000000000..02a0d7a78768dc --- /dev/null +++ b/examples/contact-sensor-app/nxp/mcxw71/BUILD.gn @@ -0,0 +1,260 @@ +# Copyright (c) 2021-2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") + +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni") + +import("${nxp_sdk_build_root}/${nxp_sdk_name}/${nxp_sdk_name}.gni") + +import("${chip_root}/src/app/icd/icd.gni") +import("${chip_root}/src/crypto/crypto.gni") +import("${chip_root}/src/platform/device.gni") +import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni") + +declare_args() { + # Setup discriminator as argument + setup_discriminator = 3840 + chip_with_diag_logs_demo = true +} + +assert(current_os == "freertos") +assert(target_os == "freertos") + +example_platform_dir = "${chip_root}/examples/platform/nxp/${nxp_platform}" +common_example_dir = "${chip_root}/examples/platform/nxp/common" + +mcxw71_k32w1_sdk("sdk") { + defines = [] + include_dirs = [] + sources = [] + + # Indicate the path to CHIPProjectConfig.h + include_dirs += [ "include/config" ] + + # Indicate the default path to FreeRTOSConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ] + + # Indicate the default path to OpenThreadConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ] + + include_dirs += [ + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/MCXW716C", + ] + + sources += [ + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/MCXW716C/clock_config.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/MCXW716C/pin_mux.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/app_services_init.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/board.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/board_comp.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/board_dcdc.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/board_extflash.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/board_lp.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/hardware_init.c", + ] + + if (is_debug) { + defines += [ "BUILD_RELEASE=0" ] + } else { + defines += [ "BUILD_RELEASE=1" ] + } + + defines += [ + "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}", + ] + + if (chip_key_storage == "littlefs") { + include_dirs += [ "${example_platform_dir}/board" ] + sources += [ + "${example_platform_dir}/board/peripherals.c", + "${example_platform_dir}/board/peripherals.h", + ] + } +} + +mcxw71_k32w1_executable("contact_sensor_app") { + output_name = "chip-mcxw71-contact-example" + + defines = [] + deps = [] + include_dirs = [] + sources = [] + + # Defines used by common code + defines += [ + "CONFIG_NET_L2_OPENTHREAD=1", + "CONFIG_NETWORK_LAYER_BLE=1", + "CONFIG_THREAD_DEVICE_TYPE=kThreadDeviceType_SleepyEndDevice", + "CONFIG_OPERATIONAL_KEYSTORE=1", + "EXTERNAL_FACTORY_DATA_PROVIDER_HEADER=\"platform/nxp/common/legacy/FactoryDataProvider.h\"", + ] + + if (chip_with_diag_logs_demo) { + defines += [ "CONFIG_DIAG_LOGS_DEMO=1" ] + } + + if (chip_with_low_power == 1) { + defines += [ "CONFIG_LOW_POWER=1" ] + } else { + defines += [ + "CONFIG_ENABLE_FEEDBACK=1", + "APP_QUEUE_TICKS_TO_WAIT=pdMS_TO_TICKS(10)", + ] + } + + # App common files + include_dirs += [ + "${common_example_dir}/app_task/include", + "${common_example_dir}/matter_button/include", + "${common_example_dir}/clusters/include", + "${common_example_dir}/device_callbacks/include", + "${common_example_dir}/device_manager/include", + "${common_example_dir}/diagnostic_logs/include", + "${common_example_dir}/factory_data/include", + "${common_example_dir}/led_widget/include", + "${common_example_dir}/low_power/include", + "${common_example_dir}/operational_keystore/include", + "${common_example_dir}/ui_feedback/include", + ] + + sources += [ + "${common_example_dir}/app_task/source/AppTaskBase.cpp", + "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp", + "${common_example_dir}/clusters/source/ZclCallbacks.cpp", + "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp", + "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp", + "${example_platform_dir}/factory_data/source/AppFactoryDataExample.cpp", + ] + + if (chip_with_low_power == 1) { + sources += [ "${common_example_dir}/low_power/source/LowPower.cpp" ] + } + + if (chip_with_factory_data == 1) { + include_dirs += [ "${chip_root}/src/platform/nxp/common/legacy" ] + deps += [ "${chip_root}/src/platform/nxp:nxp_factory_data" ] + } + + if (chip_enable_ota_requestor) { + defines += [ + "CONFIG_CHIP_OTA_IMAGE_PROCESSOR_HEADER=\"platform/nxp/common/legacy/OTAImageProcessorImpl.h\"", + + # The status LED and the external flash CS pin are wired together. The OTA image writing may fail if used together. + "LED_MANAGER_ENABLE_STATUS_LED=0", + ] + + include_dirs += [ "${common_example_dir}/ota_requestor/include" ] + sources += [ "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorMultiImage.cpp" ] + deps += [ "${chip_root}/src/platform/nxp:nxp_ota" ] + } + + if (chip_with_diag_logs_demo) { + sources += [ + "${common_example_dir}/diagnostic_logs/source/DiagnosticLogsDemo.cpp", + "${common_example_dir}/diagnostic_logs/source/DiagnosticLogsProviderDelegateImpl.cpp", + ] + } + + # Platform specific files + include_dirs += [ + "${example_platform_dir}/util", + "${example_platform_dir}/app/support", + "${example_platform_dir}/button", + ] + + sources += [ + "${example_platform_dir}/button/ButtonManager.cpp", + "${example_platform_dir}/clusters/Identify.cpp", + "${example_platform_dir}/operational_keystore/OperationalKeystore.cpp", + ] + + if (chip_enable_ota_requestor) { + sources += [ "${example_platform_dir}/ota/OtaUtils.cpp" ] + } + + include_dirs += [ + "include/config", + "../common/include", + ] + + sources += [ + "../common/AppTask.cpp", + "../common/DeviceCallbacks.cpp", + "../common/ZclCallbacks.cpp", + "../common/main.cpp", + ] + + if (chip_with_low_power == 0) { + sources += [ + "${common_example_dir}/ui_feedback/source/LedManager.cpp", + "${example_platform_dir}/util/LedOnOff.cpp", + ] + } + + deps += [ + "${chip_root}/examples/providers:device_info_provider", + "${chip_root}/src/platform/logging:default", + ] + + #lit and sit are using different zap files + if (chip_enable_icd_lit) { + deps += [ "${chip_root}/examples/contact-sensor-app/nxp/zap-lit/" ] + } else { + deps += [ "${chip_root}/examples/contact-sensor-app/nxp/zap-sit/" ] + } + + if (chip_openthread_ftd) { + deps += [ + "${openthread_root}:libopenthread-cli-ftd", + "${openthread_root}:libopenthread-ftd", + ] + } else { + deps += [ + "${openthread_root}:libopenthread-cli-mtd", + "${openthread_root}:libopenthread-mtd", + ] + } + + cflags = [ "-Wconversion" ] + + ldscript = "${nxp_sdk_root}/middleware/wireless/framework/Common/devices/kw45_k32w1/gcc/connectivity.ld" + + inputs = [ ldscript ] + + ldflags = [ + "-Wl,--defsym=__heap_size__=0", + "-Wl,--defsym=__stack_size__=0x480", + "-Wl,--defsym=lp_ram_lower_limit=0x04000000", + "-Wl,--defsym=lp_ram_upper_limit=0x2001C000", + "-Wl,-print-memory-usage", + "-Wl,--no-warn-rwx-segments", + "-T" + rebase_path(ldscript, root_build_dir), + ] + + if (chip_with_factory_data == 1) { + ldflags += [ "-Wl,--defsym=gUseFactoryData_d=1" ] + } + + output_dir = root_out_dir +} + +group("default") { + deps = [ ":contact_sensor_app" ] +} diff --git a/examples/contact-sensor-app/nxp/mcxw71/README.md b/examples/contact-sensor-app/nxp/mcxw71/README.md new file mode 100644 index 00000000000000..50d33e10e1b841 --- /dev/null +++ b/examples/contact-sensor-app/nxp/mcxw71/README.md @@ -0,0 +1,194 @@ +# Matter `MCXW71` Contact Sensor Example Application + +For generic information related to contact sensor application, please see the +[common README](../README.md). + +- [Matter `MCXW71` Contact Sensor Example Application](#matter-mcxw71-contact-sensor-example-application) + - [Introduction](#introduction) + - [Device UI](#device-ui) + - [Building](#building) + - [Flashing](#flashing) + - [Flashing the `NBU` image](#flashing-the-nbu-image) + - [Flashing the host image](#flashing-the-host-image) + - [Debugging](#debugging) + - [OTA](#ota) + +## Introduction + +This is a contact sensor application implemented for an `mcxw71` device. + +The following board was used when testing this Matter reference app for an +`mcxw71` device: +![FRDM-MCXW71](../../../platform/nxp/mcxw71_k32w1/doc/images/frdm-mcxw71.jpg) + +## Device UI + +The state feedback is provided through LED effects: + +| widget | effect | description | +| ------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------- | +| LED2 | short flash on (50ms on/950ms off) | The device is in an unprovisioned (unpaired) state and is waiting for a commissioner to connect. | +| LED2 | rapid even flashing (100ms period) | The device is in an unprovisioned state and a commissioner is connected via BLE. | +| LED2 | short flash off (950ms on/50ms off) | The device is fully provisioned, but does not yet have full network (Thread) or service connectivity. | +| LED2 | solid on | The device is fully provisioned and has full network and service connectivity. | +| RGB LED | on | The `StateValue` attribute of the `BooleanState` cluster is `true` (simulating detection). | +| RGB LED | off | The `StateValue` attribute of the `BooleanState` cluster is `false` (simulating no detection). | + +NOTE: `LED2` will be disabled when OTA is used. On `FRDM-MCXW71` board, `PTB0` +is wired to both `LED2` and CS (Chip Select) of the External Flash Memory. Since +the OTA image is stored in external memory, `LED2` operations will affect OTA +operation by corrupting packages and OTA will not work. + +The user actions are summarized below: + +| button | action | state | output | +| ------ | ----------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| SW2 | short press | not commissioned | Enable BLE advertising | +| SW2 | short press | commissioned + device is LIT | Enable Active Mode | +| SW2 | long press | NA | Initiate a factory reset (can be cancelled by pressing the button again within the factory reset timeout limit - 6 seconds by default) | +| SW3 | short press | NA | Toggle attribute `StateValue` value | +| SW3 | long press | NA | Clean soft reset of the device (takes into account proper Matter shutdown procedure) | + +## Building + +Manually building requires running the following commands: + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ cd examples/contact-sensor-app/nxp/mcxw71 +user@ubuntu:~/Desktop/git/connectedhomeip/examples/contact-sensor-app/nxp/mcxw71$ gn gen out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/contact-sensor-app/nxp/mcxw71$ ninja -C out/debug +``` + +Please note that running `gn gen out/debug` without `--args` option will use the +default gn args values found in `args.gni`. + +After a successful build, the `elf` and `srec` files are found in `out/debug/`. +See the files prefixed with `chip-mcxw71-contact-example`. + +## Flashing + +Two images must be written to the board: one for the host (CM33) and one for the +`NBU` (CM3). + +### Flashing the `NBU` image + +`NBU` image should be written only when a new NXP SDK is released. + +1. Install + [Secure Provisioning SDK tool](https://www.nxp.com/design/design-center/software/development-software/secure-provisioning-sdk-spsdk:SPSDK) + using Python: + + ``` + pip install spsdk + ``` + + Note: There might be some dependencies that cause conflicts with already + installed Python modules. However, `blhost` tool is still installed and can + be used. + +2. Updating `NBU` for Wireless examples + + It is necessary to work with the matching `NBU` image for the SDK version of + the application you are working with. This means that when you download your + SDK, prior to loading any wireless SDK example, update your `NBU` image with + the SDK provided binaries. For `FRDM` users, please write the following + binary: + + `middleware\wireless\ieee-802.15.4\bin\mcxw71\mcxw71_nbu_ble_15_4_dyn_matter_.sb3` + + Please note that `` may vary depending on the SDK version. + + 1. Place your device in `ISP` mode. + + - Make sure a jumper is placed on `JP25` + - Press and hold `SW4`, press and release Reset, then release `SW4` + + 2. Once the device is connected, you may find the assigned port by running: + + ``` + nxpdevscan + ``` + + 3. Run the `blhost` command to write the `sb3` file: + + ``` + blhost -p receive-sb-file \middleware\wireless\ieee-802.15.4\bin\mcxw71\mcxw71_nbu_ble_15_4_dyn_matter_.sb3 + ``` + +### Flashing the host image + +Host image is the one found under `out/debug/`. It should be written after each +build process. + +If debugging is needed then jump directly to the [Debugging](#debugging) +section. Otherwise, if only flashing is needed then +[JLink](https://www.segger.com/downloads/jlink/) can be used: + +- Plug `MCXW71` to the USB port (no need to keep the `SW4` button pressed + while doing this, e.g. ISP mode is not needed for host flashing) + +- Connect JLink to the device: + + ```bash + JLinkExe -device MCXW71 -if SWD -speed 4000 -autoconnect 1 + ``` + +- Run the following commands: + ```bash + reset + halt + loadfile chip-mcxw71-contact-example.srec + reset + go + quit + ``` + +## Debugging + +One option for debugging would be to use MCUXpresso IDE. + +- Drag-and-drop the zip file containing the NXP SDK in the "Installed SDKs" + tab: + +![Installed SDKs](../../../platform/nxp/mcxw71_k32w1/doc/images/mcxw71_installed_sdks.jpg) + +- Import any demo application from the installed SDK: + +``` +Import SDK example(s).. -> choose a demo app (demo_apps -> hello_world) -> Finish +``` + +![Import demo](../../../platform/nxp/mcxw71_k32w1/doc/images/import_demo.jpg) + +- Flash the previously imported demo application on the board: + +``` +Right click on the application (from Project Explorer) -> Debug as -> JLink/CMSIS-DAP +``` + +After this step, a debug configuration specific for the `MCXW71` board was +created. This debug configuration will be used later on for debugging the +application resulted after ot-nxp compilation. + +- Import Matter repo in MCUXpresso IDE as Makefile Project. Use _none_ as + _Toolchain for Indexer Settings_: + +``` +File -> Import -> C/C++ -> Existing Code as Makefile Project +``` + +![New Project](../../../platform/nxp/mcxw71_k32w1/doc/images/new_project.jpg) + +- Replace the path of the existing demo application with the path of the + `MCXW71` application: + +``` +Run -> Debug Configurations... -> C/C++ Application +``` + +![](../../../platform/nxp/mcxw71_k32w1/doc/images/mcxw71_debug.jpg) + +## OTA + +Please see +[mcxw71 OTA guide](../../../../docs/guides/nxp/nxp_mcxw71_ota_guide.md). diff --git a/examples/contact-sensor-app/nxp/mcxw71/args.gni b/examples/contact-sensor-app/nxp/mcxw71/args.gni new file mode 100644 index 00000000000000..72634a2308d04b --- /dev/null +++ b/examples/contact-sensor-app/nxp/mcxw71/args.gni @@ -0,0 +1,43 @@ +# Copyright (c) 2020-2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/chip.gni") +import("${chip_root}/config/standalone/args.gni") + +# SDK target. This is overridden to add our SDK app_config.h & defines. +nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain") +nxp_device = "MCXW716C" + +chip_enable_ota_requestor = true +chip_stack_lock_tracking = "fatal" +chip_enable_ble = true +chip_generate_link_map_file = true + +chip_system_config_provide_statistics = false +chip_system_config_use_open_thread_inet_endpoints = true +chip_with_lwip = false + +chip_enable_icd_server = true +chip_enable_icd_lit = false +icd_enforce_sit_slow_poll_limit = true +chip_persist_subscriptions = true +chip_subscription_timeout_resumption = true + +is_debug = false + +chip_crypto = "platform" +chip_openthread_ftd = false +chip_with_ot_cli = 0 + +chip_with_diag_logs_demo = true diff --git a/examples/contact-sensor-app/nxp/mcxw71/build_overrides b/examples/contact-sensor-app/nxp/mcxw71/build_overrides new file mode 120000 index 00000000000000..ee19c065d619a2 --- /dev/null +++ b/examples/contact-sensor-app/nxp/mcxw71/build_overrides @@ -0,0 +1 @@ +../../../build_overrides/ \ No newline at end of file diff --git a/examples/contact-sensor-app/nxp/mcxw71/include/config/AppConfig.h b/examples/contact-sensor-app/nxp/mcxw71/include/config/AppConfig.h new file mode 100644 index 00000000000000..0c8019d8e7e33c --- /dev/null +++ b/examples/contact-sensor-app/nxp/mcxw71/include/config/AppConfig.h @@ -0,0 +1,29 @@ +/* + * Copyright 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +/* ---- App Config ---- */ +#define APP_DEVICE_TYPE_ENDPOINT 1 +#define APP_CLUSTER_ATTRIBUTE chip::app::Clusters::BooleanState::Attributes::StateValue + +/* ---- Button Manager Config ---- */ +#define BUTTON_MANAGER_FACTORY_RESET_TIMEOUT_MS 6000 + +/* ---- LED Manager Config ---- */ +#define LED_MANAGER_STATUS_LED_INDEX 0 +#define LED_MANAGER_LIGHT_LED_INDEX 1 diff --git a/examples/contact-sensor-app/nxp/mcxw71/include/config/CHIPProjectConfig.h b/examples/contact-sensor-app/nxp/mcxw71/include/config/CHIPProjectConfig.h new file mode 100644 index 00000000000000..9e5cee6eb7b695 --- /dev/null +++ b/examples/contact-sensor-app/nxp/mcxw71/include/config/CHIPProjectConfig.h @@ -0,0 +1,233 @@ +/* + * Copyright (c) 2020-2023 Project CHIP Authors + * Copyright (c) 2020 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * Example project configuration file for CHIP. + * + * This is a place to put application or project-specific overrides + * to the default configuration values for general CHIP features. + * + */ + +#pragma once + +// Use hard-coded test certificates already embedded in generic chip code => set it to 0 +// Use real/development certificates => set it to 1 + file the provisioning section from +// the internal flash +#ifndef CONFIG_CHIP_LOAD_REAL_FACTORY_DATA +#define CONFIG_CHIP_LOAD_REAL_FACTORY_DATA 0 +#endif + +#if CONFIG_CHIP_LOAD_REAL_FACTORY_DATA + +// VID/PID for product => will be used by Basic Information Cluster +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0x1037 +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0xA401 + +// Set the following define to use the Certification Declaration from below and not use it stored in factory data section +#ifndef CHIP_USE_DEVICE_CONFIG_CERTIFICATION_DECLARATION +#define CHIP_USE_DEVICE_CONFIG_CERTIFICATION_DECLARATION 0 +#endif + +#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION +//-> format_version = 1 +//-> vendor_id = 0x1037 +//-> product_id_array = [ 0xA401 ] +//-> device_type_id = 0x0015 +//-> certificate_id = "ZIG20142ZB330003-24" +//-> security_level = 0 +//-> security_information = 0 +//-> version_number = 0x2694 +//-> certification_type = 1 +//-> dac_origin_vendor_id is not present +//-> dac_origin_product_id is not present +#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \ + { \ + 0x30, 0x81, 0xe7, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x81, 0xd9, 0x30, 0x81, 0xd6, \ + 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \ + 0x44, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x37, 0x04, 0x35, 0x15, 0x24, 0x00, \ + 0x01, 0x25, 0x01, 0x37, 0x10, 0x36, 0x02, 0x05, 0x01, 0xa4, 0x18, 0x24, 0x03, 0x15, 0x2c, 0x04, 0x13, 0x5a, 0x49, \ + 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, 0x24, 0x05, \ + 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x76, 0x98, 0x24, 0x08, 0x01, 0x18, 0x31, 0x7c, 0x30, 0x7a, 0x02, 0x01, 0x03, \ + 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, 0xf5, 0x04, \ + 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, 0x0a, 0x06, \ + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x46, 0x30, 0x44, 0x02, 0x20, 0x12, 0xec, 0x79, 0xdc, \ + 0x03, 0xd3, 0x4f, 0xf9, 0x79, 0xef, 0x56, 0x4e, 0x5b, 0x4f, 0xfc, 0xf5, 0xb1, 0x5a, 0xdb, 0xdf, 0xd9, 0xf8, 0x47, \ + 0xff, 0x81, 0xc3, 0x82, 0x2f, 0xa3, 0x2b, 0xb8, 0x3f, 0x02, 0x20, 0x53, 0x0d, 0x5d, 0xbd, 0xc6, 0xa4, 0x80, 0x67, \ + 0x1f, 0x10, 0xfb, 0xab, 0x00, 0x08, 0xee, 0x15, 0xa0, 0x6c, 0x40, 0x97, 0x55, 0x80, 0x28, 0x3e, 0xf3, 0xd9, 0x61, \ + 0x1f, 0x5b, 0x1d, 0x51, 0x02 \ + } + +// All remaining data will be pulled from the provisioning region of flash. +#endif + +#else + +/** + * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID + * + * 0xFFF1: Test vendor. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID + * + */ +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8006 + +// Use a default setup PIN code if one hasn't been provisioned in flash. +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 +#endif + +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 +#endif + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS" + +/** + * CHIP_DEVICE_CONFIG_TEST_SERIAL_NUMBER + * + * Enables the use of a hard-coded default serial number if none + * is found in CHIP NV storage. + */ +#define CHIP_DEVICE_CONFIG_TEST_SERIAL_NUMBER "TEST_SN" + +#endif // CONFIG_CHIP_LOAD_REAL_FACTORY_DATA + +/** + * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION + * + * 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 revision 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 versions. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100 + +#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0" +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING + * + * A string identifying the software version running on the device. + * CHIP currently expects the software version to be in the format + * {MAJOR_VERSION}.0d{MINOR_VERSION} + */ +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors" +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App" +#endif + +/** + * CHIP_DEVICE_CONFIG_BLE_FAST_ADVERTISING_TIMEOUT + * + * The amount of time in miliseconds after which BLE should change his advertisements + * from fast interval to slow interval. + * + * 30000 (30 secondes). + */ +#define CHIP_DEVICE_CONFIG_BLE_FAST_ADVERTISING_TIMEOUT (30 * 1000) + +/** + * CHIP_DEVICE_CONFIG_BLE_ADVERTISING_TIMEOUT + * + * The amount of time in miliseconds after which BLE advertisement should be disabled, counting + * from the moment of slow advertisement commencement. + * + * Defaults to 9000000 (15 minutes). + */ +#define CHIP_DEVICE_CONFIG_BLE_ADVERTISING_TIMEOUT (15 * 60 * 1000) + +/** + * CONFIG_CHIP_NFC_COMMISSIONING, CHIP_DEVICE_CONFIG_ENABLE_NFC + * + * NFC commissioning is not supported on K32W1 + */ +#define CONFIG_CHIP_NFC_COMMISSIONING 0 +#define CHIP_DEVICE_CONFIG_ENABLE_NFC 0 + +/** + * @def CHIP_CONFIG_MAX_FABRICS + * + * @brief + * Maximum number of fabrics the device can participate in. Each fabric can + * provision the device with its unique operational credentials and manage + * its own access control lists. + */ +#define CHIP_CONFIG_MAX_FABRICS 5 // 5 is the minimum number of supported fabrics + +#define CHIP_DEVICE_CONFIG_ENABLE_SED 1 + +/** + * @def CHIP_DEVICE_CONFIG_KVS_WEAR_STATS + * + * @brief Toggle support for key value store wear stats on or off. + */ +#define CHIP_DEVICE_CONFIG_KVS_WEAR_STATS 0 + +/** + * @def CHIP_IM_MAX_NUM_COMMAND_HANDLER + * + * @brief Defines the maximum number of CommandHandler, limits the number of active commands transactions on server. + */ +#define CHIP_IM_MAX_NUM_COMMAND_HANDLER 2 + +/** + * @def CHIP_IM_MAX_NUM_WRITE_HANDLER + * + * @brief Defines the maximum number of WriteHandler, limits the number of active write transactions on server. + */ +#define CHIP_IM_MAX_NUM_WRITE_HANDLER 2 + +/** + * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE + * + * For a development build, set the default importance of events to be logged as Debug. + * Since debug is the lowest importance level, this means all standard, critical, info and + * debug importance level vi events get logged. + */ +#if BUILD_RELEASE +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production +#else +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug +#endif // BUILD_RELEASE + +#define CHIP_DEVICE_CONFIG_ENABLE_EXTENDED_DISCOVERY 1 + +#if CONFIG_DIAG_LOGS_DEMO +#define CHIP_CONFIG_ENABLE_BDX_LOG_TRANSFER 1 +#define CHIP_DEVICE_CONFIG_MAX_DIAG_LOG_SIZE 1024 +#endif diff --git a/examples/contact-sensor-app/nxp/mcxw71/third_party/connectedhomeip b/examples/contact-sensor-app/nxp/mcxw71/third_party/connectedhomeip new file mode 120000 index 00000000000000..59307833b4fee9 --- /dev/null +++ b/examples/contact-sensor-app/nxp/mcxw71/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../.. \ No newline at end of file diff --git a/examples/lighting-app/nxp/README.md b/examples/lighting-app/nxp/README.md index 74d0f9dc294813..67444a99e1bf8d 100644 --- a/examples/lighting-app/nxp/README.md +++ b/examples/lighting-app/nxp/README.md @@ -22,6 +22,7 @@ The example is based on: ## Supported devices - [k32w1](k32w1/README.md) +- [mcxw71](mcxw71/README.md) ## Introduction diff --git a/examples/lighting-app/nxp/k32w1/BUILD.gn b/examples/lighting-app/nxp/k32w1/BUILD.gn index 9544ca8486a2ff..541c288dd1eb5c 100644 --- a/examples/lighting-app/nxp/k32w1/BUILD.gn +++ b/examples/lighting-app/nxp/k32w1/BUILD.gn @@ -236,7 +236,7 @@ mcxw71_k32w1_executable("light_app") { } if (use_smu2_static) { - ldscript = "${example_platform_dir}/app/ldscripts/k32w1_app.ld" + ldscript = "${example_platform_dir}/app/ldscripts/app.ld" base_ldscript_dir = "${nxp_sdk_root}/middleware/wireless/framework/Common/devices/kw45_k32w1/gcc" } else { ldscript = "${nxp_sdk_root}/middleware/wireless/framework/Common/devices/kw45_k32w1/gcc/connectivity.ld" diff --git a/examples/lighting-app/nxp/k32w1/README.md b/examples/lighting-app/nxp/k32w1/README.md index ab54aab153e272..c47449bf249490 100644 --- a/examples/lighting-app/nxp/k32w1/README.md +++ b/examples/lighting-app/nxp/k32w1/README.md @@ -78,9 +78,9 @@ and global variables in the shared memory area from `NBU` domain. Note: These instances and global variables are placed in `SMU2` memory through name matching in the application linker script. They should not be changed or, -if changed, the names must be updated in `k32w1_app.ld`. See -[k32w1_app.ld](../../../platform/nxp/k32w1/app/ldscripts/k32w1_app.ld) for names -and `SMU2` memory range size. +if changed, the names must be updated in `app.ld`. See +[app.ld](../../../platform/nxp/mcxw71_k32w1/app/ldscripts/app.ld) for names and +`SMU2` memory range size. When compiling the application as an OT Full Thread Device (`chip_openthread_ftd=true`), using `use_smu2_static=true` gn arg will cause the diff --git a/examples/lighting-app/nxp/mcxw71/.gn b/examples/lighting-app/nxp/mcxw71/.gn new file mode 100644 index 00000000000000..146e2b9c27ec06 --- /dev/null +++ b/examples/lighting-app/nxp/mcxw71/.gn @@ -0,0 +1,31 @@ +# Copyright (c) 2020-2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/build.gni") + +# The location of the build configuration file. +buildconfig = "${build_root}/config/BUILDCONFIG.gn" + +# CHIP uses angle bracket includes. +check_system_includes = true + +default_args = { + target_cpu = "arm" + target_os = "freertos" + + import("//args.gni") + + # Import default platform configs + import("${chip_root}/src/platform/nxp/mcxw71_k32w1/args.gni") +} diff --git a/examples/lighting-app/nxp/mcxw71/BUILD.gn b/examples/lighting-app/nxp/mcxw71/BUILD.gn new file mode 100644 index 00000000000000..34733584a80cd9 --- /dev/null +++ b/examples/lighting-app/nxp/mcxw71/BUILD.gn @@ -0,0 +1,268 @@ +# Copyright (c) 2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/chip.gni") +import("//build_overrides/nxp_sdk.gni") +import("//build_overrides/openthread.gni") + +import("${nxp_sdk_build_root}/nxp_sdk.gni") + +import("${nxp_sdk_build_root}/${nxp_sdk_name}/nxp_executable.gni") + +import("${nxp_sdk_build_root}/${nxp_sdk_name}/${nxp_sdk_name}.gni") + +import("${chip_root}/src/crypto/crypto.gni") +import("${chip_root}/src/platform/device.gni") +import("${chip_root}/src/platform/nxp/${nxp_platform}/args.gni") + +import("${chip_root}/examples/common/pigweed/pigweed_rpcs.gni") + +if (chip_enable_pw_rpc) { + import("//build_overrides/pigweed.gni") + import("$dir_pw_build/target_types.gni") + import("${chip_root}/examples/platform/nxp/pw_rpc_server.gni") +} + +declare_args() { + # Setup discriminator as argument + setup_discriminator = 3840 +} + +assert(current_os == "freertos") +assert(target_os == "freertos") + +example_platform_dir = "${chip_root}/examples/platform/nxp/${nxp_platform}" +common_example_dir = "${chip_root}/examples/platform/nxp/common" + +mcxw71_k32w1_sdk("sdk") { + defines = [] + include_dirs = [] + sources = [] + + # Indicate the path to CHIPProjectConfig.h + include_dirs += [ "include/config" ] + + # Indicate the default path to FreeRTOSConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/freeRTOS" ] + + # Indicate the default path to OpenThreadConfig.h + include_dirs += [ "${example_platform_dir}/app/project_include/openthread" ] + + include_dirs += [ + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/MCXW716C", + ] + + sources += [ + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/MCXW716C/clock_config.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/MCXW716C/pin_mux.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/app_services_init.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/board.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/board_comp.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/board_dcdc.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/board_extflash.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/board_lp.c", + "${nxp_sdk_root}/middleware/wireless/framework/boards/kw45_k32w1/hardware_init.c", + ] + + if (is_debug) { + defines += [ "BUILD_RELEASE=0" ] + } else { + defines += [ "BUILD_RELEASE=1" ] + } + + if (chip_enable_pw_rpc) { + defines += [ + "CONFIG_ENABLE_PW_RPC", + "STREAMER_UART_FLUSH_DELAY_MS=0", + "STREAMER_UART_SERIAL_MANAGER_RING_BUFFER_SIZE=512", + "BOARD_APP_UART_CLK_FREQ=96000000", + ] + } + + defines += [ + "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR=${setup_discriminator}", + ] + + if (chip_key_storage == "littlefs") { + include_dirs += [ "${example_platform_dir}/board" ] + sources += [ + "${example_platform_dir}/board/peripherals.c", + "${example_platform_dir}/board/peripherals.h", + ] + } +} + +mcxw71_k32w1_executable("light_app") { + output_name = "chip-mcxw71-light-example" + + defines = [] + deps = [] + sources = [] + + if (chip_enable_pw_rpc) { + forward_variables_from(pw_rpc_server, "*") + } else { + include_dirs = [] + cflags = [ "-Wconversion" ] + } + + # Defines used by common code + defines += [ + "CONFIG_NET_L2_OPENTHREAD=1", + "CONFIG_NETWORK_LAYER_BLE=1", + "CONFIG_OPERATIONAL_KEYSTORE=1", + "CONFIG_ENABLE_FEEDBACK=1", + "APP_QUEUE_TICKS_TO_WAIT=pdMS_TO_TICKS(10)", + "EXTERNAL_FACTORY_DATA_PROVIDER_HEADER=\"platform/nxp/common/legacy/FactoryDataProvider.h\"", + ] + + # App common files + include_dirs += [ + "${common_example_dir}/app_task/include", + "${common_example_dir}/matter_button/include", + "${common_example_dir}/clusters/include", + "${common_example_dir}/device_callbacks/include", + "${common_example_dir}/device_manager/include", + "${common_example_dir}/factory_data/include", + "${common_example_dir}/led_widget/include", + "${common_example_dir}/operational_keystore/include", + "${common_example_dir}/rpc/include", + "${common_example_dir}/ui_feedback/include", + ] + + sources += [ + "${common_example_dir}/app_task/source/AppTaskBase.cpp", + "${common_example_dir}/app_task/source/AppTaskFreeRTOS.cpp", + "${common_example_dir}/clusters/source/ZclCallbacks.cpp", + "${common_example_dir}/device_callbacks/source/CommonDeviceCallbacks.cpp", + "${common_example_dir}/device_manager/source/CHIPDeviceManager.cpp", + "${example_platform_dir}/factory_data/source/AppFactoryDataExample.cpp", + ] + + if (chip_enable_ota_requestor) { + defines += [ + "CONFIG_CHIP_OTA_IMAGE_PROCESSOR_HEADER=\"platform/nxp/common/legacy/OTAImageProcessorImpl.h\"", + + # The status LED and the external flash CS pin are wired together. The OTA image writing may fail if used together. + "LED_MANAGER_ENABLE_STATUS_LED=0", + ] + + include_dirs += [ "${common_example_dir}/ota_requestor/include" ] + sources += [ "${common_example_dir}/ota_requestor/source/OTARequestorInitiatorMultiImage.cpp" ] + deps += [ "${chip_root}/src/platform/nxp:nxp_ota" ] + } + + # Platform specific files + include_dirs += [ + "${example_platform_dir}/util", + "${example_platform_dir}/app/support", + "${example_platform_dir}/button", + ] + + sources += [ + "${example_platform_dir}/button/ButtonManager.cpp", + "${example_platform_dir}/clusters/Identify.cpp", + "${example_platform_dir}/operational_keystore/OperationalKeystore.cpp", + ] + + if (chip_enable_ota_requestor) { + sources += [ "${example_platform_dir}/ota/OtaUtils.cpp" ] + } + + if (chip_enable_pw_rpc) { + sources += [ "${example_platform_dir}/rpc/AppRpc.cpp" ] + } + + if (chip_with_factory_data == 1) { + include_dirs += [ "${chip_root}/src/platform/nxp/common/legacy" ] + deps += [ "${chip_root}/src/platform/nxp:nxp_factory_data" ] + } + + sources += [ + "../common/AppTask.cpp", + "../common/DeviceCallbacks.cpp", + "../common/main.cpp", + ] + + include_dirs += [ + "../common", + "../common/include", + "include/config", + ] + + deps += [ + "${chip_root}/examples/providers:device_info_provider", + "${chip_root}/src/platform/logging:default", + ] + + if (chip_config_dimmable_led) { + defines += [ "LIGHTING_MANAGER_ENABLE_DIMMABLE_LED=1" ] + sources += [ + "${common_example_dir}/led_widget/include/LedDimmer.h", + "${example_platform_dir}/util/LedDimmer.cpp", + "${example_platform_dir}/util/LightingManagerDimmable.cpp", + ] + deps += [ "${chip_root}/examples/lighting-app/lighting-common/" ] + } else { + sources += [ + "${common_example_dir}/ui_feedback/source/LedManager.cpp", + "${example_platform_dir}/util/LedOnOff.cpp", + ] + deps += [ "${chip_root}/examples/lighting-app/nxp/zap/" ] + } + + if (chip_openthread_ftd) { + deps += [ + "${openthread_root}:libopenthread-cli-ftd", + "${openthread_root}:libopenthread-ftd", + ] + } else { + deps += [ + "${openthread_root}:libopenthread-cli-mtd", + "${openthread_root}:libopenthread-mtd", + ] + } + + if (use_smu2_static) { + ldscript = "${example_platform_dir}/app/ldscripts/app.ld" + base_ldscript_dir = "${nxp_sdk_root}/middleware/wireless/framework/Common/devices/kw45_k32w1/gcc" + } else { + ldscript = "${nxp_sdk_root}/middleware/wireless/framework/Common/devices/kw45_k32w1/gcc/connectivity.ld" + } + + inputs = [ ldscript ] + + ldflags = [ + "-Wl,--defsym=__heap_size__=0", + "-Wl,--defsym=__stack_size__=0x480", + "-Wl,-print-memory-usage", + "-Wl,--no-warn-rwx-segments", + "-T" + rebase_path(ldscript, root_build_dir), + ] + + if (chip_with_factory_data == 1) { + ldflags += [ "-Wl,--defsym=gUseFactoryData_d=1" ] + } + + if (use_smu2_static) { + ldflags += [ "-L" + rebase_path(base_ldscript_dir, root_build_dir) ] + } + + output_dir = root_out_dir +} + +group("default") { + deps = [ ":light_app" ] +} diff --git a/examples/lighting-app/nxp/mcxw71/README.md b/examples/lighting-app/nxp/mcxw71/README.md new file mode 100644 index 00000000000000..116fd6183e197d --- /dev/null +++ b/examples/lighting-app/nxp/mcxw71/README.md @@ -0,0 +1,270 @@ +# Matter `MCXW71` Lighting Example Application + +For generic information related to on/off light application, please see the +[common README](../README.md). + +- [Matter `MCXW71` Lighting Example Application](#matter-mcxw71-lighting-example-application) + - [Introduction](#introduction) + - [Device UI](#device-ui) + - [Building](#building) + - [`SMU2` Memory](#smu2-memory) + - [LED PWM](#led-pwm) + - [Flashing](#flashing) + - [Flashing the `NBU` image](#flashing-the-nbu-image) + - [Flashing the host image](#flashing-the-host-image) + - [Debugging](#debugging) + - [Running RPC console](#running-rpc-console) + - [OTA](#ota) + +## Introduction + +This is an on/off lighting application implemented for an `mcxw71` device. + +The following board was used when testing this Matter reference app for a +`mcxw71` device: +![FRDM-MCXW71](../../../platform/nxp/mcxw71_k32w1/doc/images/frdm-mcxw71.jpg) + +## Device UI + +The state feedback is provided through LED effects: + +| widget | effect | description | +| ------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------- | +| LED2 | short flash on (50ms on/950ms off) | The device is in an unprovisioned (unpaired) state and is waiting for a commissioner to connect. | +| LED2 | rapid even flashing (100ms period) | The device is in an unprovisioned state and a commissioner is connected via BLE. | +| LED2 | short flash off (950ms on/50ms off) | The device is fully provisioned, but does not yet have full network (Thread) or service connectivity. | +| LED2 | solid on | The device is fully provisioned and has full network and service connectivity. | +| RGB LED | on | The `OnOff` attribute of the `On/Off` cluster is `true` (simulating device turned on). | +| RGB LED | off | The `OnOff` attribute of the `On/Off` cluster is `false` (simulating device turned off). | + +NOTE: `LED2` will be disabled when OTA is used. On `FRDM-MCXW71` board, `PTB0` +is wired to both `LED2` and CS (Chip Select) of the External Flash Memory. Since +the OTA image is stored in external memory, `LED2` operations will affect OTA +operation by corrupting packages and OTA will not work. + +The user actions are summarized below: + +| button | action | output | +| ------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| SW2 | short press | Enable BLE advertising | +| SW2 | long press | Initiate a factory reset (can be cancelled by pressing the button again within the factory reset timeout limit - 6 seconds by default) | +| SW3 | short press | Toggle attribute `OnOff` value | +| SW3 | long press | Clean soft reset of the device (takes into account proper Matter shutdown procedure) | + +The example application provides a simple UI that depicts the state of the +device and offers basic user control. This UI is implemented via the +general-purpose LEDs and buttons built in the `MCXW71` board. + +## Building + +Manually building requires running the following commands: + +``` +user@ubuntu:~/Desktop/git/connectedhomeip$ cd examples/lighting-app/nxp/mcxw71 +user@ubuntu:~/Desktop/git/connectedhomeip/examples/lighting-app/nxp/mcxw71$ gn gen out/debug +user@ubuntu:~/Desktop/git/connectedhomeip/examples/lighting-app/nxp/mcxw71$ ninja -C out/debug +``` + +Please note that running `gn gen out/debug` without `--args` option will use the +default gn args values found in `args.gni`. + +After a successful build, the `elf` and `srec` files are found in `out/debug/`. +See the files prefixed with `chip-mcxw71-light-example`. + +### `SMU2` Memory + +Additional memory is provided to the application by moving some Matter instances +and global variables in the shared memory area from `NBU` domain. + +Note: These instances and global variables are placed in `SMU2` memory through +name matching in the application linker script. They should not be changed or, +if changed, the names must be updated in `app.ld`. See +[app.ld](../../../platform/nxp/mcxw71_k32w1/app/ldscripts/app.ld) for names and +`SMU2` memory range size. + +When compiling the application as an OT Full Thread Device +(`chip_openthread_ftd=true`), using `use_smu2_static=true` gn arg will cause the +following symbols to be moved to `SMU2` area: + +| symbol name | file | +| ----------------------------------- | ---------------------------- | +| `gImageProcessor` | `OTAImageProcessorImpl.cpp` | +| `gApplicationProcessor` | `OTAHooks.cpp` | +| `Server::sServer` | `Server.cpp` | +| `ThreadStackManagerImpl::sInstance` | `ThreadStackManagerImpl.cpp` | + +Additionally, using `use_smu2_dynamic=true` will cause the OpenThread buffers to +be dynamically allocated from a 13KB `SMU2` range after a successful +commissioning process. + +`use_smu2_static` and `use_smu2_dynamic` are set to `true` in the default +example. + +### LED PWM + +In the default configuration, the onboard RGB LED pins are configured as GPIO +pins. In order to enable the dimming feature, the pins need to be configured in +PWM mode and synced with channels of the `TPM` (Timer PWM Module). To enable +this feature, compile the application with: `chip_config_dimmable_led=true` + +If the feature is enabled, the LED brightness can be controlled using +`LevelControl` cluster +[commands](../../../../docs/guides/chip_tool_guide.md#step-7-control-application-data-model-clusters). + +## Flashing + +Two images must be written to the board: one for the host (CM33) and one for the +`NBU` (CM3). + +The image needed on the host side is the one generated in `out/debug/` while the +one needed on the `NBU` side can be found in the downloaded NXP-SDK package at +path - +`middleware\wireless\ieee-802.15.4\bin\k32w1\k32w1_nbu_ble_15_4_dyn_matter.sb3`. + +### Flashing the `NBU` image + +`NBU` image should be written only when a new NXP SDK is released. + +1. Install + [Secure Provisioning SDK tool](https://www.nxp.com/design/design-center/software/development-software/secure-provisioning-sdk-spsdk:SPSDK) + using Python: + + ``` + pip install spsdk + ``` + + Note: There might be some dependencies that cause conflicts with already + installed Python modules. However, `blhost` tool is still installed and can + be used. + +2. Updating `NBU` for Wireless examples + + It is necessary to work with the matching `NBU` image for the SDK version of + the application you are working with. This means that when you download your + SDK, prior to loading any wireless SDK example, update your `NBU` image with + the SDK provided binaries. For `FRDM` users, please write the following + binary: + + `middleware\wireless\ieee-802.15.4\bin\mcxw71\mcxw71_nbu_ble_15_4_dyn_matter_.sb3` + + Please note that `` may vary depending on the SDK version. + + 1. Place your device in `ISP` mode. + + - Make sure a jumper is placed on `JP25` + - Press and hold `SW4`, press and release Reset, then release `SW4` + + 2. Once the device is connected, you may find the assigned port by running: + + ``` + nxpdevscan + ``` + + 3. Run the `blhost` command to write the `sb3` file: + + ``` + blhost -p receive-sb-file \middleware\wireless\ieee-802.15.4\bin\mcxw71\mcxw71_nbu_ble_15_4_dyn_matter_.sb3 + ``` + +### Flashing the host image + +Host image is the one found under `out/debug/`. It should be written after each +build process. + +If debugging is needed then jump directly to the [Debugging](#debugging) +section. Otherwise, if only flashing is needed then +[JLink](https://www.segger.com/downloads/jlink/) can be used: + +- Plug `MCXW71` to the USB port (no need to keep the `SW4` button pressed + while doing this, e.g. ISP mode is not needed for host flashing) + +- Connect JLink to the device: + + ```bash + JLinkExe -device MCXW71 -if SWD -speed 4000 -autoconnect 1 + ``` + +- Run the following commands: + ```bash + reset + halt + loadfile chip-mcxw71-light-example.srec + reset + go + quit + ``` + +## Debugging + +One option for debugging would be to use MCUXpresso IDE. + +- Drag-and-drop the zip file containing the NXP SDK in the "Installed SDKs" + tab: + +![Installed SDKs](../../../platform/nxp/mcxw71_k32w1/doc/images/mcxw71_installed_sdks.jpg) + +- Import any demo application from the installed SDK: + +``` +Import SDK example(s).. -> choose a demo app (demo_apps -> hello_world) -> Finish +``` + +![Import demo](../../../platform/nxp/mcxw71_k32w1/doc/images/import_demo.jpg) + +- Flash the previously imported demo application on the board: + +``` +Right click on the application (from Project Explorer) -> Debug as -> JLink/CMSIS-DAP +``` + +After this step, a debug configuration specific for the `MCXW71` board was +created. This debug configuration will be used later on for debugging the +application resulted after ot-nxp compilation. + +- Import Matter repo in MCUXpresso IDE as Makefile Project. Use _none_ as + _Toolchain for Indexer Settings_: + +``` +File -> Import -> C/C++ -> Existing Code as Makefile Project +``` + +![New Project](../../../platform/nxp/mcxw71_k32w1/doc/images/new_project.jpg) + +- Replace the path of the existing demo application with the path of the + `MCXW71` application: + +``` +Run -> Debug Configurations... -> C/C++ Application +``` + +![Debug MCXW71](../../../platform/nxp/mcxw71_k32w1/doc/images/mcxw71_debug.jpg) + +## Running RPC console + +To build example with RPC enabled, use the following gn command: +`gn gen out/debug --args='import("//with_pw_rpc.gni") treat_warnings_as_errors=false'` + +The application runs an RPC server and processes events coming from an RPC +client. An example of an RPC client is the `chip-console`, which can be accessed +by running: +`chip-console --device /dev/tty. -b 115200 -o pw_log.out` + +The console should have already been installed in the virtual environment. From +the `chip-console`, a user can send specific commands to the device. + +For button commands, please run `rpcs.chip.rpc.Button.Event(index)` based on the +table below: + +| index | action | +| ----- | --------------------------------------------- | +| 0 | Start/stop BLE advertising | +| 1 | Factory reset the device | +| 2 | Application specific action (e.g. toggle LED) | +| 3 | Soft reset the device | + +To reboot the device, please run `rpcs.chip.rpc.Device.Reboot()`. + +## OTA + +Please see +[mcxw71 OTA guide](../../../../docs/guides/nxp/nxp_mcxw71_ota_guide.md). diff --git a/examples/lighting-app/nxp/mcxw71/args.gni b/examples/lighting-app/nxp/mcxw71/args.gni new file mode 100644 index 00000000000000..6a27d6605ea2b8 --- /dev/null +++ b/examples/lighting-app/nxp/mcxw71/args.gni @@ -0,0 +1,39 @@ +# Copyright (c) 2020-2024 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build_overrides/chip.gni") +import("${chip_root}/config/standalone/args.gni") + +# SDK target. This is overridden to add our SDK app_config.h & defines. +nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain") +nxp_device = "MCXW716C" + +chip_config_dimmable_led = false +chip_enable_ota_requestor = true +chip_stack_lock_tracking = "fatal" +chip_enable_ble = true +chip_generate_link_map_file = true + +is_debug = false + +chip_crypto = "platform" +chip_openthread_ftd = true +chip_with_ot_cli = 0 + +chip_system_config_provide_statistics = false +chip_system_config_use_open_thread_inet_endpoints = true +chip_with_lwip = false + +use_smu2_static = true +use_smu2_dynamic = true diff --git a/examples/lighting-app/nxp/mcxw71/build_overrides b/examples/lighting-app/nxp/mcxw71/build_overrides new file mode 120000 index 00000000000000..ee19c065d619a2 --- /dev/null +++ b/examples/lighting-app/nxp/mcxw71/build_overrides @@ -0,0 +1 @@ +../../../build_overrides/ \ No newline at end of file diff --git a/examples/lighting-app/nxp/mcxw71/include/config/AppConfig.h b/examples/lighting-app/nxp/mcxw71/include/config/AppConfig.h new file mode 100644 index 00000000000000..6dcccf749bbebe --- /dev/null +++ b/examples/lighting-app/nxp/mcxw71/include/config/AppConfig.h @@ -0,0 +1,29 @@ +/* + * Copyright 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +/* ---- App Config ---- */ +#define APP_DEVICE_TYPE_ENDPOINT 1 +#define APP_CLUSTER_ATTRIBUTE chip::app::Clusters::OnOff::Attributes::OnOff + +/* ---- Button Manager Config ---- */ +#define BUTTON_MANAGER_FACTORY_RESET_TIMEOUT_MS 6000 + +/* ---- LED Manager Config ---- */ +#define LED_MANAGER_STATUS_LED_INDEX 0 +#define LED_MANAGER_LIGHT_LED_INDEX 1 diff --git a/examples/lighting-app/nxp/mcxw71/include/config/CHIPProjectConfig.h b/examples/lighting-app/nxp/mcxw71/include/config/CHIPProjectConfig.h new file mode 100644 index 00000000000000..20f126aa23a0d5 --- /dev/null +++ b/examples/lighting-app/nxp/mcxw71/include/config/CHIPProjectConfig.h @@ -0,0 +1,235 @@ +/* + * Copyright (c) 2020 Project CHIP Authors + * Copyright (c) 2020 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * Example project configuration file for CHIP. + * + * This is a place to put application or project-specific overrides + * to the default configuration values for general CHIP features. + * + */ + +#pragma once + +// Security and Authentication disabled for development build. +// For convenience, enable CHIP Security Test Mode and disable the requirement for +// authentication in various protocols. +// 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. +#define CHIP_CONFIG_SECURITY_TEST_MODE 0 + +// Use hard-coded test certificates already embedded in generic chip code => set it to 0 +// Use real/development certificates => set it to 1 + file the provisioning section from +// the internal flash +#ifndef CONFIG_CHIP_LOAD_REAL_FACTORY_DATA +#define CONFIG_CHIP_LOAD_REAL_FACTORY_DATA 0 +#endif + +#if CONFIG_CHIP_LOAD_REAL_FACTORY_DATA + +// VID/PID for product => will be used by Basic Information Cluster +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0x1037 +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0xA401 + +// Set the following define to use the Certification Declaration from below and not use it stored in factory data section +#ifndef CHIP_USE_DEVICE_CONFIG_CERTIFICATION_DECLARATION +#define CHIP_USE_DEVICE_CONFIG_CERTIFICATION_DECLARATION 0 +#endif + +#ifndef CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION +//-> format_version = 1 +//-> vendor_id = 0x1037 +//-> product_id_array = [ 0xA401 ] +//-> device_type_id = 0x0100 +//-> certificate_id = "ZIG20142ZB330003-24" +//-> security_level = 0 +//-> security_information = 0 +//-> version_number = 0x2694 +//-> certification_type = 1 +//-> dac_origin_vendor_id is not present +//-> dac_origin_product_id is not present +#define CHIP_DEVICE_CONFIG_CERTIFICATION_DECLARATION \ + { \ + 0x30, 0x81, 0xe8, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x81, 0xda, 0x30, 0x81, 0xd7, \ + 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, \ + 0x45, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x38, 0x04, 0x36, 0x15, 0x24, 0x00, \ + 0x01, 0x25, 0x01, 0x37, 0x10, 0x36, 0x02, 0x05, 0x01, 0xa4, 0x18, 0x25, 0x03, 0x00, 0x01, 0x2c, 0x04, 0x13, 0x5a, \ + 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x32, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x33, 0x2d, 0x32, 0x34, 0x24, \ + 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x76, 0x98, 0x24, 0x08, 0x01, 0x18, 0x31, 0x7c, 0x30, 0x7a, 0x02, 0x01, \ + 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, 0xf5, \ + 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, 0x0a, \ + 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x46, 0x30, 0x44, 0x02, 0x20, 0x11, 0xc4, 0xe4, \ + 0x54, 0xcc, 0xdb, 0x09, 0xa9, 0x31, 0xd7, 0xbd, 0x6e, 0x28, 0x95, 0x9b, 0xab, 0x3e, 0xec, 0x76, 0x09, 0x8c, 0x39, \ + 0x93, 0x43, 0x6e, 0x89, 0x07, 0x7d, 0x8b, 0xe9, 0x3a, 0x0a, 0x02, 0x20, 0x71, 0xc6, 0xac, 0x09, 0x11, 0x7b, 0x1a, \ + 0x61, 0x5e, 0x3a, 0xc6, 0x4a, 0x4f, 0xf3, 0xd4, 0x3b, 0x62, 0x54, 0x3a, 0xf3, 0x60, 0xeb, 0x47, 0xd4, 0x8f, 0x18, \ + 0x0d, 0xa3, 0xd1, 0xef, 0xd0, 0x70 \ + } + +// All remaining data will be pulled from the provisioning region of flash. +#endif + +#else + +/** + * CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID + * + * 0xFFF1: Test vendor. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_ID 0xFFF1 + +/** + * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID + * + * 0x8005: example lighting-app + */ +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID 0x8005 + +// Use a default setup PIN code if one hasn't been provisioned in flash. +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021 +#endif + +#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR +#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00 +#endif + +// Use a default pairing code if one hasn't been provisioned in flash. +#define CHIP_DEVICE_CONFIG_USE_TEST_PAIRING_CODE "CHIPUS" + +/** + * CHIP_DEVICE_CONFIG_TEST_SERIAL_NUMBER + * + * Enables the use of a hard-coded default serial number if none + * is found in CHIP NV storage. + */ +#define CHIP_DEVICE_CONFIG_TEST_SERIAL_NUMBER "TEST_SN" + +#endif // CONFIG_CHIP_LOAD_REAL_FACTORY_DATA + +/** + * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION + * + * 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 revision 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 versions. + */ +#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 100 + +#ifndef CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEFAULT_DEVICE_HARDWARE_VERSION_STRING "v0.1.0" +#endif + +/** + * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING + * + * A string identifying the software version running on the device. + * CHIP currently expects the software version to be in the format + * {MAJOR_VERSION}.0d{MINOR_VERSION} + */ +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING NXP_CONFIG_DEVICE_SOFTWARE_VERSION_STRING +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION +#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION NXP_CONFIG_DEVICE_SOFTWARE_VERSION +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_VENDOR_NAME "NXP Semiconductors" +#endif + +#ifndef CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME +#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_NAME "NXP Demo App" +#endif + +/** + * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC + * + * Enables synchronizing the device's real time clock with a remote CHIP Time service + * using the CHIP Time Sync protocol. + */ +// #define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 1 + +/** + * CHIP_DEVICE_CONFIG_BLE_FAST_ADVERTISING_TIMEOUT + * + * The amount of time in miliseconds after which BLE should change his advertisements + * from fast interval to slow interval. + * + * 30000 (30 secondes). + */ +#define CHIP_DEVICE_CONFIG_BLE_FAST_ADVERTISING_TIMEOUT (30 * 1000) + +/** + * CHIP_DEVICE_CONFIG_BLE_ADVERTISING_TIMEOUT + * + * The amount of time in miliseconds after which BLE advertisement should be disabled, counting + * from the moment of slow advertisement commencement. + * + * Defaults to 9000000 (15 minutes). + */ +#define CHIP_DEVICE_CONFIG_BLE_ADVERTISING_TIMEOUT (15 * 60 * 1000) + +/** + * CONFIG_CHIP_NFC_COMMISSIONING, CHIP_DEVICE_CONFIG_ENABLE_NFC + * + * NFC commissioning is not supported on K32W1 + */ +#define CONFIG_CHIP_NFC_COMMISSIONING 0 +#define CHIP_DEVICE_CONFIG_ENABLE_NFC 0 + +/** + * @def CHIP_CONFIG_MAX_FABRICS + * + * @brief + * Maximum number of fabrics the device can participate in. Each fabric can + * provision the device with its unique operational credentials and manage + * its own access control lists. + */ +#define CHIP_CONFIG_MAX_FABRICS 5 // 5 is the minimum number of supported fabrics + +/** + * @def CHIP_IM_MAX_NUM_COMMAND_HANDLER + * + * @brief Defines the maximum number of CommandHandler, limits the number of active commands transactions on server. + */ +#define CHIP_IM_MAX_NUM_COMMAND_HANDLER 2 + +/** + * @def CHIP_IM_MAX_NUM_WRITE_HANDLER + * + * @brief Defines the maximum number of WriteHandler, limits the number of active write transactions on server. + */ +#define CHIP_IM_MAX_NUM_WRITE_HANDLER 2 + +/** + * CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE + * + * For a development build, set the default importance of events to be logged as Debug. + * Since debug is the lowest importance level, this means all standard, critical, info and + * debug importance level vi events get logged. + */ +#if BUILD_RELEASE +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Production +#else +#define CHIP_CONFIG_EVENT_LOGGING_DEFAULT_IMPORTANCE chip::Profiles::DataManagement::Debug +#endif // BUILD_RELEASE + +#define CHIP_DEVICE_CONFIG_ENABLE_EXTENDED_DISCOVERY 1 diff --git a/examples/lighting-app/nxp/mcxw71/third_party/connectedhomeip b/examples/lighting-app/nxp/mcxw71/third_party/connectedhomeip new file mode 120000 index 00000000000000..59307833b4fee9 --- /dev/null +++ b/examples/lighting-app/nxp/mcxw71/third_party/connectedhomeip @@ -0,0 +1 @@ +../../../../.. \ No newline at end of file diff --git a/examples/lighting-app/nxp/mcxw71/with_pw_rpc.gni b/examples/lighting-app/nxp/mcxw71/with_pw_rpc.gni new file mode 100644 index 00000000000000..c2dc1950544640 --- /dev/null +++ b/examples/lighting-app/nxp/mcxw71/with_pw_rpc.gni @@ -0,0 +1,37 @@ +# Copyright (c) 2023 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# add this gni as import in your build args to use pigweed in the example +# 'import("//with_pw_rpc.gni")' + +import("//build_overrides/chip.gni") +import("${chip_root}/config/nxp/lib/pw_rpc/pw_rpc.gni") + +nxp_sdk_target = get_label_info(":sdk", "label_no_toolchain") + +chip_crypto = "platform" +chip_enable_ble = true +chip_enable_ota_requestor = true +chip_enable_pw_rpc = true +chip_openthread_ftd = true +chip_stack_lock_tracking = "fatal" + +chip_system_config_provide_statistics = false +chip_system_config_use_open_thread_inet_endpoints = true + +chip_with_lwip = false +chip_with_ot_cli = 0 + +cpp_standard = "gnu++17" +is_debug = false diff --git a/examples/platform/nxp/mcxw71_k32w1/app/ldscripts/k32w1_app.ld b/examples/platform/nxp/mcxw71_k32w1/app/ldscripts/app.ld similarity index 100% rename from examples/platform/nxp/mcxw71_k32w1/app/ldscripts/k32w1_app.ld rename to examples/platform/nxp/mcxw71_k32w1/app/ldscripts/app.ld diff --git a/examples/platform/nxp/mcxw71_k32w1/doc/images/frdm-mcxw71.jpg b/examples/platform/nxp/mcxw71_k32w1/doc/images/frdm-mcxw71.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a54f70f062c6a0807066c1e61de214e076e78d22 GIT binary patch literal 922296 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
IOx?t9g3w8n|FOqprtM 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%0AVkI-u^|q3yE&qRvVw)-W2)E# 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
|(ohdQ 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

i&Ly{pn06=wmIE65XlSH4~-mv&V)3$oeLUEi(vQ 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 literal 0 HcmV?d00001 diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py index 7cd7c157a54403..4c90164b2d1c12 100755 --- a/scripts/build/build/targets.py +++ b/scripts/build/build/targets.py @@ -507,7 +507,8 @@ def BuildNxpTarget(): target.AppendFixedTargets([ TargetPart('k32w0', board=NxpBoard.K32W0), TargetPart('k32w1', board=NxpBoard.K32W1), - TargetPart('rw61x', board=NxpBoard.RW61X) + TargetPart('rw61x', board=NxpBoard.RW61X), + TargetPart('mcxw71', board=NxpBoard.MCXW71) ]) # OS @@ -518,8 +519,8 @@ def BuildNxpTarget(): # apps target.AppendFixedTargets([ - TargetPart('lighting', app=NxpApp.LIGHTING).OnlyIfRe('(k32w0|k32w1)'), - TargetPart('contact-sensor', app=NxpApp.CONTACT).OnlyIfRe('(k32w0|k32w1)'), + TargetPart('lighting', app=NxpApp.LIGHTING).OnlyIfRe('(k32w0|k32w1|mcxw71)'), + TargetPart('contact-sensor', app=NxpApp.CONTACT).OnlyIfRe('(k32w0|k32w1|mcxw71)'), TargetPart('all-clusters', app=NxpApp.ALLCLUSTERS).OnlyIfRe('rw61x'), TargetPart('laundry-washer', app=NxpApp.LAUNDRYWASHER).OnlyIfRe('rw61x'), TargetPart('thermostat', app=NxpApp.THERMOSTAT).OnlyIfRe('rw61x') @@ -529,7 +530,7 @@ def BuildNxpTarget(): target.AppendModifier(name="low-power", low_power=True).OnlyIfRe('contact-sensor') target.AppendModifier(name="lit", enable_lit=True).OnlyIfRe('contact-sensor') target.AppendModifier(name="fro32k", use_fro32k=True).OnlyIfRe('k32w0') - target.AppendModifier(name="smu2", smu2=True).OnlyIfRe('k32w1-freertos-lighting') + target.AppendModifier(name="smu2", smu2=True).OnlyIfRe('(k32w1|mcxw71)-freertos-lighting') target.AppendModifier(name="dac-conversion", convert_dac_pk=True).OnlyIfRe('factory').ExceptIfRe('(k32w0|rw61x)') target.AppendModifier(name="rotating-id", enable_rotating_id=True).ExceptIfRe('rw61x') target.AppendModifier(name="sw-v2", has_sw_version_2=True) diff --git a/scripts/build/builders/nxp.py b/scripts/build/builders/nxp.py index 3592400fc0c631..1124a03142472c 100644 --- a/scripts/build/builders/nxp.py +++ b/scripts/build/builders/nxp.py @@ -38,6 +38,7 @@ class NxpBoard(Enum): K32W0 = auto() K32W1 = auto() RW61X = auto() + MCXW71 = auto() def Name(self, os_env): if self == NxpBoard.K32W0: @@ -49,6 +50,8 @@ def Name(self, os_env): return 'rd_rw612_bga' else: return 'rw61x' + elif self == NxpBoard.MCXW71: + return 'mcxw71' else: raise Exception('Unknown board type: %r' % self) @@ -62,6 +65,8 @@ def FolderName(self, os_env): return 'zephyr' else: return 'rt/rw61x' + elif self == NxpBoard.MCXW71: + return 'mcxw71' else: raise Exception('Unknown board type: %r' % self) diff --git a/scripts/build/testdata/all_targets_linux_x64.txt b/scripts/build/testdata/all_targets_linux_x64.txt index 6639429b31bb75..df54baa2ffec81 100644 --- a/scripts/build/testdata/all_targets_linux_x64.txt +++ b/scripts/build/testdata/all_targets_linux_x64.txt @@ -13,7 +13,7 @@ linux-{x64,arm64}-{rpc-console,all-clusters,all-clusters-minimal,chip-tool,therm linux-x64-efr32-test-runner[-clang] imx-{chip-tool,lighting-app,thermostat,all-clusters-app,all-clusters-minimal-app,ota-provider-app}[-release] infineon-psoc6-{lock,light,all-clusters,all-clusters-minimal}[-ota][-updateimage][-trustm] -nxp-{k32w0,k32w1,rw61x}-{zephyr,freertos}-{lighting,contact-sensor,all-clusters,laundry-washer,thermostat}[-factory][-low-power][-lit][-fro32k][-smu2][-dac-conversion][-rotating-id][-sw-v2][-ota][-wifi][-thread][-matter-shell] +nxp-{k32w0,k32w1,rw61x,mcxw71}-{zephyr,freertos}-{lighting,contact-sensor,all-clusters,laundry-washer,thermostat}[-factory][-low-power][-lit][-fro32k][-smu2][-dac-conversion][-rotating-id][-sw-v2][-ota][-wifi][-thread][-matter-shell] mbed-cy8cproto_062_4343w-{lock,light,all-clusters,all-clusters-minimal,pigweed,ota-requestor,shell}[-release][-develop][-debug] mw320-all-clusters-app nrf-{nrf5340dk,nrf52840dk,nrf52840dongle}-{all-clusters,all-clusters-minimal,lock,light,light-switch,shell,pump,pump-controller,window-covering}[-rpc] diff --git a/src/platform/nxp/common/legacy/gatt_db.h b/src/platform/nxp/common/legacy/gatt_db.h new file mode 100644 index 00000000000000..604fcfb61a7ba1 --- /dev/null +++ b/src/platform/nxp/common/legacy/gatt_db.h @@ -0,0 +1,30 @@ +PRIMARY_SERVICE(service_gatt, gBleSig_GenericAttributeProfile_d) +CHARACTERISTIC(char_service_changed, gBleSig_GattServiceChanged_d, (gGattCharPropRead_c | gGattCharPropNotify_c)) +VALUE(value_service_changed, gBleSig_GattServiceChanged_d, (gPermissionNone_c), 4, 0x00, 0x00, 0x00, 0x00) +CCCD(cccd_service_changed) + +PRIMARY_SERVICE(service_gap, gBleSig_GenericAccessProfile_d) +CHARACTERISTIC(char_device_name, gBleSig_GapDeviceName_d, (gGattCharPropRead_c)) +VALUE(value_device_name, gBleSig_GapDeviceName_d, (gPermissionFlagReadable_c), 16, "NXP_ELOCK_DEMO") +CHARACTERISTIC(char_appearance, gBleSig_GapAppearance_d, (gGattCharPropRead_c)) +VALUE(value_appearance, gBleSig_GapAppearance_d, (gPermissionFlagReadable_c), 2, 0x00, 0x00) + +PRIMARY_SERVICE(service_chipoble, gChipoBleService_d) +CHARACTERISTIC_UUID128(chipoble_rx, uuid_chipoble_rx, (gGattCharPropWrite_c)) +VALUE_UUID128_VARLEN(value_chipoble_rx, uuid_chipoble_rx, (gPermissionFlagWritable_c), gAttMaxMtu_c - 3, gAttMaxMtu_c - 3, 0x00) +CHARACTERISTIC_UUID128(chipoble_tx, uuid_chipoble_tx, (gGattCharPropIndicate_c | gGattCharPropRead_c)) +VALUE_UUID128_VARLEN(value_chipoble_tx, uuid_chipoble_tx, (gPermissionFlagReadable_c), gAttMaxMtu_c - 3, gAttMaxMtu_c - 3, 0x00) +CCCD(cccd_chipoble_tx) +CHARACTERISTIC_UUID128(chipoble_c3, uuid_chipoble_c3, (gGattCharPropRead_c)) +VALUE_UUID128_VARLEN(value_chipoble_c3, uuid_chipoble_c3, (gPermissionFlagReadable_c), gAttMaxReadDataSize_d(gAttMaxValueLength_c), + gAttMaxReadDataSize_d(gAttMaxValueLength_c), 0x00) + +PRIMARY_SERVICE(service_device_info, gBleSig_DeviceInformationService_d) +CHARACTERISTIC(char_model_no, gBleSig_ModelNumberString_d, (gGattCharPropRead_c)) +VALUE(value_model_no, gBleSig_ModelNumberString_d, (gPermissionFlagReadable_c), 15, "Chip ELock Demo") +CHARACTERISTIC(char_serial_no, gBleSig_SerialNumberString_d, (gGattCharPropRead_c)) +VALUE(value_serial_no, gBleSig_SerialNumberString_d, (gPermissionFlagReadable_c), 7, "BLESN01") +CHARACTERISTIC(char_fw_rev, gBleSig_FirmwareRevisionString_d, (gGattCharPropRead_c)) +VALUE(value_fw_rev, gBleSig_FirmwareRevisionString_d, (gPermissionFlagReadable_c), 5, "1.1.1") +CHARACTERISTIC(char_sw_rev, gBleSig_SoftwareRevisionString_d, (gGattCharPropRead_c)) +VALUE(value_sw_rev, gBleSig_SoftwareRevisionString_d, (gPermissionFlagReadable_c), 5, "1.1.4") diff --git a/src/platform/nxp/common/legacy/gatt_uuid128.h b/src/platform/nxp/common/legacy/gatt_uuid128.h new file mode 100644 index 00000000000000..938968b1943ce2 --- /dev/null +++ b/src/platform/nxp/common/legacy/gatt_uuid128.h @@ -0,0 +1,26 @@ +/* +* Declare all custom 128-bit UUIDs here using the format: +* +* UUID128(name, bytes) +* +* where: +* -name : an unique tag for the newly defined UUID; + will be used to reference this UUID when defining + services and characteristics in <> +* -bytes: 16 bytes representing the 128-bit value +* +* One definition per line. No semicolon required after each definition. +* +* example: +* UUID128(uuid_service_robot_characteristics, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, +0xCD, 0xEF) +* UUID128(uuid_char_robot_direction, 0x12, 0x34, 0x50, 0x00, 0x90, 0xAB, 0xCD, 0xEF, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, +0xEF) +*/ +/* Services */ + +#define gChipoBleService_d 0xFFF6 + +UUID128(uuid_chipoble_tx, 0x12, 0x9D, 0x9F, 0x42, 0x9C, 0x4F, 0x9F, 0x95, 0x59, 0x45, 0x3D, 0x26, 0xF5, 0x2E, 0xEE, 0x18) +UUID128(uuid_chipoble_rx, 0x11, 0x9D, 0x9F, 0x42, 0x9C, 0x4F, 0x9F, 0x95, 0x59, 0x45, 0x3D, 0x26, 0xF5, 0x2E, 0xEE, 0x18) +UUID128(uuid_chipoble_c3, 0x04, 0x8f, 0x21, 0x83, 0x8a, 0x74, 0x7d, 0xb8, 0xf2, 0x45, 0x72, 0x87, 0x38, 0x02, 0x63, 0x64) From 3b74224ec040fd1568b1981f7e912ba1447101be Mon Sep 17 00:00:00 2001 From: Terence Hampson Date: Wed, 11 Sep 2024 08:48:48 -0400 Subject: [PATCH 41/50] Update chef operational-state-delegate-impl (#35528) --- .../chef-operational-state-delegate-impl.cpp | 15 +++++++++++++++ .../common/chef-operational-state-delegate-impl.h | 1 + 2 files changed, 16 insertions(+) diff --git a/examples/chef/common/chef-operational-state-delegate-impl.cpp b/examples/chef/common/chef-operational-state-delegate-impl.cpp index 2692417915d785..eedd141dc3b2e4 100644 --- a/examples/chef/common/chef-operational-state-delegate-impl.cpp +++ b/examples/chef/common/chef-operational-state-delegate-impl.cpp @@ -58,6 +58,7 @@ void GenericOperationalStateDelegateImpl::HandlePauseStateCallback(GenericOperat auto error = GetInstance()->SetOperationalState(to_underlying(OperationalState::OperationalStateEnum::kPaused)); if (error == CHIP_NO_ERROR) { + GetInstance()->UpdateCountdownTimeFromDelegate(); err.Set(to_underlying(ErrorStateEnum::kNoError)); } else @@ -72,6 +73,7 @@ void GenericOperationalStateDelegateImpl::HandleResumeStateCallback(GenericOpera auto error = GetInstance()->SetOperationalState(to_underlying(OperationalStateEnum::kRunning)); if (error == CHIP_NO_ERROR) { + GetInstance()->UpdateCountdownTimeFromDelegate(); err.Set(to_underlying(ErrorStateEnum::kNoError)); } else @@ -95,6 +97,7 @@ void GenericOperationalStateDelegateImpl::HandleStartStateCallback(GenericOperat auto error = GetInstance()->SetOperationalState(to_underlying(OperationalStateEnum::kRunning)); if (error == CHIP_NO_ERROR) { + GetInstance()->UpdateCountdownTimeFromDelegate(); (void) DeviceLayer::SystemLayer().StartTimer(System::Clock::Seconds16(1), onOperationalStateTimerTick, this); err.Set(to_underlying(ErrorStateEnum::kNoError)); } @@ -112,6 +115,8 @@ void GenericOperationalStateDelegateImpl::HandleStopStateCallback(GenericOperati { (void) DeviceLayer::SystemLayer().CancelTimer(onOperationalStateTimerTick, this); + GetInstance()->UpdateCountdownTimeFromDelegate(); + OperationalState::GenericOperationalError current_err(to_underlying(OperationalState::ErrorStateEnum::kNoError)); GetInstance()->GetCurrentOperationalError(current_err); @@ -151,6 +156,11 @@ static void onOperationalStateTimerTick(System::Layer * systemLayer, void * data delegate->mPausedTime++; } } + else if (!countdown_time.IsNull() && countdown_time.Value() <= 0) + { + OperationalState::GenericOperationalError noError(to_underlying(OperationalState::ErrorStateEnum::kNoError)); + delegate->HandleStopStateCallback(noError); + } if (state == OperationalState::OperationalStateEnum::kRunning || state == OperationalState::OperationalStateEnum::kPaused) { @@ -172,6 +182,11 @@ OperationalState::Instance * OperationalState::GetOperationalStateInstance() return gOperationalStateInstance; } +OperationalStateDelegate * OperationalState::GetOperationalStateDelegate() +{ + return gOperationalStateDelegate; +} + void OperationalState::Shutdown() { if (gOperationalStateInstance != nullptr) diff --git a/examples/chef/common/chef-operational-state-delegate-impl.h b/examples/chef/common/chef-operational-state-delegate-impl.h index 60b6b09e9b6511..badadd68cd30a9 100644 --- a/examples/chef/common/chef-operational-state-delegate-impl.h +++ b/examples/chef/common/chef-operational-state-delegate-impl.h @@ -138,6 +138,7 @@ class OperationalStateDelegate : public GenericOperationalStateDelegateImpl }; Instance * GetOperationalStateInstance(); +OperationalStateDelegate * GetOperationalStateDelegate(); void Shutdown(); From 16b1e5b3505e70120f21bb4dee4cc584bb0266d3 Mon Sep 17 00:00:00 2001 From: Marius Tache <102153746+marius-alex-tache@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:53:37 +0300 Subject: [PATCH 42/50] [NXP] Fix key storage issues and add NVS wear stats support (#35511) * [nxp][platform][common] Simplify factory reset procedure when KeyStorage is used Instead of resetting the KetStorage which, in turn, removes the key files one by one, just shut it down to trigger a FileCache flush and then simply format the file system partition. Signed-off-by: Marian Chereji (cherry picked from commit 9a2624656feff58849d89272e73559da19078849) * [nxp][platform][common] Update "NXPConfig.h" to allow building multiple key storage solutions The "NXPConfig.h" header was developed to support 2 key storage solutions so far, which were mostly selected using the CHIP_PLAT_NVM_SUPPORT build symbol. In order to be able to support additional key storage solutions (such as Zephyr NVS), which are no longer selected via the above mentioned build symbol, the header Signed-off-by: Marian Chereji (cherry picked from commit 7bace6914508ac98124836a1be3973818993dd58) * [nxp][common] Fix KeyStorage use of illegal buffer size when checking the existence of a key The "NXPConfig::ConfigValueExists" member function is using a non-zero buffer capacity combined with a NULL buffer pointer when calling the KeyStorage KS_GetKeyInt() function. This combination is illegal. When using a NULL buffer pointer, a capacity of zero is required to be provided. Signed-off-by: Marian Chereji (cherry picked from commit f8f03ef0041bc8b7729fe7959cf2244b6d65133e) * [nxp][platform][common] Add check for read_bytes_size read_bytes_size can be nullptr according to the KVS API. Add a nullptr check to account for use cases where the parameter is not used (implicitly set to nullptr). Signed-off-by: marius-alex-tache * [nxp][platform][common] Add support for NVS key storage wear statistics Added the support to initialize and update key storage wear statistics. Signed-off-by: Marian Chereji Reviewed-by: Doru-Cristian Gucea Reviewed-by: Martin Girardot (cherry picked from commit d05884ddf8baac0da0a4d9d2a693280d2bdae86a) * [nxp][platform][common] Update platform names for w0/w1 Signed-off-by: marius-alex-tache --------- Signed-off-by: marius-alex-tache Co-authored-by: Marian Chereji --- src/platform/nxp/BUILD.gn | 2 +- .../CHIPDeviceNXPPlatformDefaultConfig.h | 4 ++ .../nxp/common/KeyValueStoreManagerImpl.cpp | 5 +- src/platform/nxp/common/NXPConfig.h | 13 +++-- src/platform/nxp/common/NXPConfigKS.cpp | 19 ++++--- src/platform/nxp/common/NXPConfigNVS.cpp | 57 +++++++++++++++++++ 6 files changed, 83 insertions(+), 17 deletions(-) diff --git a/src/platform/nxp/BUILD.gn b/src/platform/nxp/BUILD.gn index 0865a1d36dacb6..b2043caac1f0bf 100644 --- a/src/platform/nxp/BUILD.gn +++ b/src/platform/nxp/BUILD.gn @@ -26,7 +26,7 @@ source_set("logging") { "${chip_root}/src/platform/logging:headers", ] - if (nxp_platform == "k32w/k32w0" || nxp_platform == "k32w1") { + if (nxp_platform == "k32w0" || nxp_platform == "mcxw71_k32w1") { sources = [ "${chip_root}/src/platform/nxp/${nxp_platform}/Logging.cpp" ] } else { sources = [ "${chip_root}/src/platform/nxp/common/Logging.cpp" ] diff --git a/src/platform/nxp/common/CHIPDeviceNXPPlatformDefaultConfig.h b/src/platform/nxp/common/CHIPDeviceNXPPlatformDefaultConfig.h index ba2321c9a26566..e8d392fb793604 100644 --- a/src/platform/nxp/common/CHIPDeviceNXPPlatformDefaultConfig.h +++ b/src/platform/nxp/common/CHIPDeviceNXPPlatformDefaultConfig.h @@ -102,6 +102,10 @@ #define CHIP_DEVICE_CONFIG_ENABLE_THREAD_DNS_CLIENT 1 #endif // CHIP_DEVICE_CONFIG_ENABLE_THREAD +#ifndef CHIP_DEVICE_CONFIG_KVS_WEAR_STATS_KEY +#define CHIP_DEVICE_CONFIG_KVS_WEAR_STATS_KEY "nxp/diag/usr" +#endif // CHIP_DEVICE_CONFIG_KVS_WEAR_STATS_KEY + #if CHIP_DEVICE_CONFIG_ENABLE_THREAD && !CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE #define CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONABLE_DISCOVERY 1 #define CHIP_DEVICE_CONFIG_ENABLE_EXTENDED_DISCOVERY 1 diff --git a/src/platform/nxp/common/KeyValueStoreManagerImpl.cpp b/src/platform/nxp/common/KeyValueStoreManagerImpl.cpp index af2598ca2be188..737007a46dce68 100644 --- a/src/platform/nxp/common/KeyValueStoreManagerImpl.cpp +++ b/src/platform/nxp/common/KeyValueStoreManagerImpl.cpp @@ -55,7 +55,10 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t ChipLogError(DeviceLayer, "KVS, failed to read key!"); } - *read_bytes_size = read_bytes; + if (read_bytes_size) + { + *read_bytes_size = read_bytes; + } exit: ConvertError(err); diff --git a/src/platform/nxp/common/NXPConfig.h b/src/platform/nxp/common/NXPConfig.h index 03d6174763fb69..7de3beab2b37ed 100644 --- a/src/platform/nxp/common/NXPConfig.h +++ b/src/platform/nxp/common/NXPConfig.h @@ -40,14 +40,12 @@ #if (CHIP_PLAT_NVM_SUPPORT == CHIP_PLAT_NVM_FWK) #include "NVM_Interface.h" +#include "ram_storage.h" #elif (CHIP_PLAT_NVM_SUPPORT == CHIP_PLAT_LITTLEFS) #include "fwk_filesystem.h" -#endif - -#if (CHIP_PLAT_NVM_SUPPORT == CHIP_PLAT_KEY_STORAGE) -#include "fwk_key_storage.h" -#else #include "ram_storage.h" +#elif (CHIP_PLAT_NVM_SUPPORT == CHIP_PLAT_KEY_STORAGE) +#include "fwk_key_storage.h" #endif namespace chip { @@ -188,11 +186,14 @@ class NXPConfig private: #if (CHIP_PLAT_NVM_SUPPORT == CHIP_PLAT_KEY_STORAGE) static CHIP_ERROR MapKeyStorageStatus(ks_error_t ksStatus); -#else +#elif (CHIP_PLAT_NVM_SUPPORT != CHIP_PLAT_NO_NVM) static CHIP_ERROR MapRamStorageStatus(rsError rsStatus); #endif static int SaveIntKeysToFS(void); static int SaveStringKeysToFS(void); +#if (CHIP_DEVICE_CONFIG_KVS_WEAR_STATS == 1) + static CHIP_ERROR InitStorageWearStats(void); +#endif }; } // namespace Internal diff --git a/src/platform/nxp/common/NXPConfigKS.cpp b/src/platform/nxp/common/NXPConfigKS.cpp index 1940a8081cbf7c..930f07fe3540d4 100644 --- a/src/platform/nxp/common/NXPConfigKS.cpp +++ b/src/platform/nxp/common/NXPConfigKS.cpp @@ -31,6 +31,7 @@ #include #include "fwk_file_cache.h" +#include "fwk_fs_abstraction.h" #include "fwk_key_storage.h" #include "fwk_lfs_mflash.h" @@ -419,26 +420,26 @@ bool NXPConfig::ConfigValueExists(Key key) found = false; readValue_p = NULL; outLen = 0; - /* Max number of bytes read when getting a value */ - bufSize = 256; + bufSize = 0; if (ValidConfigKey(key)) { /* Get the first occurence */ status = KS_GetKeyInt(ks_handle_p, (int) key, (char *) NS_INT, readValue_p, bufSize, &outLen); - found = (status == KS_ERROR_NONE && outLen != 0); + found = (status != KS_ERROR_KEY_NOT_FOUND); } return found; } CHIP_ERROR NXPConfig::FactoryResetConfig(void) { - /*for (Key key = kMinConfigKey_ChipConfig; key <= kMaxConfigKey_ChipConfig; key++) - { - ClearConfigValue(key); - }*/ - - KS_Reset(ks_handle_p); + /* + * When a factory reset is required, shut down the KeyStorage (which + * also flushes the FileCache) and then execute a simple format of the + * the file system partition. + */ + KS_DeInit(ks_handle_p); + FSA_Format(); DBG_PRINTF("FactoryResetConfig done\r\n"); diff --git a/src/platform/nxp/common/NXPConfigNVS.cpp b/src/platform/nxp/common/NXPConfigNVS.cpp index 34d98a36d25002..4cd997b218d473 100644 --- a/src/platform/nxp/common/NXPConfigNVS.cpp +++ b/src/platform/nxp/common/NXPConfigNVS.cpp @@ -20,10 +20,14 @@ #include #include #include +#include #include /* Only for flash init, to be move to sdk framework */ #include "port/nvs_port.h" +#if (CHIP_DEVICE_CONFIG_KVS_WEAR_STATS == 1) +#include "fwk_nvs_stats.h" +#endif /* CHIP_DEVICE_CONFIG_KVS_WEAR_STATS */ // These can be overridden by the application as needed. #ifndef CHIP_DEVICE_INTEGER_SETTINGS_KEY @@ -137,6 +141,17 @@ int DeleteSubtreeCallback(const char * name, size_t /* entrySize */, settings_re return 0; } + +#if (CHIP_DEVICE_CONFIG_KVS_WEAR_STATS == 1) +void OnFlashSectorWearCountUpdate(uint16_t sector_idx, const nvs_storage_wear_profile_t * flash_wear_profile) +{ + char keyUser[] = CHIP_DEVICE_CONFIG_KVS_WEAR_STATS_KEY; + const size_t flash_wear_profile_size = NVS_STORAGE_WEAR_PROFILE_SIZE(flash_wear_profile->sector_count); + + /* Update the NVS stats key in storage */ + NXPConfig::WriteConfigValueBin((const char *) keyUser, (uint8_t *) flash_wear_profile, flash_wear_profile_size); +} +#endif /* CHIP_DEVICE_CONFIG_KVS_WEAR_STATS */ } // namespace CHIP_ERROR NXPConfig::Init() @@ -151,8 +166,50 @@ CHIP_ERROR NXPConfig::Init() ReturnErrorCodeIf(settings_subsys_init(), CHIP_ERROR_PERSISTED_STORAGE_FAILED); +#if (CHIP_DEVICE_CONFIG_KVS_WEAR_STATS == 1) + ReturnErrorOnFailure(InitStorageWearStats()); +#endif /* CHIP_DEVICE_CONFIG_KVS_WEAR_STATS */ + + return CHIP_NO_ERROR; +} + +#if (CHIP_DEVICE_CONFIG_KVS_WEAR_STATS == 1) +CHIP_ERROR NXPConfig::InitStorageWearStats(void) +{ + nvs_storage_wear_profile_t * flash_wear_profile = NULL; + const size_t flash_wear_profile_size = NVS_STORAGE_WEAR_PROFILE_SIZE((uint32_t) NV_STORAGE_MAX_SECTORS); + size_t size; + char keyUser[] = CHIP_DEVICE_CONFIG_KVS_WEAR_STATS_KEY; + + /* Create an empty flash wear profile */ + flash_wear_profile = (nvs_storage_wear_profile_t *) calloc(1, flash_wear_profile_size); + ReturnErrorCodeIf(flash_wear_profile == NULL, CHIP_ERROR_NO_MEMORY); + + /* Try to read the flash wear profile from the User Support diagnostic log key */ + CHIP_ERROR err = ReadConfigValueBin((const char *) keyUser, (uint8_t *) flash_wear_profile, flash_wear_profile_size, size); + if ((err != CHIP_NO_ERROR) || (size != flash_wear_profile_size) || + (flash_wear_profile->sector_count != (uint32_t) NV_STORAGE_MAX_SECTORS)) + { + /* Either the flash wear stats are not available in the persistent + * storage or the flash wear statistics that we have read are not + * compatible with the current persistent storage configuration. In + * this case - just reset and save the flash wear statistics. */ + flash_wear_profile->sector_count = (uint32_t) NV_STORAGE_MAX_SECTORS; + memset(flash_wear_profile->erase_count, 0, (uint32_t) NV_STORAGE_MAX_SECTORS * sizeof(uint16_t)); + WriteConfigValueBin((const char *) keyUser, (uint8_t *) flash_wear_profile, flash_wear_profile_size); + } + else + { + /* Load the flash wear profile into the NVS statistics */ + nvs_stats_load_profile(flash_wear_profile); + } + free(flash_wear_profile); + + nvs_stats_config_event_handler(OnFlashSectorWearCountUpdate); + return CHIP_NO_ERROR; } +#endif /* CHIP_DEVICE_CONFIG_KVS_WEAR_STATS */ CHIP_ERROR NXPConfig::ReadConfigValue(Key key, bool & val) { From b2685cbbac62b016cbc3085f520460fbda545c1b Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 11 Sep 2024 10:14:01 -0400 Subject: [PATCH 43/50] Remove the accessedViaPublicAPI on MTRDevice. (#35531) Now that we have a concept of suspended devices, just use that to avoid wasting time on read-throughs which would fail anyway. --- src/darwin/Framework/CHIP/MTRDevice.mm | 14 +------------- src/darwin/Framework/CHIP/MTRDevice_Concrete.mm | 6 +++--- src/darwin/Framework/CHIP/MTRDevice_Internal.h | 11 ----------- 3 files changed, 4 insertions(+), 27 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDevice.mm b/src/darwin/Framework/CHIP/MTRDevice.mm index ddc47965f9c8b1..f323c220ae118e 100644 --- a/src/darwin/Framework/CHIP/MTRDevice.mm +++ b/src/darwin/Framework/CHIP/MTRDevice.mm @@ -306,7 +306,6 @@ - (instancetype)initForSubclassesWithNodeID:(NSNumber *)nodeID controller:(MTRDe _delegates = [NSMutableSet set]; _deviceController = controller; _nodeID = nodeID; - _accessedViaPublicAPI = NO; _state = MTRDeviceStateUnknown; } @@ -322,7 +321,6 @@ - (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceControlle _nodeID = [nodeID copy]; _fabricIndex = controller.fabricIndex; _deviceController = controller; - _accessedViaPublicAPI = NO; _queue = dispatch_queue_create("org.csa-iot.matter.framework.device.workqueue", DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL); _asyncWorkQueue = [[MTRAsyncWorkQueue alloc] initWithContext:self]; @@ -362,19 +360,9 @@ - (void)dealloc MTR_LOG("MTRDevice dealloc: %p", self); } -+ (MTRDevice *)_deviceWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController *)controller -{ - return [controller deviceForNodeID:nodeID]; -} - + (MTRDevice *)deviceWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController *)controller { - auto * device = [self _deviceWithNodeID:nodeID controller:controller]; - if (device) { - std::lock_guard lock(device->_lock); - device->_accessedViaPublicAPI = YES; - } - return device; + return [controller deviceForNodeID:nodeID]; } #pragma mark - Time Synchronization diff --git a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm index 64ba651f0ce192..9beacdfd046bbc 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm @@ -2700,12 +2700,12 @@ static BOOL AttributeHasChangesOmittedQuality(MTRAttributePath * attributePath) // 3. The attribute is not in the spec, and the read params asks to assume // an unknown attribute has the Changes Omitted quality. // - // But all this only happens if this device has been accessed via the public - // API. If it's a device we just created internally, don't do read-throughs. + // But all this only happens if this device is not suspended. If it's suspended, read-throughs will fail + // anyway, so we should not bother trying. BOOL readThroughsAllowed; { std::lock_guard lock(_lock); - readThroughsAllowed = _accessedViaPublicAPI; + readThroughsAllowed = !self.suspended; } if (readThroughsAllowed && (![self _subscriptionAbleToReport] || hasChangesOmittedQuality)) { // Read requests container will be a mutable array of items, each being an array containing: diff --git a/src/darwin/Framework/CHIP/MTRDevice_Internal.h b/src/darwin/Framework/CHIP/MTRDevice_Internal.h index 7a91b926560f30..d0661b2590e9cd 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Internal.h +++ b/src/darwin/Framework/CHIP/MTRDevice_Internal.h @@ -120,19 +120,8 @@ MTR_DIRECT_MEMBERS // Our controller. Declared nullable because our property is, though in // practice it does not look like we ever set it to nil. MTRDeviceController * _Nullable _deviceController; - - // Whether this device has been accessed via the public deviceWithNodeID API - // (as opposed to just via the internal _deviceWithNodeID). - BOOL _accessedViaPublicAPI; } -/** - * Internal way of creating an MTRDevice that does not flag the device as being - * visible to external API consumers. - */ -+ (MTRDevice *)_deviceWithNodeID:(NSNumber *)nodeID - controller:(MTRDeviceController *)controller; - - (instancetype)initForSubclassesWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController *)controller; - (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController *)controller; From b1030ada898620d19713597f24a8669905c23de1 Mon Sep 17 00:00:00 2001 From: chirag-silabs <100861685+chirag-silabs@users.noreply.github.com> Date: Wed, 11 Sep 2024 21:07:10 +0530 Subject: [PATCH 44/50] [Silabs] Fixing the switch ladder and removing warning flags (#35366) * fixing the switch ladder and removing warning flags * Restyled by clang-format * adding unused parameter cflag due to wifi sdk * Restyled by gn * adding the correct warning options * updating the warning flag and only deleting fabrics for wifi * adding the remove services to get rid of the matter multicast service --------- Co-authored-by: Restyled.io --- examples/platform/silabs/BaseApplication.cpp | 20 ++++++++++++++------ third_party/silabs/SiWx917_sdk.gni | 7 ------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/examples/platform/silabs/BaseApplication.cpp b/examples/platform/silabs/BaseApplication.cpp index c61b91f7400879..37efb09fe5c207 100644 --- a/examples/platform/silabs/BaseApplication.cpp +++ b/examples/platform/silabs/BaseApplication.cpp @@ -802,6 +802,10 @@ void BaseApplication::ScheduleFactoryReset() { Provision::Manager::GetInstance().SetProvisionRequired(true); } +#if SL_WIFI + // Removing the matter services on factory reset + chip::Dnssd::ServiceAdvertiser::Instance().RemoveServices(); +#endif PlatformMgr().HandleServerShuttingDown(); // HandleServerShuttingDown calls OnShutdown() which is only implemented for the // basic information cluster it seems. And triggers and Event flush, which is not // relevant when there are no fabrics left @@ -851,19 +855,23 @@ void BaseApplication::OnPlatformEvent(const ChipDeviceEvent * event, intptr_t) case DeviceEventType::kThreadConnectivityChange: case DeviceEventType::kInternetConnectivityChange: { #ifdef DIC_ENABLE - VerifyOrReturn(event->InternetConnectivityChange.IPv4 == kConnectivity_Established); - if (DIC_OK != dic_init(dic::control::subscribeCB)) + if (event->InternetConnectivityChange.IPv4 == kConnectivity_Established) { - ChipLogError(AppServer, "dic_init failed"); + if (DIC_OK != dic_init(dic::control::subscribeCB)) + { + ChipLogError(AppServer, "dic_init failed"); + } } #endif // DIC_ENABLE #ifdef DISPLAY_ENABLED SilabsLCD::Screen_e screen; AppTask::GetLCD().GetScreen(screen); // Update the LCD screen with SSID and connected state - VerifyOrReturn(screen == SilabsLCD::Screen_e::StatusScreen); - BaseApplication::UpdateLCDStatusScreen(false); - AppTask::GetLCD().SetScreen(screen); + if (screen == SilabsLCD::Screen_e::StatusScreen) + { + BaseApplication::UpdateLCDStatusScreen(false); + AppTask::GetLCD().SetScreen(screen); + } #endif // DISPLAY_ENABLED if ((event->ThreadConnectivityChange.Result == kConnectivity_Established) || (event->InternetConnectivityChange.IPv6 == kConnectivity_Established)) diff --git a/third_party/silabs/SiWx917_sdk.gni b/third_party/silabs/SiWx917_sdk.gni index e91afe7483b3fa..3c5d8817b2d217 100644 --- a/third_party/silabs/SiWx917_sdk.gni +++ b/third_party/silabs/SiWx917_sdk.gni @@ -336,16 +336,9 @@ template("siwx917_sdk") { libs += [ "${sdk_support_root}/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a" ] cflags += [ - "-Wno-maybe-uninitialized", "-Wno-shadow", - "-Wno-empty-body", - "-Wno-cpp", - "-Wno-missing-braces", - "-Wno-sign-compare", - "-Wno-error", "-Wno-unknown-warning-option", "-Wno-unused-variable", - "-Wno-unused-function", ] foreach(include_dir, _include_dirs) { From b70b7455982220c7269596f1b827c75606500fd9 Mon Sep 17 00:00:00 2001 From: Terence Hampson Date: Wed, 11 Sep 2024 11:49:39 -0400 Subject: [PATCH 45/50] update_cluster_revisions.py excludes updating no-unique-id example's BINFO cluster (#35510) --------- Co-authored-by: Boris Zbarsky --- scripts/tools/zap/update_cluster_revisions.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/tools/zap/update_cluster_revisions.py b/scripts/tools/zap/update_cluster_revisions.py index e29a274cf47087..797fd1733f3771 100755 --- a/scripts/tools/zap/update_cluster_revisions.py +++ b/scripts/tools/zap/update_cluster_revisions.py @@ -24,11 +24,15 @@ import sys from pathlib import Path +BASIC_INFORMATION_CLUSTER_ID = int("0x0039", 16) CHIP_ROOT_DIR = os.path.realpath( os.path.join(os.path.dirname(__file__), '../../..')) +EXCLUDE_FROM_UPDATE_DICTIONARY = { + BASIC_INFORMATION_CLUSTER_ID: ["lighting-app-data-mode-no-unique-id"] +} -def getTargets(): +def getTargets(cluster_id: int): ROOTS_TO_SEARCH = [ './examples', './src/controller/data_model', @@ -40,6 +44,10 @@ def getTargets(): for filepath in Path(root).rglob('*.zap'): targets.append(filepath) + if cluster_id in EXCLUDE_FROM_UPDATE_DICTIONARY: + for target_to_exclude in EXCLUDE_FROM_UPDATE_DICTIONARY[cluster_id]: + targets = [target for target in targets if target_to_exclude not in target.parts] + return targets @@ -130,7 +138,7 @@ def main(): os.chdir(CHIP_ROOT_DIR) - targets = getTargets() + targets = getTargets(args.cluster_id) if args.dry_run: for target in targets: From a62b5dbe1057a7214d9d22d3f85ae6ee8511c718 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Wed, 11 Sep 2024 12:31:29 -0400 Subject: [PATCH 46/50] Remove `all.xml` (#35521) * Remove unused file * Fix the documentation * Restyled by prettier-markdown --------- Co-authored-by: Andrei Litvin Co-authored-by: Restyled.io --- .../how_to_add_new_dts_and_clusters.md | 9 +- src/app/zap-templates/zcl/data-model/all.xml | 128 ------------------ 2 files changed, 4 insertions(+), 133 deletions(-) delete mode 100644 src/app/zap-templates/zcl/data-model/all.xml diff --git a/docs/cluster_and_device_type_dev/how_to_add_new_dts_and_clusters.md b/docs/cluster_and_device_type_dev/how_to_add_new_dts_and_clusters.md index 8d73a257c28996..90d82c60310a90 100644 --- a/docs/cluster_and_device_type_dev/how_to_add_new_dts_and_clusters.md +++ b/docs/cluster_and_device_type_dev/how_to_add_new_dts_and_clusters.md @@ -17,10 +17,9 @@ directory:** 1. [.github/workflows/tests.yaml](https://github.com/project-chip/connectedhomeip/tree/master/.github/workflows/tests.yaml) 2. [scripts/rules.matterlint](https://github.com/project-chip/connectedhomeip/tree/master/scripts/rules.matterlint) -3. [src/app/zap-templates/zcl/data-model/all.xml](https://github.com/project-chip/connectedhomeip/tree/master/src/app/zap-templates/zcl/data-model/all.xml) -4. [src/app/zap-templates/zcl/zcl-with-test-extensions.json](https://github.com/project-chip/connectedhomeip/tree/master/src/app/zap-templates/zcl/zcl-with-test-extensions.json) -5. [src/app/zap-templates/zcl/zcl.json](https://github.com/project-chip/connectedhomeip/tree/master/src/app/zap-templates/zcl/zcl.json) -6. If it is a derived cluster, add a reference to the base cluster definition. +3. [src/app/zap-templates/zcl/zcl-with-test-extensions.json](https://github.com/project-chip/connectedhomeip/tree/master/src/app/zap-templates/zcl/zcl-with-test-extensions.json) +4. [src/app/zap-templates/zcl/zcl.json](https://github.com/project-chip/connectedhomeip/tree/master/src/app/zap-templates/zcl/zcl.json) +5. If it is a derived cluster, add a reference to the base cluster definition. (e.g. in mode-base-cluster.xml you may need to add cluster codes - otherwise you may get strange exceptions which aren't clear when running regen_all.py) @@ -31,7 +30,7 @@ directory:** > > ``` -7. [src/controller/python/chip/clusters/\_\_init\_\_.py](https://github.com/project-chip/connectedhomeip/tree/master/src/controller/python/chip/clusters/__init__.py) +6. [src/controller/python/chip/clusters/\_\_init\_\_.py](https://github.com/project-chip/connectedhomeip/tree/master/src/controller/python/chip/clusters/__init__.py) **Enable your new cluster in the Python and Android clients** in [src/controller/data_model/controller-clusters.zap](https://github.com/project-chip/connectedhomeip/blob/master/src/controller/data_model/controller-clusters.zap) diff --git a/src/app/zap-templates/zcl/data-model/all.xml b/src/app/zap-templates/zcl/data-model/all.xml deleted file mode 100644 index 265e80c079e161..00000000000000 --- a/src/app/zap-templates/zcl/data-model/all.xml +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 49b48ad5df227685d150d5abb833784a018432ee Mon Sep 17 00:00:00 2001 From: Justin Wood Date: Wed, 11 Sep 2024 10:38:08 -0700 Subject: [PATCH 47/50] Moving these to async, as the completions already work when needed (#35537) * Moving these to async, as the completions already work when needed * Restyled by clang-format * Adding injection for events/attributes * Missing brace * Restyled by clang-format --------- Co-authored-by: Restyled.io --- .../Framework/CHIP/MTRDefines_Internal.h | 2 +- .../Framework/CHIP/MTRDeviceController_XPC.mm | 6 ++-- .../Framework/CHIP/MTRDevice_Concrete.mm | 34 +++++++++++++------ src/darwin/Framework/CHIP/MTRDevice_XPC.mm | 3 +- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDefines_Internal.h b/src/darwin/Framework/CHIP/MTRDefines_Internal.h index 94a1cbb3da61f4..983226704301e3 100644 --- a/src/darwin/Framework/CHIP/MTRDefines_Internal.h +++ b/src/darwin/Framework/CHIP/MTRDefines_Internal.h @@ -91,7 +91,7 @@ typedef struct {} variable_hidden_by_mtr_hide; { \ NSXPCConnection * xpcConnection = XPC_CONNECTION; \ \ - [[xpcConnection synchronousRemoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) { \ + [[xpcConnection remoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) { \ MTR_LOG_ERROR("Error: %@", error); \ }] PREFIX ADDITIONAL_ARGUMENTS]; \ } diff --git a/src/darwin/Framework/CHIP/MTRDeviceController_XPC.mm b/src/darwin/Framework/CHIP/MTRDeviceController_XPC.mm index 7ca9fde2099e03..29860fd41f1039 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController_XPC.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController_XPC.mm @@ -181,7 +181,7 @@ - (BOOL)_setupXPCConnection MTR_LOG("%@ Activating new XPC connection", self); [self.xpcConnection activate]; - [[self.xpcConnection synchronousRemoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) { + [[self.xpcConnection remoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) { MTR_LOG_ERROR("Checkin error: %@", error); }] deviceController:self.uniqueIdentifier checkInWithContext:[NSDictionary dictionary]]; @@ -193,7 +193,7 @@ - (BOOL)_setupXPCConnection MTR_LOG("%@ => Registering nodeID: %@", self, nodeID); mtr_weakify(self); - [[self.xpcConnection synchronousRemoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) { + [[self.xpcConnection remoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) { mtr_strongify(self); MTR_LOG_ERROR("%@ Registration error for device nodeID: %@ : %@", self, nodeID, error); }] deviceController:self.uniqueIdentifier registerNodeID:nodeID]; @@ -288,7 +288,7 @@ - (MTRDevice *)_setupDeviceForNodeID:(NSNumber *)nodeID prefetchedClusterData:(N MTR_LOG("%s: returning XPC device for node id %@", __PRETTY_FUNCTION__, nodeID); mtr_weakify(self); - [[self.xpcConnection synchronousRemoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) { + [[self.xpcConnection remoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) { mtr_strongify(self); MTR_LOG_ERROR("%@ Registration error for device nodeID: %@ : %@", self, nodeID, error); }] deviceController:self.uniqueIdentifier registerNodeID:nodeID]; diff --git a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm index 9beacdfd046bbc..6342a46bcd8432 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm @@ -1852,24 +1852,38 @@ - (void)_handleAttributeReport:(NSArray *> *)attrib [self _reportAttributes:[self _getAttributesToReportWithReportedValues:attributeReport fromSubscription:isFromSubscription]]; } -#ifdef DEBUG -- (void)unitTestInjectEventReport:(NSArray *> *)eventReport +// BEGIN DRAGON: This is used by the XPC Server to inject reports into local cache and broadcast them +- (void)_injectAttributeReport:(NSArray *> *)attributeReport fromSubscription:(BOOL)isFromSubscription { + [_deviceController asyncDispatchToMatterQueue:^{ + [self _handleReportBegin]; + dispatch_async(self.queue, ^{ + [self _handleAttributeReport:attributeReport fromSubscription:isFromSubscription]; + [self _handleReportEnd]; + }); + } errorHandler:nil]; +} + +- (void)_injectEventReport:(NSArray *> *)eventReport +{ + // [_deviceController asyncDispatchToMatterQueue:^{ // TODO: This wasn't used previously, not sure why, so keeping it here for thought, but preserving existing behavior dispatch_async(self.queue, ^{ [self _handleEventReport:eventReport]; }); + // } errorHandler: nil]; +} + +// END DRAGON: This is used by the XPC Server to inject attribute reports + +#ifdef DEBUG +- (void)unitTestInjectEventReport:(NSArray *> *)eventReport +{ + [self _injectEventReport:eventReport]; } - (void)unitTestInjectAttributeReport:(NSArray *> *)attributeReport fromSubscription:(BOOL)isFromSubscription { - [_deviceController asyncDispatchToMatterQueue:^{ - [self _handleReportBegin]; - dispatch_async(self.queue, ^{ - [self _handleAttributeReport:attributeReport fromSubscription:isFromSubscription]; - [self _handleReportEnd]; - }); - } - errorHandler:nil]; + [self _injectAttributeReport:attributeReport fromSubscription:isFromSubscription]; } #endif diff --git a/src/darwin/Framework/CHIP/MTRDevice_XPC.mm b/src/darwin/Framework/CHIP/MTRDevice_XPC.mm index 46f143e4bc189e..2f7fb260ebde48 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_XPC.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_XPC.mm @@ -244,8 +244,7 @@ - (void)_invokeCommandWithEndpointID:(NSNumber *)endpointID { NSXPCConnection * xpcConnection = [(MTRDeviceController_XPC *) [self deviceController] xpcConnection]; - // TODO: use asynchronous XPC and register a block with controller to call for this transaction - [[xpcConnection synchronousRemoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) { + [[xpcConnection remoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) { MTR_LOG_ERROR("Error: %@", error); }] deviceController:[[self deviceController] uniqueIdentifier] nodeID:[self nodeID] From 021f4311fb910905ccc38c9fcd54896704f0c49f Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Wed, 11 Sep 2024 14:04:10 -0400 Subject: [PATCH 48/50] Update python builds to latest CI image (ubuntu 24.04 build) (#35534) * Switch python builds to latest CI image * Switch logic for pip updates and wheel installation: do not hardcode paths * More fixes for new python, where pip cannot just be used --- .github/workflows/build.yaml | 14 ++++++++------ scripts/build_python.sh | 4 ++-- scripts/build_python_device.sh | 4 ++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index be259e232e5022..83ecc7e00a2192 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -283,7 +283,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build:54 + image: ghcr.io/project-chip/chip-build:74 volumes: - "/:/runner-root-volume" - "/tmp/log_output:/tmp/test_logs" @@ -316,9 +316,10 @@ jobs: run: | scripts/run_in_build_env.sh 'virtualenv pyenv' source pyenv/bin/activate - pip3 install ./out/controller/python/chip_core-0.0-cp37-abi3-linux_x86_64.whl - pip3 install ./out/controller/python/chip_clusters-0.0-py3-none-any.whl - pip3 install ./out/controller/python/chip_repl-0.0-py3-none-any.whl + python -m ensurepip --upgrade + python -m pip install ./out/controller/python/chip_core-0.0-cp37-abi3-linux_x86_64.whl + python -m pip install ./out/controller/python/chip_clusters-0.0-py3-none-any.whl + python -m pip install ./out/controller/python/chip_repl-0.0-py3-none-any.whl - name: Run Python tests shell: bash @@ -334,7 +335,8 @@ jobs: scripts/run_in_build_env.sh 'scripts/examples/gn_build_example.sh examples/chip-tool out/' scripts/run_in_build_env.sh 'virtualenv pyenv' source pyenv/bin/activate - pip3 install -r scripts/setup/requirements.setuppayload.txt + python -m ensurepip --upgrade + python -m pip install -r scripts/setup/requirements.setuppayload.txt python3 src/setup_payload/tests/run_python_setup_payload_test.py out/chip-tool build_linux_python_lighting_device: @@ -344,7 +346,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build:54 + image: ghcr.io/project-chip/chip-build:74 volumes: - "/:/runner-root-volume" - "/tmp/log_output:/tmp/test_logs" diff --git a/scripts/build_python.sh b/scripts/build_python.sh index 9bb919605e229c..eaf1ad9c0e3050 100755 --- a/scripts/build_python.sh +++ b/scripts/build_python.sh @@ -217,8 +217,8 @@ if [ -n "$install_virtual_env" ]; then fi source "$ENVIRONMENT_ROOT"/bin/activate - "$ENVIRONMENT_ROOT"/bin/python -m pip install --upgrade pip - "$ENVIRONMENT_ROOT"/bin/pip install --upgrade "${WHEEL[@]}" + "$ENVIRONMENT_ROOT"/bin/python -m ensurepip --upgrade + "$ENVIRONMENT_ROOT"/bin/python -m pip install --upgrade "${WHEEL[@]}" if [ "$install_pytest_requirements" = "yes" ]; then YAMLTESTS_GN_LABEL="//scripts:matter_yamltests_distribution._build_wheel" diff --git a/scripts/build_python_device.sh b/scripts/build_python_device.sh index 9b21d28954c409..17824403184c12 100755 --- a/scripts/build_python_device.sh +++ b/scripts/build_python_device.sh @@ -104,8 +104,8 @@ virtualenv --clear "$ENVIRONMENT_ROOT" WHEEL=("$OUTPUT_ROOT"/controller/python/chip_core*.whl) source "$ENVIRONMENT_ROOT"/bin/activate -"$ENVIRONMENT_ROOT"/bin/python -m pip install --upgrade pip -"$ENVIRONMENT_ROOT"/bin/pip install --upgrade --force-reinstall --no-cache-dir "${WHEEL[@]}" +"$ENVIRONMENT_ROOT"/bin/python -m ensurepip --upgrade +"$ENVIRONMENT_ROOT"/bin/python -m pip install --upgrade --force-reinstall --no-cache-dir "${WHEEL[@]}" echo "" echo_green "Compilation completed and WHL package installed in: " From f46de96fb945c0feb4b3f7046914b7b36d1a6d63 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Wed, 11 Sep 2024 14:10:26 -0400 Subject: [PATCH 49/50] Switch infineon builds to latest CI image (#35535) * Switch infineon builds to latest CI image * Set up an environment for modus toolbox because image does not have it --- .github/workflows/examples-infineon.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/examples-infineon.yaml b/.github/workflows/examples-infineon.yaml index 290e67273f9bd3..0fcfac2ce7890e 100644 --- a/.github/workflows/examples-infineon.yaml +++ b/.github/workflows/examples-infineon.yaml @@ -37,7 +37,10 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: ghcr.io/project-chip/chip-build-infineon:54 + image: ghcr.io/project-chip/chip-build-infineon:74 + env: + # TODO: this should probably be part of the dockerfile itself + CY_TOOLS_PATHS: /opt/Tools/ModusToolbox/tools_3.2 volumes: - "/tmp/bloat_reports:/tmp/bloat_reports" steps: From e64ab7181ad48e245b4e09feef38df841e61f2c1 Mon Sep 17 00:00:00 2001 From: Vatsal Ghelani <152916324+vatsalghelani-csa@users.noreply.github.com> Date: Wed, 11 Sep 2024 14:58:32 -0400 Subject: [PATCH 50/50] Fix same test run multiple times avoiding duplication (#35539) --- .github/workflows/tests.yaml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 3a9bca19317216..2c68b91222bf80 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -522,19 +522,17 @@ jobs: scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/controller/python/test/test_scripts/mobile-device-test.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/execute_python_tests.py --env-file /tmp/test_env.yaml --search-directory src/python_testing' scripts/run_in_python_env.sh out/venv './scripts/tests/TestTimeSyncTrustedTimeSourceRunner.py --all-clusters out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test-data-model-check-check-failure-die/chip-all-clusters-app' - scripts/run_in_python_env.sh out/venv './src/python_testing/test_testing/test_TC_ICDM_2_1.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestIdChecks.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestSpecParsingDeviceType.py' - scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestSpecParsingSupport.py' - scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestConformanceTest.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestConformanceSupport.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestConformanceTest.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestChoiceConformanceSupport.py' + scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestMatterTestingSupport.py' + scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestSpecParsingSupport.py' + scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/test_testing/test_TC_ICDM_2_1.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/test_testing/test_IDM_10_4.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/test_testing/test_TC_SC_7_1.py' scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/test_testing/TestDecorators.py' - scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestMatterTestingSupport.py' - scripts/run_in_python_env.sh out/venv 'python3 ./src/python_testing/TestSpecParsingSupport.py' - name: Uploading core files

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�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%0D+{K0-4L0|7CfAh|FvbkCB?Z$** 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 literal 0 HcmV?d00001 diff --git a/examples/platform/nxp/mcxw71_k32w1/doc/images/mcxw71_debug.jpg b/examples/platform/nxp/mcxw71_k32w1/doc/images/mcxw71_debug.jpg new file mode 100755 index 0000000000000000000000000000000000000000..21bd041ebd3f14f9d77f530ef375fa078c66676f GIT binary patch literal 68145 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�Rb-Qa}v@u(kQ z!drZDU{lI)sifsjL1((QJ>6(Wx!fZ1+Jg;%9!~(J+Rgys`I%!y>ppR4u7R{w(dG%U zpyn;^HhZV&rnDAy6P)$YO4}<)j@89T&3IW!$(HgbP5Vs}63b}CHBr_AX3z?g^sw-T zURNdUXlau@W_8vaz}*e*Zh>prBx~h=(8YKl_MR{jT%0jSL?a>p`n4Na{_vPeVrN~2 zmv%3_x}u*!STAOJ86(Uryq@NHN;8nO%h^7#%+Je!@Bain$*bEh^#w2W+uc(s)Md(c z#z_`Jx^=m$7Wz%iOjl%6zV~L;x>7Q>%jx!nZHg#|^icVielB|;Yhz2m{o+_}zfGuj z(`_C{);o82!JS`O;#zVk158G$qcHcP^YbG!WKQ?DS`Oc~-uyGyXLXmFeg>Dyi4@p& zQ(<2ooVc2+=B#+-_)QKQSg*jc4zDP#adc6u=g_3-nX@3-%8})XGJa2NzKy4eyNrO^ zZ}*-N7JcdIIH*-VZc{CE_X4uoydt&GYscDC|5d0*;sZ@4(V7T<^^R|$l}H3ozao)j z;a=PkY-h|cY%@Bu6CzFU*dc&uoVW0+{Up5AZ_8}_sP#S`@6u&^F;lBp@rj!;!F}~7 zadA{~ORf*zf8BfM@R-8~g?{W)OIhV|Si6pvH!L~}efB+_2!0%j$6w0(h$KM~Czf<* zw!@-e1Eo|5zK{qjLAJn5jfyfSXZ3QV9t&Zu(fhd#!|V+>MZRqkSSfRs!eO}>A)D>b zBbFd?CVG6YdQ2>{^dLg4?-LlfK_P=9JEq^8~y6MZ=7y1wm+i<~lO0<<=0|X_}U&wmz;$V?V#<@e9XeMLN1eP^NY`x083k^Eo zQq?ExlCH4tqc@~&iW>Y1a9+K{BJz?EzfOm}rAj^Fc5Bq0#%t;^j?(!UrT5&_=#Jfk z-Zs#hEQ8rn`gR#A{~V3KVuiRkLN{C(mQ?K5M0rVC6@e4rBCNB|DswawJ_eXNcvZNX z-hMwMN*R`FUOiNtA51I#zS^kTE3sC<_mpg^ZY@(eEZV+c=Y$PxsHpJ6NqUbWg1o%Cva_H$g4&mL}S47X#aVm=rtSN@h` zExKsR5c#dsEFHec_>9)fuTKHvCjPP>X6|BMBT$Ayn;`F=e%P_EM~a*&kLPj3<_dFY zys@5l;N0f|Cw`$9juiw zV-fnbv}^)xVU>SY+>R^{v(h<9@^~B7Nm|nsp}a$4uU3^B^*PnKo8Nj~Ys_|+v8rku z!dxHZnsoPdu?U1#;0b{2AHn9NH6G1#Dtz{4Qf(rM<6&`U%xduSP z!dnv?f%YyL(Hp$hd&TZbKb;wIzb?IiQ zw||7wg&$91QR9vBY=a{(r`0B$aor(1$D$i=c?NRz>10+r>co7@Z<$U+!l=Qu$7quS zz(pxLAouM#{lM26`&9^EC}UR594-q0P%pMtWApHaE{o%mJOGNc6jfjO`r zugP_(aNbg|K_y6xhv6h<6UVdwuq?p$b-UM^Vnlid={~QXDAT^n<~RtuDV6CHx{uDd zx|wl&?cHr^wM0dtItHy`=MTj#=Hiw;Nwke#o>REtdMhmEt7)mianT(8zHRs-g!AB1 zqa~2Xf}oc{!T|@{X8VR#gjVql6tFopYOP#h0C9VWA_;A#S3m^gz&Y1x}56ls`qxKHdY_xQ&O>)0PqVqy^Ax_je?yv`WM)l5jEqkUmkl)?8g6ysMXTx4!)*dV7VV{M-0qG<+w5g|6$ao^$FnR$%7lvM` zaAq#fzE)FeWCMG;FOH?JZyTFD%49E+>ZND=k|dVSN^xp;?coz}4KzMN9B=$E1lI_v z*l^MvE{8qex1)%|q2-~HV$`yjyilhYerPG;oCcfAgl)iU5br6h@*Bemyu!l6UQ+ns z6Mg$}f=uu)Wgk-?tHzx&-OPp8ZxfBoL{4}<~j zNHs}_-Q6ker$%F|bzt|`_VHvygcY_ksbB867^Sl!C#EmvuM*}roX0K>u1e9nufID} z`E;x7&Cb;@DWxcB89e>Y?S096r;zetbS-t$8;7%m7h@V-H1{_}eBz*PA+JU~J2WhW zZohUJJ!2-jmGOL`iJoB7fM_oxD7)rTye=Igw>d*}JZGHF^?kaFXpx4bn$0&`<`}o0@{iE}f$TH}=wT)WwB0P`r zX)A_Joi_+I!LScYlkN3+k-~S2e9o3>@2-=Q@jq}?Yt{7;%eacY42e$wH(m+1_EJaZ zqC^bpEp4lmpO2~4-c=p666x~|Qj24-i0*FY%q`hS7NgTQRIBa zVrcGn^KqwUJH_z~wG{QbMsUH=lzGS^S${WIa*-+|(i+0R{rJ7a&dUUJjmq(r#NrPm zx)!>6c73fkM>_)BhLl=NY|;5`i}kx3tlk_*#Bv~b*N#CMsiu*P9^o{r^(@eE%X+Bz zAPQ5VmsXhS>8gsjkVM?-1y;b0EhoROxZ%r2zwQoluZ_H0WIsW{Z`ilGX7?mr2Aj>u z#A~4aJgFz6SBiyJd#Euh*YDQJ3nCmda^e*_(-m^*VCP5bOL1*S34GSTiJ)%Rg20n3 z8{TQ%bd`9tFV~u*-IASec_ERV&l9F21ZPmR4GVaBTiUii-W=q$VwxHOcZQPG#4d5r zD|plGXpA!}7;G6s7R?n&SseRocOvfyk@o7nf2~>`zuP536f>>BHz+{HMXsFR&-+{-=WCWJhZHqsPhN8LH1pVdw3T1xYOM}jJ!|VdpXh?>z2hU;d#or?@*={ zfcuAEq?ngipI3eLl0Zq#l`M`l>gJ~*X$IdgXMPpM{rH3eLnUKJR||^*?+Q;#_LT-h z0sDt>oCWU`L=_h(jSdZ)b6Ku?`O9ahMV~5&? z#)wj3b$O5k^K;0xD~v;SIGxVJUUkK0mxCU2W@@F?L+XXjeW{9-UQIY%llPYKhhFO9 zsz1{4ER1KsIHE}O9dsn;ZyrNQu#eqMj*k-``po&cIdGhaC(&3hCq{1MVcc6*hxT+V z%t|rM9P1jL`5-%UxbtNw8_SMq@SD^R^#9(Z1)n$kl*zZ#KNS>a^w2 zC~UED_QajBIh+`hk7dkpXtZZP+H|SDH#l(`Sar?y%~X?QRLRx*I=f&x)Lda@jv;J` zAKRSceWMJEXwPjq82cs1v4khH0!`MVgwb`6q|OskU8$?P&QxSmt&=G);?r0xy_oTeoAxrI`#H~s zb&7(k#sL5wR~oQjhGU|{%w(gVWQI|P<^9o zWu9(ypVf4o{T-p>nFk`p4QigdpilC2^hk8l8GqZU5u8!p&_T(`K0lS;+ZZ9_l*5`gcp8Dhrf-ZcsO+{@RfAiQp4tZL=``O2T_42InuMlVQ3rg0KomM)@HHB(3*Fz0Sk{i&LF#&z;ch-`<0XuF zj91K7NJ{H3fK6X*kQL$f6U2H29S~-`8U{>0x-8TwcBW>#M{)rvNW2sTjA^`eFKQP0 zy}k%K-*1N&*C@zF%Aad4qm8##|8z^)6@#GR5vO&==>Z_bNHxIlzKyuXP0qhQ1**8Z zizWyiyZ`BiKh1}bquQmSIs!TT4H?k%fJI^HBeEzf;{6Q)(7z%I`Kri+vhJ()7{dXe zrvHEyK!wXV1I+ttg+L(}N9)-!&F=@7F4@;gb9he?`s7Norx+Lu-k-*DRRh55$DzNw zUFWX^@UP6~*H4(R4iR3yDh9$?+$#x(lI>R^zZH-CZ-t>=#IpY1JOg?zwQ6H~Ux4KI!Y+#qR+7kH&7 zQi^wUhk8Nfw4NC{31|X}vI`P^mCN&gZQWAN6tGiMgqlNb5kDnju<5ZpudPBf3Ym(K3W}Uz?JBr zbe^$@mNopX+9+y8((DVM#{g|%_~z0g`ULu92pF|yqYKaaa+#O;@1@Ilm&AW-DMvYAbd{={uL}t)IRrny^>%8S#LP!6DXKpQya<*1FlPY6sB;5A}<` zaS!zSt6uV7&u&qZOb{;}TBM_$>*v21yFFPj@_18jy^S%Zgdb3iy;5g%C_a(Gk88vJfxm4p6T^Zu>t z|AS7WG~Z}D@N2@Hq+&yX<7A|u&*g{pLLjpf(3{_CGCz-<>M8Dwm5@ECs=tB1rC2XlQ@{}58(LT!9il9m{!2U zHA^N$g{iFbyF;#8mU{G`6hBGjzowPd?EnLcrt-S-+eJ=>d73TV^>N)a-8xqA`KFtg zM(%G9sK52VmHev%U0w_t=OejB`KOs_{#MTbCdO~h>+1ht<7WT%_TL|`|F@%e)QHz` z@hGxpTWq~Qqt~UKCD>301kg)+&DqCo*xGR ztPmM!y5IY9cE7dwet&S#)anCl9VL>d0E%p%(7Rz5?G3EER5sos2khb8O%KlEoX1N{_0q9d?@woS}1*5Ca3`F2(a z%gq3Exn15SxihR!F-^|g?=c}BkQMxDn$Am9-nOEe+}V`=C`CS;0sIjXv!)5Mku`s- z`qHs(+ceCHNT$n$*TBuh9irMi8=8Au5dmXhr(^+u!k5yfQ>=oXzjh9G?QoJ^X=VRzKkt&)!V1c6J1J zu7ybo{x|SQzFcz0|2Jf>h!o2I#QNqs}${M(~ilY06Cq}_H8pSQ^~u=IAf5-oq8mRTGo z*VUStQpx|wo(t4@@Hf|+yWIU=;CegaJMN>EQW1Y$$hF@^Y1SOJK-bviy&s#ACeq`Q@_jqKWSX*pdUUdN z-F0#8d$r}aP9o42N;TuxUiiRI&oqr(4}Ms?_S7yOt$EctaO}Z$M}_Ri16hU`!$lLN zB+7H%cQsqYrl-&kQR0{8H6w6^iSMggH}MM!4_TZE)uiype2(X@U1=^jSZU6Ent*DM z?4KanT;;rLRO`i#OUs0QJHY|8cw-&exqU6ANsW^-@372%o?o(lL)*zUv8f9x4RJS+ zs_YS3fMR-0Sdu3%p$Tz((%M5k58Xgp$QHXLZX_3sZC63$-(+lctp;So9x!dU9*jQg z9X3uL8RKWuH&v<~XJ_Em)uVNrEPU<1iBEe;zQzys)>vQS93)Y#E_ci^Ua6~klIotn z<4XsUFPsrC%FPHkLaC6on{dGQtUUNQz$dx*mm}vOcu{nxeSPD<6&FCuP00wnEddQ0B{*Osig(p58o7%G~2`8+`KuOpq?;1ts-iEnlaM zB%8ZrHFcr7WrrlkXOaiv8pV3n#P9@-cm#n>{Qkf@&QaGduR6@`NvJbtJU`e6n_6T} zXKZ@|D&X4~nAQ14?lh^*=g3}3Cb4d6wS;~y|60b%$mG(^6N%e`5+p5^Ro{mq8p6s` z0z&9*a@rr=p`eiB#Cj>{Ii_TY>QRyXWqC($e9|CHfAXC!M3JHOTSo$~@PXMPWRksm z2M8z7dY%kIvP+_iGyA?^(5NX5m|YlN0lBDYZGeqXT^HKOb?uq}6!Y=x06KZO8;$G- z(sJZQ)7Mi_R8#8(Pr*%{Uk!L)ff|DHE1fXhqzNWJJennKN}!>Pbn}bjByjYI<6IlIQKt; zmJS?mvJLGzZCH#qfeWqR!JLhdJK^GeL6!^x#pp6|(xV>KdsaM&>2C=-HNhl)qa&r1 z4c1xH)K<0Jb;izDx=n)_C<(~aPmpzdiP$e)2Ff>_G$Yyz^fzk0gB{&Rnf+UrUej&c z&Be9|3N5=pM|35+U~^U%E&+v><(pV9CXTUTuq+7cF0NAyUqJE_qHI7r*a$S#b{OXP zd~oC1E069yo@{ zf=s;|#?U@MlDX9{vQ`H=JT7^1D4ziDpB-Lf`T4HhpXUHXBK~>&Q(5nMTK+Nz`9F`J z%{&Cu^_Mx&{LA=Z$t<@h{yYaD5bo5Go zi)te6@-5*^NZfrL2u7$)$6}sF&9{C(9t{E5&!7u(|!^q4Dyqg$g0@(k}a^(8Ok?Z3N6O{ z$nLaXpy+98vyc6n{Z7-{72$8h7}Qd>LTkI>RrSY)x2zj{GORf*>fRSg-6>0S5IX;8 z;622apn@|qUkbwvUR+${kU%NaRf09S>GWn4K#F(YJt>&Hal5i^r;Gcs4PZnKSP#pu z0ce+NNLEne=xNrg_@BfGf` zQ%ipy8{&2zWa2tTjA-)uO8Guj&W~xVm^prjCSl90NF1!h9+gQihYUb$n#9g-??hG&tDRj ztgMESXr%^J*2XA#CQ;=;0K{NpW9VOoYSUkG+pqy$r%TcL;cIoD_{`i0HN==~I_ zhB50?BJr&wvkj$c>SGKEWW7SyxVSk6UK*C2sz-?IkJgHr=FM!*ktPrIJ>VTK&Pi%V-7EilOy4C?gp3Fk8~6kl?7JUCi8C(JmuZ2 zN7H?F5MFt`D`uRfotw=+J>y+LQzgX?%WW_Zjhr)KG>D` zel@z*C2C3?Tg;#OMa*_PM(ju2#D|PI2BM8#zDp`L)xDZZJb2t^J^jfUt9Lry@wjzJ zCFbC?F9w?Wn_gq_7^!74$xy@^^R*An-bgJX&%95%dw)bMsv>%s#}vGlk&Pk!K}7ve63z7yX`c|X!ZLUv{U20w z^0cV22gSWiGt-!qpUw6}bqm$Ht<=O>5Tu$&GL$7Xt=w;PkjA)6zRKxEQ`q|ciszQj z%Tp2YujxzQ;Ahi{EUZ7;80A$d-BW@FZnR;9jc2#lYV1u}UvblO`L;nr{Q;esoF;w_nHaYKw%i`_#E#Xs=IMcE`a8(pRna$&XT1Z+2Cno@$+2?@Rbaew@xuWc+rFNHbTFV!8q_-E%;nF0?)BV$GowqEYOCZis&fu zNd1tLGi+a^m)18^{R2I5ml?a#?XRlB!$e+Gi#U9FqwM_pxEk(N*}eserD8SDvMNe~ zaT24nXc|mZ8zaT;Zm>CuLaw12o6qd}$^b%Zy|KOB$cL(9&f=z830v_G4EU?7n3d~7 z^n%Ix$!yJCSS6lGy-CY?sQch-_^G$R&iO9&90l{Udfj3xqZopf+p`n}@9xRrknX1A zIrc8jnvW@tab{H>mO3@N99&JF_vI};HcQ1Tc{zLe_U^6wPukeVnTj(})U^7BuOO^S z%#BJEmL(SP^z;mZnDVYHTmC_`ppHfFm#omTp4x0EK&d-_vuZEdI28Q`s`fhzp_$th9CW`p3z+=$WM zl4G`F{!x=aY#V<5$_R?j*e+=kqjGvSAkO`Euli2Tgq$;fAX_taAd^*nIJkHT5s{5p zV<4{VY`iu$CzDz8UYU~{J4g)~_3WGH>b^>td*-5eVwiv4TK9uf%zLrl(kN~>H%d<% zcBFVab+l2pR#AYC_zq7meZ-TnkV@~RZ3>l$iJbbFg*n;vukjkAv!b2dy8_QjriE#E zNLL&Ojojqhlk<|U)17gpAIdB?f=MJyYNn!UjutZ1hE+U<_l6>u@UctNTsed7i};cm zVITH%XPz=v#}lm6G&#QtU!#mOkydLPk{U%^ptueU0ne(e|7w25Ci0^QB(J_m$GY|= zo2M1+fmsMr6B#2{LjCIVM}*^jvYH6-aBF?Hm~N%I35yASCAX3i3_7(FSB+Y(?@dXM ze0zRi&N-;qaOk#Qz;>dS<3f6H!%e1MjbIdBc3pBS*AJ80MA)O$Hhm~2Y(FF7AY$$A zOsOWA&#o6f<|mDxw4o3+)-tunlRqF=rkQ$E^Ru{cKXIX3&L;&7zF8P=UrrHe`A@!= z-cI(3TNkXgaB>uS}kkjij|@qkG)O3_4w>!gDlW*@IUXxcRF$kA2pZ zf#fURY$__YXKe288==m1;O3R%o%NUqXT3Olb5?MuxAAJ@+q~T5hzh$MYeFK?>}n+o zmMP>sSjZO3l}hIvjq{=E<(y%7>%ewFo;wea8sq;7YLTUW0X-aq?nX=DXCQz6MEzSj5s?9U5M)sQt^=po_=p|9qSLKYyuu>&G7t{X?dIEU7Wl~=llj%B1KN90sS?!MB+DC5mn3pqKseTMIwI#0J)JVYjOP>5Xi5=FCa@b zZJ+?_*9e&3{x-24JIt9vn1dhJ(iWCWVHW7to*nr#-(PjZLm(k@n!hD94{7!N$*v`g zR_jv@sP_(N2(*q&`Y#*L-%}QU{Pv%qP5+(i?+=;(A@jfB;{I!O-5+c1kG1y4TKi*< z{WI?Nuk5HdRgE$3xgnPE0^#Z{+PD@Bm-ssq4WMiQUfgr%5?$AS6>d-@5_$E$tQ8g3 z+B2~U`gMhAHU0&_Md0)k#G?%)0{@a;1#*UZtveZOEH{oLy_Xm(n(J$o1x|kGJgXRH zzbRe-OMN#)dOh|PvxY4Qo?Br^0Om0SuRqsjU!+!z;XmwR=xN7WA6ub4LTY%v)hTZGEk)esWCXuGvoAI7bitxYJXiapFvodG4zHRCkWe8agB1fnb^5*Hsw z(A|r-tvcS9s<|XNc_V3dX-usaoAHFAZazG5H*C2Xe8w;1CUW~@&*!Ga7xiuEvW?{f;I*=oHd`-ca7;IFJ0!L5kbrGaws7_PyK z=Bh7jrOhOO!kudz!i&X;s%&?obQa>DAQN=od!%>epTyXre>N3ywlSAA!ny5)GQ^*q z9e|X4Z3!J}Fv--;?F%yh(ZS}tP7e1Mb6x6D5rucNMJj&#;@aE7`~o* zdCx|q^#UiPs$Zc=o$$U+o9BA*?Puz-eQY?xrK3|PL!J|;-7QUov)a;e&1@Vo-IjBZ z(QsVG(tM++kInW;&K^q15WHOq$cxAow%uGi=Gr>r!ly~}HkUKs+lu5P3_ZsBqx?L2 z#%o?+x&PLc45EMm9`u2!s_sig++<4u(uUfR$K-`OBqz38e-2&!@N+itSaVY|w5Ja4 z5Tk(x67jsN11Rf@xQ_Rqf@{AR%TlziWtz*?qjk{%EmU3 z%Gr`-W=sK@QYm1?SUrC$!5uE{{14ItDFqgP+@Mg`PGNpwYP`&LYfPq-EpF z9q#iT>Tb`=7qD!&+auO-E~gd0KtA|={;8+;ZLxPX{whF$gv-E2wpw@0+qOfOopY}l zcYO&Pr(JcR))uISSfP?E<2n>~2w82R0R9sI%*)4ia13&I>YjL*v1_|7QNPYVK1$%K z34m060|1oW?LR*MwhV|~zZ%OPhkdXeewZChm;59s;H%Kv)0Hr4Yz9g{+1KS`b}P*h zhkEH`=Cys(-L`kSQjL0~H@9$3R29fpqVPg#&ar2JRS6(eQ{Vv>lfbzpw~nrtznZIJ zxfubV8EM&eFP6Cu_&o|XB@b@40I%?$q9FzUH_;HdUJFfSvPIn5xQrOoz`mVWPOsj<-B2U_t}yp_rie``>^+Gfb1Ayc;ygzCRYMoZz%*Cz=6xq!aC#X zm)5NV=mYOK$yG!9*q*<-djE`4^OshIuj8NoZls zzAQX3^Ld4Kbvgddi|Bf+AF|G$RI$YK!?~W1eJ(FgCf#0;`j`jlrd~;nor&$`H~lj_ z=sy$U^q+>b`8z?h{uuw?7b5qE{Qr>upW%=H6Cs>`tk3^X)~9(2yQASu6)$_}svIvY zeOJdxO^VQ&=KO{s6hQ`!E}oDFD)gg>POt3~&dHm92k!iH*no}WSN(GSoTvgx7g*o7 zs%i1=TIg~EgO|JKXUG)$-CwYof#8DAcLAK7|Euc5?bA}yoamlL17<4qAQQ=9A~`z} zH{1C)=z+TZdvQbnGY$PE{ajbYt~iOY&B}^>#8FM76rulleCu=%I~~F#lf-IwDT^=b4nKCV-@{T#wLk`xz*aBH4zaRYk1K)H zTy0ji{>5AK;Z z$2ISC%hiLKu1iXRE~+=nnbe;c2MC7QA1G7w-xHghXfx~S>Di7(8GzR|FI+;Gt{vL- zE?KQS;wHXnf28Lb{=&xFH-PIk`E~L&*)YGU`u^>?U}vBsy-JN07gK_=AL-ZE)vI^j zUv)}%Z5>E4I7qFe`ml&pqt2)!WgXH95;`)Ff>Ee<)==Yvk?r*fpDw0DUYW8B zHX^q09J5<7?qa47yXKh3k1oSs?n*UIn4`Pj2y)9nY}l7CUUU3+m2@4hklf- z;^K_&miPOi&HI!-Hn^{lj(hSIFZa~SN;*iNQxsy`x+ghslpMTc6tcv^kj$5Cb8cVx ze%LqGcb*Cr8=-6`Gg0->yG*ILyZ9xfls0~jP+{`hK~RuM;GMf>##3ju^<->IleVQ^ zZx`Lz?ONIx0=M{3$~^8fbppNb?Wa@|!hL$bI^`wNw*u9^=YDTET_P}*m6<;t z^OP7!C7AYyc0_5henfoKK?<5}T(2>UyQ7{?l!^KX`~>j{W+4D_*@z*EL{6{a%0bE& z-Nbp*z{&QaR44k;5A}XZ!I0%-f#myn3c&lvOEq&QYwI3uLgUFD%;t?bp|al!z?M8y zOr7X8Emh@4c~rlaF3}?eZwe3H>g5Js!s^0h?^1*yNS1dRk9vEwa3|K0#l24=$0eO%( zrdoWt5$R=`9DJ-Vuk0j2JGxw5>w4i|0u5q_BHs~G;74GWi;Pt-Y&g@}gSLboONa&yq%XHUwu zdc3Y@UAOh8t{gSIpmq=Z<(dKrt!pk|6_Y)m-7~~O7-hv>68(3m{h9M`&T?L0Ip)4}rVqFpVE(bTsS$G%%D{>3j+*Pht!2>tIGaaeZPHJLRDysB1r~Uec>(pgeu@A<; z?`H14E3J2LmL#&D2I{#ckMOJ7PRc6IN3OFil2+{~PSz>P5oF7J;sX!#WHDmpVwE#E z1>TYE@xBvXZgxKoLnZ`!spsgo7g8}P4dcl=iXuD0nRKMyr5nAy#hhA9X_~L2FR0nj zIw2-#Unnv&qoZ7;E4I&abGesEeBs^=NYdA3;ZDJw;+BLfif8%WO|3+ZBbH@?dwGpZ z*S6j?nqZFCTjY_uwkD}sp$f)kj4xyI* z@^YjC*6rXsE-R__A^leTT=zE(NE#FL8hyKJ3#JQeBktag+-A*R3$LH_^+^(U&$mPE z;a3h`Lv^S#)%5h*tZu2e^1XXjH_K2;B=-_i@s$7T448Zs5$Ie-tb=-`!<530h|cp) ze~6pgSP}Orj+fXw%%QYyrjC-pMdDG^ti>q&5||*xv7B7MGqGC_lyDuIDGtkZEoS&hsMzD}KiH^SysF zXn;~;Ngy(D1s+&iW=))&)+BKHi0BBnAFdzb$nNv9YsF=5#z}bPmF-At*&_7dElbVl z?oZIItD&svSLIDSxJv!*S3jQZpT8=$3p=v+@5?ZVV@TkZcH>-L11p5_uk$Jp&gI`U!&Rp9lSU_@W znCINOm6eGzlle^|8hE{Y|BYMNsJ-|U|<#V{9<5L;sc%UwiTH2RFj zG)k&#!QOX6bEio>*B~z|Azp1LIhj>I=R-vwq0zgSm{@t@;O8M48nsd=M?r<}Hcl#h zQxvsUH9?+@Q>D7Nsi4uu`m$dV3uNb)^5N zz3b{~Lfh6sq$o&Hq)1b$AVGQ$2ucYE2qF*yNRw)S&?KOMR4Gz|fQBweF9snYbTotx z(j}oui-4gDB53x>e!BOJ`vcCoW9*0ZwjSnKW3BnES-$y+(({PzZoiRzAFPUX4Vb3! z)-x}ufnE9EHyE(>64q%(XC_V1_+LTw%-@K>aeG_nkdT;s*9V7T1!(0aS`=+d0Px;o z1PC&i)*J_#%q+|v8VP}cEXr+YbFrH&a^2E>T`{Q&Y+)zU@3?#!ukD7!2Puz75SC{> zPK})5*I%2qKFKBf9;lL!u^t$>eoo8}kTxhgTc55Cx(-xI8CAR2;d&AOfrAk|Vg~LP zo1W*Q4alDpGB6#D`;k1zN0DrlxRG4ngahXby7y_jG+)bT(5U1s_oNDp|B$M4pST)? z+VLPtWFy3pE=6%NBQy!W6)`feV4Syw-h|WK^|wiY|CTk>I$m}P?;Q8bHE(;wBDIgt zFk`y)4W1WrwUUwtx6sb2*t{Eqzf$_d`dfELzYlCx{~D8M1Y|Z!v}}pp-^V2hP+7T= zjT*^;mv73yf%#r?s}M}jpzfy|PF^V~54{hbxS74rTjwjAemOOKYqoCTYFMmSev(JW zoCm#n*WcX1D_b8?rjtN^!$7vvoR*tD;Y#f5a-RhES}@F%yl^X3A*S8KQKV2$h6t8> z!CqAXkHjm+W?YWSLTIV^wLLTS8#5ksQvdavy~zGqN-pFpa$pt)T*I`Z&WXkb-TL+w zy)~-FH|*H7dz9tY5K&%p;oK>C4H>Xk9Du3VYG^J~|ZQ zuxg~gN?1^Ny8S4sGrM%#S1+}Ea`FV55H#=WgQ#E0Gxg=wS8kfbY!{<(PYec(^H?j@ z)CAymukJC@hl>8qJ-~!;%z|pT6|}ND-Ei4Vu{iOMZI5}S<^qaV$_38*?>asg%JC{E zeQ9cH%K9`%0yggJeeUZ?zU=1ICHP&AO%9#{hc@05lyNp+8a}^bi99j^(+^)qd0K8- zMSC&I?d$OxP`cJ$6)+Xm0`HqNO#i?&QY`0vVUl!@5){j>3Wg#f5|_WLC}zT%VzPA@Nm`p&|)%j zm4QZcvwuW2sK3Xk_kZzb(EJy7tnmr?{)9mZm%g}9c(s?- zmQO68(L7o)W|G55v{}qXm=?KnMbflGh{C%m$AOen>>un%;o#z*zW@y@eva_Yy`5Y9 zLOcbCVE(cK9r5iNnff{x`ZJnuIPpbnb0QZ(V9;h~JhKMV3x8cgWdu8RWa_gQ%5&oF ztF~HraG+#sCJ@!Xf=6}w-i5#LNe7uvG_RI0zJ_tRVF?h|Hext%iXnk5?C7Co{__N zHeI7808kY5gnLe|Q>xMs4>UWlMkuwad!Uo=sXTn-z`bvnW&IGi#$&9N)y+yW(voF4 z6XBS9Z}(+K(cYbtxbGTnJ{K`LJXuFiIP>ZP;%16YYj8x+#?@UUWD_~JK_rxW_$ZGO z-%Y#?{hg4WM>93!HYc)b>7uzn-nX@3&0n2E!#DI63UhvCZlT%<85N#iY=^VfW-+)B zCi!gx`Sbw5V1=XZ=|@~UfA0)2Ph}Zu>s+v6Nh}ggmr2nM>q7{u=EQ+wgz~Ga_PA-v zXE4SUa0fE9xX?=h3U0U~-TmD9djNwjPn=TUQ&S<_mFDJDylp8&$dbSoh!qYO@Bm3G z&zw*(*peIOTPFvcuKKxo8;h*=qmQodf$sWKkZFvqV6OIh^HcZH|p z>7uL*c)4Bscnq-1{1o>=lkvJAHkZ6yj!cbii=h?$h^+9Mn1J`IPk)DDjd8Sl>_Qs$ zC(7cgJon7y^GJ}_tVXLGYt}}EbZJ9|rgKr})Q5!_k&AeYhf!O{c+L05`i7ohAF;b@ zDXniHZr1k;a5uWY>C0B1e52K`kDWnvOr@gzUwmovS6{xYA$h zEe!kmZWn*vx#{BaeIN<_F;FPvqKSI%Eq%1BF{%YPDWU`zPw} zO$IAQGuK$&r6aml_hqB<2|YZBNAvzR>*G^+lwx1MxUw;UR_Pg5}Z4G34X4 zhQsK|4d%fBS>_*}gs}C_GBDohe0481K$$fMVsp`7hEd ze`qkkXK~7SZpC#ik=J?+M)@<3&G=s$EbkrOSenTeAyDX&VIQNuI>ZlEr^%-cScOG1 zO81l}z+~#V*QF$6F`QojL-K3IVnT)C>)H!bY$v3X@rShueNQ8Zk5dl$%iH3}-MRj@Sq~gBsP zh!%0F%Ton8#1vq_Mqko|_QK?5DzhjCo65{3W^wh7#TU9LX=9<2bB;t>V}{Xx z5}}z?FJxglmoHdtaqrFdxJpAwq>V~Avt^xGd0cp{R4YdDUHJ}(%5hE9m}elwm&sNU4xgggPjt-lR(98G)$|us9x9W`-|pbv@f)9<&~n%!o5))p z3Fep&@!MMue60Lr;?ztDhJa|ibis-iYZ6#_-fqCun5El8COgej6nTC2PBcUXEp59( zU(~-*aLjcG)O0Z6v%A2}x9&6AM1Tdu8hWm+NIP;g_wuUuN!IGRzCDiLT)dZQF|o{E zQRCc0s7@^L>?h8qUW_82g#r8(6j9z>zYzH?!8Y>#zH=?qu>tI$W!z2it4K02)EUlu^3OEqE)*d7X=yHRFB^;^=MLgyxRkhfxU3dCJnZ-zx zTJq{0LzTtC%o-B8Pg$fMnG}Z{Xjh!BrC-23hSH@tIRVrzTUwDi3d1(A4z!6X<_`^ ztBm_y#n?VvwvT%y|5!u7W6hp*Mg20vLUQ$jIp~wuwEUcjv~i|km71pmkLPvM&hoPY zF-Ud+D@#wRh@T4NYxI$RlGStf$q#FOyqfUGr6*5&_lv6n?1)DW)<@LV3+htAG~Dj2 z-#@qs**s~sMg%Ib4c;SnY)5QSI2_q4SrfC@i+6mMM(q< zmfJ&s6_P{0?Clv$K}*)7=BwmhBrF>8FkrTzDhh=&P>&eUt~ zN2*Y9N3WD?)vtb;ZnZXe{#>jNjlGZ&1wVjysf!fh_CySUO$iBow%oQ9R{ctuZneE~mROkC8SJ_frlIh!}Q|fd;#AT@cV+_(Q(J_>5_I zC_{7jGmF=4POCT00bdIU-h9fko!g9G!hr2;f3$qt@BkrU-ZrM<; zj+a6#dn6}TvrWLYtD3e-POE;7h^2I9zLkQj6Lo%_=-OQCa0kPosUh$>6yu8DRy{K^ zmvW(9<#}q@RQbf=Q5(7i>SKi(QRLpMQbhEHAccd`BgQcqF*_FeB|dQ3ZZGf8wPccL zVv_;huNe*aldC44xLWx5ejCDaVt4!G_n1l+X=aaV)v083a#YKQqD&9jc2}~fq`AHk zWPPq0KOd#*Okjf(k+k7i(>%tL$}pYp6650#5hL-JgZ*fX;tnfd^%B-=DVT352Rto~ zMol$tab!9qV??c`_4@|*UjU;$aKwmEvBNCk3vag$~2Y3r^!8lVIY>FVG>@6hp;sjMRrbwIqfQ`*?9Ui6n(Sd`6@& zpwv|vmhvvsy&z?#B+b{^!Bp`)8cB0=x-c>Db(E&{I7ZwltJLRcLC)fYk_s_Zfa}WM`AOHA+fBfYCCtNs_TFU&nzCrG3qL~i8O;uSf Wt&<;01PcTW8YB=jxI+>g0t5)|u1(|a1PSg0cXxM4a0u=+?(S~Q>wWIo z*?XLw_r`rP{_*Y@|AGazR##U|`{tZASFNYnrxn0+DKSYg01ONaz!~}jcv^)`5_L8+ z1^{Ga0CWHV02u%e!v}zcw$K3p7^y%r06eq}1N~J^N&VwL;3WV6>%2z{K!V;wgI)_l zPXO^A^v@rk{_g`Iqi1X8U`PI0&%o3ODh`;xWCdgXhj{+Ctp08!G5|e*Ex-)m0I&m) z13p8q3;?EpKLq!*3TI?$Z*R@Z%xq=Hq-O}yH)1jX0hyikteIJu-ZBIDg`BPR3@nW7 z$@Ps)%&Y`xj+@(Q$juA|XjC|4-pW`D8=0C(xY`;iy2^ewaJ4YtF{BX^M1RKb%S$8BZ`L4I39V_pRjv48h~UI|eAn-(W0CnhI0CXlTO zGYbz75A$1AW>!{4Xb(m^7b|-`XGSYK%6|_aVq|AvYi4b42C^dmV?aH9kb}Jdg@c2c zA+NEXF^9gPAqS(r9-AQ}3yYy1qn;rf3!@<$n;{nm3pcAVi$2A_r#CeCHM_Ngt>wSw zHZ)*1vNQr3S=rk`rNP2X!TeuD|1X_Wkl)aN*TB|D&mLs^U(+iZ+5EqgnWdTF-vPwW z{DZBOxLnA|oLoKf^+W%J>;B=5sVG0^FB`1h@qFM5HvYh)AeO@ChiG zD5z=Q&@<4#Bxh!0remd{qo@005Evw6HcpYPu~Gp$bbnrV>lQJ z04x>^92U$|7k~`vLJ^<=>yMcA?*j%F4jus!2^r-XDzroGa{w$192_h>90CG7G+M!U zKtBh-Vl&-4%EpI8FFRLt8t2=_bq{Y zPGP}}^T6`)H=NNQb6#hLbKA@!P22{UvDV6C0pnT2G2z) z@4NR`v;t%h2-nTnpN%Pr+I>987{0BC|HVS>_+nLl0{)<~q?h}8?_S-(m@z=`u>Y32Oazo(~S-xJz{o5=GL${TmylPLKnw}N(2isvj_aKmtOY= zPk=B|DcAPLE3cl$N0QnGj>-C|W0BLJK&s$OakNr`VfP#X;yVb=ka(BtfOFQi_!zqd z--Lw;?n0I39=er=8?V0-7B|hcNuhjSF7*IMQRCR{n?0zZ&OHHM{+hyIH|_0cEgwC~ z`ebQ_#|Q2uREw`s)PlOy_{MfIwH1hVHS65P%4x60K$nsi^Ca3GTaaa^R15S0{z~1I zqj$D%C6Fjf@ti8~TmF;i>V&R4)IBWK*Y)`v8=GI0JC4|>{3Vs2HTM5dMk09@1P&I!32p8d=FAZn>joLEuyq*jILED>1w3eBx1-a_p8y`|r`dl} zJq6Sj3lV9H=AzvNQPRKp0sm&3qi1jFRb%z(W|=>3Zs+?qp?LQq^9yeY9bQ%7+S;Wb zrNv<hPM8xDAPZM%Q2$iyetWso@9SiKKuDGe)0B&77D|K=R@(X_rT_Y2I?{k(om55hJZ(0AeD%>YApIXAp7zN9T0?Y? znmkVel5MQ19RV}FY7Scu41E~Hzz=sRSnggT3SZh5urPbYRuVOZr`2XB0Zjf$24-k2-=Scy zT!eHgaJzMqqV_!L?LC}TKj6ewiAWj~M|*+&?M<1HgI3p22D@~q&vgnwPJk^5%wA4v zJbwQK=o^}>t_`pLr?&Asc)P&$ex)3YlA}@s5DT9g_p+ZcyB!;oc%yC_n>dv0o-9goMMg^62Oqx1Id~>3tv9(|J}4k6 zyUzR@Z=%S16v+{lL!#VgZsdf@Ttky0#+I767-~13Y_>*%_XPNyE>k&mzyvzHcA2hN z$o`3kfw6%^3GZ#oJBo1pZ(k|?r+`ajn7iXuJc$z2r>N@3OZA%47B?Cjltjh_e2f36dn0B@T-tDYUzFi3hc>OudFGNo44||e7d}uid&$j?s zm@uwuNzze>+u^{7*oeQPY5_*OcP@C00;r~A3x`W4$;;+gWA#YQEM3X|G13g`$_Syk z>s6x($ju74+A^NgdS+xFEsXMSwx^`9Ll=1%m7W0Ty?D8#rUwp!|MvQS#*WYHGc{j10>)o_ zt^~^9+s!c!5XR~f#||Ip`c1S#a~c#*zioD%c~_@zIf!z#y^$Z&RQpD*f5=@2@J^zQ z{)xoDxw!!y{2Q}F@+P_GyD}gf<`}e&E7s`#$8Np~ji~S2NoiWzL>Bv9Ee#dE)5D82 z@#4*}5OHFmvP{!Nv38)DbA&_ZmDpAF;W53}|51&&8@9ffVXtk}|P~MG7DlU-K zQ?;QKD>-aUu(HNVzG)zHYQ=mfySMqLl>V}sS7q4}#TJfK$%9JIyW@rFr7IX|V!_$!Go{gw%|hNgXe))^ax#M`-wGJJ2De&b#g z>Sr$8O4Wf(Gs>08^4>2PQ=Dig#1PpUVfyxX!!Kq|Uk8#F+*u|KrzM=mVVciKP-}G| z446<-$71j-2$)$RJOTa_CPhv!ucFL~g>x6p>ptzh@Ybt|Ud2;G;xBp;GkQT1Cc4IG zagQV|Jwka%RF+Xc*KWl>r_8^Nly|V+#wXwK@*n0#1Es;jJ>E%uI30a5#svjFL85G2 zPxgDxMjeSP??dOLvQc2@A&1V(r5#>(uzS`I8|!6|j*ypig+Gr{A6j<+QRpWm(SL>l zacQV$Eo1K#nL6Njfyh5*W*dF$GRy^}A^fqwV3q9M(Jm zUMcBMcuo#$abdrMkJy|z&1-6F*0tBzZ4thjw|G>!=bx9!XTY$b%&sr^A?$7KLU>X7 z7&4($UVcmHrsNU+1o)?qCF*KA+zP$Zd};Irzg|6Vc`jQcBpa6IXz4?@FVD^w1CXm# z!WvPdL*7{JAqV^6yAG>YZ#7*`G{un7*AB3CZPL`<8G2vY;d_QxMrj2u~KANu~UP)bM;@u7|fl!UE zPm#&Qs7;JRSThgRcj1d0yc<7m7*_f8@&%Rxbbf=iOpi5z7a!a3T;r?r!CLIb@(A7I zVw(V}x^X*iobw64UAak)Lo$i@B>@$s%F5`SLmwt91-3Wq{%B%H+4%(-sA>PfzLLpw zO|!;ERpVsIYI9VS!jj~aq5gfHcg{vkZRLK=-OIv~{bTGuM1)=pD0O}B5Y9>ek}L*S3W4=*=2Uh6WZfc(>f9nN>v`R91B;{ z)&WKY!%`;J1mqXTvV;GSr(9Mf+Hdscfdd%%PZ8yhz5DNWEfS=tZk=>zE>bh&A~R}l ztWKggyRLFksCpjO=t4k694^LP#tgv{@Phbw-Flg~KbU(9p#IYwBLXdt?VkXsyN>F$ zz2Nf0lGWfXj{}HhkvE@}m8=8}O-z~v%^Ddv`Nttfx)XKEHU1UnKEKu8XGxc5Tr5?b z$ok023hyZ?O9A%(X-C@fYvl;eA>t=i)rH+_jc{|Sa@K91?~>{iIQ4wNezg47QWcj- zxvoM&)$vdpElI+re_e z$U_YN9O4&0HYFbDv;HbtP9c(g+_&S>Z3(i z`U*YUba%)#$B(|*KB&WI3n@qIh9}izShDviV-4{+=NfFma3QVTwO9V;O6N~Iu0E$~ zSFlOL^aR*S-*K4mtuq!2c`^UZ*Sj>joe%y;ANpCEs7O7y z1>nDc!|1An+YVxeNPp|5ifhyH zkDxn++gHzP8f{T;kwI)Wp>lL|{e)MgQ8GqWBWXPrJyc&Hu8?W1@~kI+(mqx62~dBf zs>PMOj?TNq|Do4i`buUTgGauyY7tsFv6v_*`qId_39)$sY=|?eTy8^5Vi$H4rOWn{ zv}+5TlW->;UfH3!Iws=OooCJ(81U44F~(+)@dvBuQoN1|-HpXV2>{SD&`#vx}{Xg)kOvs&DaXxGi&mrKVV}H2)t>I zcsNghJl5YRy-`EShV9v9=9jTL(a;i$nj0>eP-~&2Ui}3UQ|s2<@K2(8R9D)aWaijUj9=q>efC~sOVA~qRF$r9v;q_hz)<00 zvX{)6zHDVvYd@u;FEFQAqnfyw-KYId>AeRrFq)eJ*Gz_HV0m1>crPNXFW zR@GzeXVEHK<`35zmX%}Zg77P~{-WuPX)3gim%hPO`mb`{mUSJNqrd(pu&PJ2VbV%V z*EqtgL8r2-xF#*zaWyS*r1kxV_P%;goK4>R5;)*w@vtCiYg!eJ4bPiackfwBA?4&7 zN{Ut_C?L~pp@osUC%`iRxF$!3QC(|xz$0}u{wpE<2_D6^Ctea$|TAI22X(Sm*3O7 z?y${&K9kEMfTO^Meg54ietA?keRM`!_B|pGvcUVV?Hw`ZPk<48sBMTp(9=c5MsLQ1 z*H4s3+1SW5((l+oh$b)Q%5v*!o9p6Df_Y%ODe7U~QHHNHKfIa$)4r9*of5b%Yl9-1N^F#u z2m+;U{4+hG$ITcmFPaw?`*NXGY^sXr!AGt(L%}BiCwGZ+$rcDH0wtB{PQdPP$wJE` zK#pec#cjIzz1T8CYCG4`VtNAMS}WIYby9e^32{ONZ9|m#2kh|@NcpQ9Pp-1<>`E62 z4%Gz&miTHpD=GZQiR6XxZc~av>oC#%r&@SQMxbjufz%c!Y#AoM{O>V9f<{xY0R{bA zu&SRgCK>k#Vk_Hkr^`N=?`LjQ^#DDZPdsAMO|h3Bf>3Vak9yX-z_}MqRPh#gxw(vG z?|;(KF}BE1!lf8k6AHFm7H4&(KL;|!$f2USQfi>!F;J|Dg46tbXGy=z$TvVW#N%~5 z@8wVQrwkQ61iga2w&=|sUA&?;r9m!PHz1J&xwBEcks$S!}j|s{%k}*Nluk5hk zF~2pzM9Qupmwyhe43jSFAvdy1A(PVjg^|B-n;?yTY?pSL>p!%WU}j_Zc_@EL+_7M+ z`4~)S^97+jgdc9=w2T$qP4i{d`uFKi-_mWhNnUT8Qbu+@Q+2bsRVn&qm4EX&xGi)A zJwuuUpMZ;e#9Lvjx36y89z&?^4b#9ztnfy&MhuHYNMSb{aJ}z8IlFZ!Xqa8S2GMSv^ul(@G755qBcx07|g0pY$4@; zZQs0eIa2RZ>TpHKpZ->E%cJ;^$i2$(VcE^mQ`02au{d*)E6|g=A0vT&Nqd1!J<3Y$ z2v)tjBA?Jw@W6n7yVX_ucbF6LSZ-QQxWz30BO<5#B+Y8NJW5|3D=_#J@7NT6|IvB9 zI<{kg=~WZB$aY>(v(I_~_yhNK`twPK2l|}dJAtcIr>qg;1Vjs@06rs$IYXsb?`RMW z=xDBrNPwsO!!JJ?_KVLqj6#^5dK?bd5WX}8_Ed#=v9YpE$aJOeh}vXM%IqA&4AxhZ zgrBh@r+sSHHgO+pUW*fQEI9La5Rs6Y)HO_&;T`Qs$Hyqvt5O>qoRcw#la5NzAiSrF zS>|Z{je*H8J^{3Z`anASGYdbB3& z`GCFF%XwKg1nkG?KG7`%c&5W5Hg8$B3HGFB89w%x9L7rHE%YY2=DiAP`Dxn+%SNGn zl%m0`_kBuXpKWKUBISq;Qo5aheD0#-Wy*wTSi1?PXJ7b~lB8{61Ylliz_nrKf_@hQ zaaEk!%hyU!MGak?0xl%u_j*50gB~Q9EgkTi&hTYI)!B}X&qe#{H`P>Q?iYJ)6o*B5 z+=Z+?NyMS3%9CtSy!yIgVJqGHnA_0I#G}Ii7t^!ks*?Y^sc=Nk<_AWO>Tls&_m}UM zABKsPN8Rt+Ng5{7gbU1UdO|5^MnH6;uRP?Cxwnt*mBoYXOJ(;udweXJw%pp$)I0HB z8M8sNv<+=RW1@g}+fn=4nZHq%g1XM#F~p#4c?NXGjrjs>&TCu?4ylV4!XqgSnfQjzeOSFlE6eVE%Cw`asuVLH0dX_%CppeYOa?c zk1go+wCT3|B^P-)crFR-t;xZR4TeZOz}=a^E=}ni=e4CZsKnWqF$;0hc-h3IGF@hy z-Z~2fgOVV!yXAlz-v9PJIcauhIX?um4yu{A6=A8I)jcR!l>`LToY8N21Q4_!0~75# z_?Qq_ugjuw+HekuReMnYU5N+)NtZ=QLCU7;J^b2{%gh&civ|Z~_-BSK9MjYHZ7w~%HVpEs|cCJKjCk#0*gZaSl`hh!jS7Kghz)QLd;?>Tic--&*0jBKckwy z*_&QF?u_gHl6e!!gtOC{ zX5_AI>*ir6M9w z;V=tuG@6FzT1&s1M5I>IMdPHx0g76it7!4En|6uzar^sudJj&p=@C`)#750P!>5XZ zsLvG$PVN~6vpgFr29m$Q$tQYJrPCMUQ}O$%Ku)k*W+AeXuo>ExYT}EZ1hlyVvIG~0 z6a0`ky=+Zq)dkH&ONV($ZzeYA0$uz?kl^G5LvWT1E z^cxacuq+I+wn}cKZPmmsWJQmClL}j$VBxns270X)A6IKFyf-T%q`9ZgNk9t*ZfSK> zDq9+P?=BT<&M)26s{!R?1NP1!npcI*>cLc`mMHyTpdOeyvFg4A4KrO?O_z9Cjx#+BCsp&=CW8Igu)@Qz5& zTzbrfQ0LhpFHZ!&B7QBH)!u!Lnp~ImV@2AdlI-nmC~P&4JFbGpHV+(n#HU{d_*Xch zyRB_L^Kw|;6RoK)Uvr6leTI%P(%C6FMS3>Vg~~AQ5&ZsH=T#?ptb|yPR<5&xM1LOu zn@;9c)k#@m#?sDpwqpIvVNRME!>owvQZeDQJ|~avB5ue-*K>fSYtLU+fE$MIZ{KjK zG)c-Rwq+mrlc2e|u_2s>=Qf&$APXxR=F?jgIM`Tw^GA{=0P`8fp_j%JAn}KDo^YPC zVz0VYcJ|VO)^g4D+u=IPlM%vDO9M{MH=#_N)rhx5rqDF##yzmmVd`Qp#1 z;DpOZb16xBS5N389?Fnu<{9}(c19QbAt?`L*~Wz7u#4R<14E>fiMmGT1aGKq@hNS{ zb&V@)!$^VVBMQxa(v7^Hg=J<{j5*Vx5ftJKAJo!b6U9E~S%B#;QqBp{pIUcr0Z5W(Ea!f2;F zH=9ZFZ>!C}3F&H*>Fk=0nHQywPh?}4HD;jV+;5Y3nC*y3i4-FU4ZiqYW*P=vQk9lq z44xO0klrzhcP5}1@N+W(c_!hz8+w(Ux^OQqdw8!onw7-tqTPR9;H<^}5Ot0(y=Qm!lD~<`>6=w+n*9;}P@TaozNe)8$>RtD_T1 zA{q3Hw`}yO-{@wE4eDI&_O)}&I(`ao7U|Q!X?J+rkv9c8i zS96zMyNb=6D8cbZI_~khS_jwKlUS%XPj{zPqLppXw50VpEB|k^t^#MNI1uc z-`mw+4V9spvt7ksa+pX>G1QXb&!ZCUSke^A^%iFS+hJ zp8)T19O6NlkEcS1>oN%vS6@109AeJf! zhAk@i4zLF(G65Nnb>A*&blYI<6BiK5t(dFRp$9QCFtXo-D&tkC_sB{K6TFivLy!~2 zfk7Aw%UyvznkGD*7z*VS5-Jr%jLKJEKshYQ2!4MpC5E`v$JHl5MldbxP{M<2#C7r$-~;>Zk#23oU{eyeBKIPtKjB@H(XY=q zLe_|E>`Kjov?5FFSgX9P?Fe?>lMLDE@AKkliIjuRD|5LE2L|WsT54O+fJ}NR%u6g1 zL}YP_rx>M=eyj6~ihbvhpI9*i%k_?YCP-v)dOOy)g6!$`VU!#-$=|%$0wYE-)$31D zA(C75PXO&w)m0XSuGK~5lFJ9wRE}rCf&qbn91%AX{5(cQw`3;wpWPlx@2}27P2dCs z=w(|dyKHXT(cO_qw`9)Z76Q>4DI+~Bfb6sG^rt;Ny&~}%7H<1AZa!3{=+8xsvm~qmUzTNAEBdO?2I)4J- zNgAw4w_|J1I(u5=Pt3(@DQqjUggDB3V>7MOf8VCMDtM6gvMY3FJOK_Jl(G*wD&^=) z0&@ze(((cFB$f{|YaQx3+c%VB)Ta)2?y7;Eu=HM)lIF&&xF9w@$^B-6_3`GHXZJmC z?nN}Jn6|Wdf^-x&>v21G2t_w`uo4lVLyp-m=zAfGj;oR9hy98H+SMU&AVUbhjAP&@f(@P=b zp?r1CLZha8ed+qmzJ&}UyNR@|(wolCB&Xn-_j%?qE<_vX@IKx~k#M1KGoh!u>7~|p zh^1>}$nNi|PCSbX#Y@yQ#qSGQ?)wtZL$Ar4GHF6}$HU7;Hh6#z=NycJloqaKxrN{z z&*xk}^M=Qy))hqfv0*xyJ@S2$=1$rp7~JJR&Xw~+CIza6TzD$Ptm^`pHc{c;;p@3} zLeB_jf?AA+KNPh0Q>|d8NfoZ<$r!9{2Xllm+$OoIvy0i2Q8qr~7C4g+_o!C%5IUTP zAZRSz&YyCYdeVa>SNI~ZwPrn1qgUpIO_{g|(*Y65roD=37=YvPrb9USmZ=&(x5E#e z_ktS!ONh{c659?N;Ss3)XnZ9Ya#WM7q0aFH!5B^ zT004&J59iz#Ek_AWLhn>DEu86eVW9r+jZGq05UW|6n;jV<^4b5WZQsln=fo%BD+J* z`ufX7W}tHFobCxNfgX{k7&T-Yo0@8ys!UscTJIUeMwSp1?y>pBl0>LC8$AI?vmdvh zQ87$TZ7TO=g>~9sL4Wrmfva+a6Jjk>w)<$IDVRMNk1;fkDxTcS-mz3b7+S8k-#q}W zodfefM895Z4$ONGuarbbJDUH2bQtyhfNgT~+x!!4ABTLiE4Epyx(N-3BA0PYhDTvT z2v0G-AmKPO$BjdAvdrBVtZ&)LgEs!;zMOtFC%py7>NU#uk#;Y=IwMfbl6n=>97Tz4ZGbZ;`0;!ys1YR!6k_dmEh_`5Xhe8`QdSc5~6S}@sPn&^Ze!RNv&s?`XuH%o0XYQ= z&tSY{#QVgs)uA^JVoB%f+lmqowdsRa`0xf+ju$kwM#~R8Cu#Wwt(RM2FBT-`Q{%+`vVH&mjLDMMsXnu%eU*XUgVz7#iDm!Y$t|5&eBe+o+j~KPU zLJs#6Tm1d#X>cZUrw+|}*3{7*`v{?GCX3l{@FIWuF2aPI5s<`e`#w4{K)5!m^- zgV%pUIi8emjLFJaH%b^I`$co*4s1ZbU`Or2pUcfM>}@p=1~fuqaeN6Ju^=MS@DI7) z)Qj}FSc^MgPd1|*EkY?TWh^T_EMv+HcFUuOSCGKXBRBL%iYG@)aV(SK;aEgcIk{~= zg$H-Jwj2U&;Oj70mZ z*Qzc|6yKMspZt5JSO3qgFF@62cP?z_(s!ekBAj0FVWEAwqjR=S%f z=M#W!a$iV!<^l*yyD{TnLBc{!ZD8>;_6rZmI|ea}gwa}bD`?S8CceBxFqgDEr{8gB z`n0F+Tugr?p$2hQBtMWrY-~imv1~V~Cw0wkEgf@SW6#zjNL_RHynj<-teDLYEycU5 z?pejNS)D|ie(Im?>8oB-o*AiAGnbXc1pLvtD=cqmsZXYHsrB&yoP3)ql&@5G$ z#1D(~fmgrr7+0g$aQS)GIAs{nu%fOZjjE%ESuNd#d*{HHV!`ks=W?Si=@x=sKFZu4 z*N)RZc!|P%u+|>XqtSqU+|AbAusKcI2SZ`Uz{z=WXEU zVA;AoR{e0HJA;}{RgZ&8Ap<@c#=zGcV@Jg~M55U6JDC+m-*#lldnGJG7g5!XPxK6}JeEGVEB*%DRA!!c5%4f`v9|+iA@FKAA;Z(5@N!#)){lMV|^bo%fg3 zpn;;(@Q3Myub^5W-%IU;vK!xf#p-H{#G%yGh(%*y^v4N0@p`&GZ7;7d$VXf8G{AF%B%h2|(3B*}H42r@m01tkPIe3sH?`hkZjO z{-KD>>&Tl&Ki{S!{EYw?nHy=8z$9KK`rv5?l|vX>IKExwclorOG~e8Ex_B)UWoRMb zi@T^tSlEw`M$v0=JJz+;`Jep+zG18aPosDCBGb0)HkN(ly~6Dv+>o#eK3^X1fW zF!jl#=j--5EzTbL!sF#ky zg1>K!DueqSzU^(Y>?q84ZX7Exq{-_W2{rCkQbcgAL<@9_M$VG?Op<{G*6xH$d|l;i znc-O~P8}0rT;o!6WCdlOwRD+t@Dfp&tridrp6~LS+s`j8(bkMVw0+gdxp?36;7foR z3yb+W=za*gkMTt4mI_lE`ivgBtvcrFAJ%i%c>ZT2q>Lx) zrbET$LG0Ce^tV7)W`i@~CxCsM<91Y!d3%UGQLFiQj~1&bW!nTZ-qjpaYz=EuF;j0Z zx%1fFFcyQe{p@1 zj+@jIAV^x&>osJ5$1zE^J$wIDlF7eVbk8W-DyY13m*98a#3BG8p64jEG-10Sk2iI@>%F%jpfFVu(0!_S} zKfiMhdtbe(?v(D<7^x}YT?kbt%Xuz#f7&^dP0iyZkLG3&SN-LqmzK|t>tIzcJTt>^ zW$(*)Cp+&9TWIb<#U^S4Z>P~0-AxfFiRDLMNC=NLiM3S0uP;*P3jC6fcYPQ8Ru)rC zRx|So=p%7q-an(F+IZSpmXL8%tl%q7@8D)t0p{n7?+kSxO<1Ia#bZUFQ!bDbzno#a9Xy$R66@d=d$P!o|5!4s3Z;0m}LUI#hMR2f!J8q}vg z$Uml3^}{wuu!S|O(~MpY^OUAzF77F(F-^G(6_`hxpU#8lmxLW`h$UHF0z_HbV~g^? z)x*`0ee+8(4!R$B0!;TqGA@8#8nw6Cw#Vw@HTQj`%$Iz88i`Rk!G!srU2w(J;w1Y4 zu#zMQlEA{*rEmVJhpj)7ux!ZU=<04F#0mHdFLyOb7VztYu=uqKe-tkU)Q{>Waidui z{CEOLf`z7zI^q@tEu&>631I1upO55d4XwQ~xL4|~_v@a2&9cP}Tx^2%c%!4?r6CFN zv(R8>euUO;q6O%RH21&`(F?VkkEKmuG3o}^!J=2fDQp`L87pTV=r$0%wo~(cto}0L zA}?b}(=#oZ!Vvgy6tVF(xw#F-3g267D{_R}rfpQU2`dLV*zQt}%b`&4QoE6}du(Vr zbs0rCKqP2(oC9pWD4xVQD5YEugs+tN9tib&j5{yX7DbEvu!Gt_1bZu2f%5$P$27 zhc-0P(d^Zr(1)A`B1IFi?WlSj=Ozc?wOz)TL&_gnHytpuIyRQBha&<`+|kFBV0DJXRZDHRbuE(DQ2RO}BToFVct4UGjtXKC^=E z+l+DAoT-*lPAUSV(gm;52#nI$<84LctG&mcvwjG_f#Y{9v>4J$R%*KuwOL~{P>w&l zKKSWnnfBQxw>w=h0Y0mRrJS*`_Whzq0!L`A%LiiIio4Y$ z6zrhZqLtNx@7j74Qp&$iJabi7@qLfd3@hVv*9v;W;|_V@uq$>N=?uR}<&Ci7ltX=M zgjSNY*#YDywwT{Q)YxQEAo_g;hHBx0b#^fCEZ;4uPvPF3)mLMy%hV4ua&>6XeJZS7 zi2{gQ>y&{Q!#Nvkc_37RXSqGpNUD`@vreiS#dwO+&&1{d5Ui%gbrcra^^w*BOQ z#8+j3wX3P@a*~DhzQ5*zaR!!7`ttPk1giUK&$z#GLCBu%V+Lh4)W%rtm`LQP;lxqB zXdr#RUG9okd0%7cOKlBy`|