From 6f0ae9dbfd2bdde110d28e9267122d0adf6a1759 Mon Sep 17 00:00:00 2001 From: Yufeng Wang Date: Wed, 8 Feb 2023 07:55:50 -0800 Subject: [PATCH 01/16] Fix potential memory leak when attestation delegate is set (#24906) --- .../java/DeviceAttestationDelegateBridge.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/controller/java/DeviceAttestationDelegateBridge.cpp b/src/controller/java/DeviceAttestationDelegateBridge.cpp index 50020b93a603b1..b201a073661b9a 100644 --- a/src/controller/java/DeviceAttestationDelegateBridge.cpp +++ b/src/controller/java/DeviceAttestationDelegateBridge.cpp @@ -79,6 +79,9 @@ void DeviceAttestationDelegateBridge::OnDeviceAttestationCompleted( VerifyOrReturn(deviceAttestationDelegateCls != nullptr, ChipLogError(Controller, "Could not find device attestation delegate class.")); + // Auto delete deviceAttestationDelegateCls object when exit from the local scope + JniClass deviceAttestationDelegateJniCls(deviceAttestationDelegateCls); + if (env->IsInstanceOf(mDeviceAttestationDelegate, deviceAttestationDelegateCls)) { jmethodID onDeviceAttestationCompletedMethod; @@ -87,10 +90,17 @@ void DeviceAttestationDelegateBridge::OnDeviceAttestationCompleted( &onDeviceAttestationCompletedMethod); VerifyOrReturn(onDeviceAttestationCompletedMethod != nullptr, ChipLogError(Controller, "Could not find deviceAttestation completed method")); - jobject javaAttestationInfo; - CHIP_ERROR err = N2J_AttestationInfo(env, info, javaAttestationInfo); - VerifyOrReturn(err == CHIP_NO_ERROR, - ChipLogError(Controller, "Failed to create AttestationInfo, error: %s", err.AsString())); + + jobject javaAttestationInfo = nullptr; + + // Don't need to pass attestationInfo for additional verification when attestation failed. + if (attestationResult == chip::Credentials::AttestationVerificationResult::kSuccess) + { + CHIP_ERROR err = N2J_AttestationInfo(env, info, javaAttestationInfo); + VerifyOrReturn(err == CHIP_NO_ERROR, + ChipLogError(Controller, "Failed to create AttestationInfo, error: %s", err.AsString())); + } + env->CallVoidMethod(mDeviceAttestationDelegate, onDeviceAttestationCompletedMethod, reinterpret_cast(device), javaAttestationInfo, static_cast(attestationResult)); } From c77dbde295f0b15f5186b22bd2f34a94a5fa37c7 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 8 Feb 2023 11:00:38 -0500 Subject: [PATCH 02/16] Log session ids when sending/receiving on a secure session. (#24902) * Log session ids when sending/receiving on a secure session. Includes an "S:..." bit when TX or RX is happening on a secure session. * Address review comment. * Address more review comments. * More review comments. --- src/messaging/ExchangeMgr.cpp | 8 +++---- src/messaging/README.md | 15 ++++++------- src/transport/Session.cpp | 36 ++++++++++++++++++++++++++++++++ src/transport/Session.h | 9 ++++++++ src/transport/SessionManager.cpp | 12 +++++------ 5 files changed, 63 insertions(+), 17 deletions(-) diff --git a/src/messaging/ExchangeMgr.cpp b/src/messaging/ExchangeMgr.cpp index d0592a226411da..1ffce3e3de0316 100644 --- a/src/messaging/ExchangeMgr.cpp +++ b/src/messaging/ExchangeMgr.cpp @@ -219,10 +219,10 @@ void ExchangeManager::OnMessageReceived(const PacketHeader & packetHeader, const // Legend that can be used to decode this log line can be found in README.md // ChipLogProgress(ExchangeManager, - ">>> [E:" ChipLogFormatExchangeId " M:" ChipLogFormatMessageCounter "%s] (%s) Msg RX from %u:" ChipLogFormatX64 - " [%04X] --- Type %04x:%02x (%s:%s)", - ChipLogValueExchangeIdFromReceivedHeader(payloadHeader), packetHeader.GetMessageCounter(), ackBuf, - Transport::GetSessionTypeString(session), session->GetFabricIndex(), + ">>> [E:" ChipLogFormatExchangeId " S:%u M:" ChipLogFormatMessageCounter + "%s] (%s) Msg RX from %u:" ChipLogFormatX64 " [%04X] --- Type %04x:%02x (%s:%s)", + ChipLogValueExchangeIdFromReceivedHeader(payloadHeader), session->SessionIdForLogging(), + packetHeader.GetMessageCounter(), ackBuf, Transport::GetSessionTypeString(session), session->GetFabricIndex(), ChipLogValueX64(session->GetPeer().GetNodeId()), static_cast(compressedFabricId), payloadHeader.GetProtocolID().GetProtocolId(), payloadHeader.GetMessageType(), protocolName, msgTypeName); #endif diff --git a/src/messaging/README.md b/src/messaging/README.md index bab614e85360ae..af5357e5dece2f 100644 --- a/src/messaging/README.md +++ b/src/messaging/README.md @@ -16,12 +16,13 @@ will be expanded are denoted with `$` . Unless specified, numerical values are represented in decimal notation. ``` -<<< [E:$exchange_id M: $msg_id (Ack: $ack_msg_id)] ($msg_category) Msg TX to $fabric_index:$destination [$compressed_fabric_id] --- Type $protocol_id:$msg_type ($protocol_name:$msg_type_name) +<<< [E:$exchange_id S:$session_id M:$msg_id (Ack: $ack_msg_id)] ($msg_category) Msg TX to $fabric_index:$destination [$compressed_fabric_id] --- Type $protocol_id:$msg_type ($protocol_name:$msg_type_name) ``` | Field | Description | | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | exchange_id | Exchange ID + `IsInitiator` flag from message header ('i' if initiator, 'r' if responder') | +| session_id | Local session id for unicast secure, 0 for unicast un-secure, group id for groupcast | | msg_id | Message counter | | ack_msg_id | If present, the ACK message counter. Otherwise, this entire field is omitted from display | | msg_category | U: Un-secure Unicast, S: Secure Unicast, G: Secure Groupcast | @@ -38,19 +39,19 @@ Unless specified, numerical values are represented in decimal notation. _Unencrypted Unicast:_ ``` -<<< [E:26341i M: 264589322] (U) Msg TX to 0:0000000000000000 [0000] --- Type 0000:30 (SecureChannel:CASE_Sigma1) +<<< [E:26341i S:0 M:264589322] (U) Msg TX to 0:0000000000000000 [0000] --- Type 0000:30 (SecureChannel:CASE_Sigma1) ``` _Secure Unicast:_ ``` -<<< [E:26347i M: 30642895 (Ack: 9203233)] (S) Msg TX to 1:0000000012344321 [1667] --- Type 0001:06 (IM:WriteRequest) +<<< [E:26347i S:5110 M:30642895 (Ack: 9203233)] (S) Msg TX to 1:0000000012344321 [1667] --- Type 0001:06 (IM:WriteRequest) ``` _Secure Groupcast:_ ``` -<<< [E:26349i M: 2000] (G) Msg TX to 1:FFFFFFFFFFFF0102 [1667] --- Type 0001:06 (IM:WriteRequest) +<<< [E:26349i S:17850 M:2000] (G) Msg TX to 1:FFFFFFFFFFFF0102 [1667] --- Type 0001:06 (IM:WriteRequest) ``` ### Message Reception @@ -74,17 +75,17 @@ source's node identifier and `$fabric_index` is the index on the recipient. _Unencrypted Unicast:_ ``` ->>> [E:26341i M: 264589322] (U) Msg RX from 0:0FDE2AE2EAF5D74D [0000] --- Type 0000:30 (SecureChannel:CASE_Sigma1) +>>> [E:26341i S:0 M:264589322] (U) Msg RX from 0:0FDE2AE2EAF5D74D [0000] --- Type 0000:30 (SecureChannel:CASE_Sigma1) ``` _Secure Unicast:_ ``` ->>> [E:26342i M: 30642885] (S) Msg RX from 1:000000000001B669 [1667] --- Type 0001:08 (IM:InvokeCommandRequest) +>>> [E:26342i S:62311 M:30642885] (S) Msg RX from 1:000000000001B669 [1667] --- Type 0001:08 (IM:InvokeCommandRequest) ``` _Secure Groupcast:_ ``` ->>> [E:26349i M: 2000] (G) Msg RX from 1:000000000001B669 [0000] --- Type 0001:06 (IM:WriteRequest) +>>> [E:26349i S:1720 M:2000] (G) Msg RX from 1:000000000001B669 [0000] --- Type 0001:06 (IM:WriteRequest) ``` diff --git a/src/transport/Session.cpp b/src/transport/Session.cpp index bae62431dc4fde..18737fb10be961 100644 --- a/src/transport/Session.cpp +++ b/src/transport/Session.cpp @@ -28,6 +28,12 @@ SecureSession * Session::AsSecureSession() return static_cast(this); } +const SecureSession * Session::AsConstSecureSession() const +{ + VerifyOrDie(GetSessionType() == SessionType::kSecure); + return static_cast(this); +} + UnauthenticatedSession * Session::AsUnauthenticatedSession() { VerifyOrDie(GetSessionType() == SessionType::kUnauthenticated); @@ -40,12 +46,24 @@ IncomingGroupSession * Session::AsIncomingGroupSession() return static_cast(this); } +const IncomingGroupSession * Session::AsConstIncomingGroupSession() const +{ + VerifyOrDie(GetSessionType() == SessionType::kGroupIncoming); + return static_cast(this); +} + OutgoingGroupSession * Session::AsOutgoingGroupSession() { VerifyOrDie(GetSessionType() == SessionType::kGroupOutgoing); return static_cast(this); } +const OutgoingGroupSession * Session::AsConstOutgoingGroupSession() const +{ + VerifyOrDie(GetSessionType() == SessionType::kGroupOutgoing); + return static_cast(this); +} + System::Clock::Timeout Session::ComputeRoundTripTimeout(System::Clock::Timeout upperlayerProcessingTimeout) { if (IsGroupSession()) @@ -55,6 +73,24 @@ System::Clock::Timeout Session::ComputeRoundTripTimeout(System::Clock::Timeout u return GetAckTimeout() + upperlayerProcessingTimeout; } +uint16_t Session::SessionIdForLogging() const +{ + switch (GetSessionType()) + { + case Session::SessionType::kGroupIncoming: + return AsConstIncomingGroupSession()->GetGroupId(); + case Session::SessionType::kGroupOutgoing: + return AsConstOutgoingGroupSession()->GetGroupId(); + case Session::SessionType::kSecure: + return AsConstSecureSession()->GetLocalSessionId(); + case Session::SessionType::kUnauthenticated: + return 0; + default: + VerifyOrDie(false); + return 0; + } +} + const char * GetSessionTypeString(const SessionHandle & session) { switch (session->GetSessionType()) diff --git a/src/transport/Session.h b/src/transport/Session.h index e55c4547699864..a05c27f1f7ca3b 100644 --- a/src/transport/Session.h +++ b/src/transport/Session.h @@ -234,6 +234,11 @@ class Session } } + // Return a session id that is usable for logging. This is the local session + // id for secure unicast sessions, 0 for non-secure unicast sessions, and + // the group id for group sessions. + uint16_t SessionIdForLogging() const; + protected: // This should be called by sub-classes at the very beginning of the destructor, before any data field is disposed, such that // the session is still functional during the callback. @@ -248,6 +253,10 @@ class Session void SetFabricIndex(FabricIndex index) { mFabricIndex = index; } + const SecureSession * AsConstSecureSession() const; + const IncomingGroupSession * AsConstIncomingGroupSession() const; + const OutgoingGroupSession * AsConstOutgoingGroupSession() const; + IntrusiveList mHolders; private: diff --git a/src/transport/SessionManager.cpp b/src/transport/SessionManager.cpp index 7cec122a9bcdeb..56f3d16db5039c 100644 --- a/src/transport/SessionManager.cpp +++ b/src/transport/SessionManager.cpp @@ -285,12 +285,12 @@ CHIP_ERROR SessionManager::PrepareMessage(const SessionHandle & sessionHandle, P // Legend that can be used to decode this log line can be found in messaging/README.md // ChipLogProgress(ExchangeManager, - "<<< [E:" ChipLogFormatExchangeId " M:" ChipLogFormatMessageCounter "%s] (%s) Msg TX to %u:" ChipLogFormatX64 - " [%04X] --- Type %04X:%02X (%s:%s)", - ChipLogValueExchangeIdFromSentHeader(payloadHeader), packetHeader.GetMessageCounter(), ackBuf, - Transport::GetSessionTypeString(sessionHandle), fabricIndex, ChipLogValueX64(destination), - static_cast(compressedFabricId), payloadHeader.GetProtocolID().GetProtocolId(), - payloadHeader.GetMessageType(), protocolName, msgTypeName); + "<<< [E:" ChipLogFormatExchangeId " S:%u M:" ChipLogFormatMessageCounter + "%s] (%s) Msg TX to %u:" ChipLogFormatX64 " [%04X] --- Type %04X:%02X (%s:%s)", + ChipLogValueExchangeIdFromSentHeader(payloadHeader), sessionHandle->SessionIdForLogging(), + packetHeader.GetMessageCounter(), ackBuf, Transport::GetSessionTypeString(sessionHandle), fabricIndex, + ChipLogValueX64(destination), static_cast(compressedFabricId), + payloadHeader.GetProtocolID().GetProtocolId(), payloadHeader.GetMessageType(), protocolName, msgTypeName); #endif ReturnErrorOnFailure(packetHeader.EncodeBeforeData(message)); From 8dc253c4daee16342c3cf1081917f67ffe5ccc6a Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 8 Feb 2023 11:01:01 -0500 Subject: [PATCH 03/16] Stop requiring openssl to bootstrap. (#24901) * Stop requiring openssl to bootstrap. Bootstrap seems to do something with chip_crypto as part ofthe bootstrap process. Have it use the already-available boringssl for that instead of requiring an external openssl. Fixes https://github.com/project-chip/connectedhomeip/issues/24897 * Also fix the no-cipd bootstrap. --- scripts/environment.json | 3 ++- scripts/environment_no_cipd.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/environment.json b/scripts/environment.json index a4bd51be5f2f52..d9dabb8c96affa 100644 --- a/scripts/environment.json +++ b/scripts/environment.json @@ -9,7 +9,8 @@ "gn_root": ".", "gn_targets": [":python_packages.install"], "requirements": ["scripts/requirements.txt"], - "constraints": ["scripts/constraints.txt"] + "constraints": ["scripts/constraints.txt"], + "gn_args": ["chip_crypto=\"boringssl\""] }, "required_submodules": ["third_party/pigweed/repo"], "rosetta": "never", diff --git a/scripts/environment_no_cipd.json b/scripts/environment_no_cipd.json index 8a98fd178afd8f..1e0144898e16b8 100644 --- a/scripts/environment_no_cipd.json +++ b/scripts/environment_no_cipd.json @@ -3,7 +3,8 @@ "gn_root": ".", "gn_targets": [":python_packages.install"], "requirements": ["scripts/requirements.txt"], - "constraints": ["scripts/constraints.txt"] + "constraints": ["scripts/constraints.txt"], + "gn_args": ["chip_crypto=\"boringssl\""] }, "required_submodules": ["third_party/pigweed/repo"], "rosetta": "never", From 6780eaf9bc6ae283aafd5971a091566ef0326c43 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 8 Feb 2023 11:01:59 -0500 Subject: [PATCH 04/16] Stop forcing a blanket dependency on mbedtls. (#24900) The things that actually depend on it should declare that dependency, as needed (as src/crypto does). This stops builds that never actually use mbedtls from needing to check out the submodule. --- BUILD.gn | 1 - 1 file changed, 1 deletion(-) diff --git a/BUILD.gn b/BUILD.gn index 138a2c35784ec4..0a8920bb911507 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -163,7 +163,6 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") { "${chip_root}/src/setup_payload", "${chip_root}/src/system", "${chip_root}/src/transport", - "${mbedtls_root}:mbedtls", "${nlassert_root}:nlassert", "${nlio_root}:nlio", "${nlunit_test_root}:nlunit-test", From c49ee00b7bd889bffb0a7db16691c8c3a1d79007 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 8 Feb 2023 11:02:49 -0500 Subject: [PATCH 05/16] Remove WriteHandler::Abort. (#24880) It's basically just Close, except missing some state updates, and not doing the "is this actually in use" check that Close does. We can guard on that check in the caller and call Close. Fixes https://github.com/project-chip/connectedhomeip/issues/21740 --- src/app/InteractionModelEngine.cpp | 5 ++++- src/app/WriteHandler.cpp | 22 ++++++++-------------- src/app/WriteHandler.h | 7 ------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/app/InteractionModelEngine.cpp b/src/app/InteractionModelEngine.cpp index 7662ca2d540832..1e6c3ed198ea3a 100644 --- a/src/app/InteractionModelEngine.cpp +++ b/src/app/InteractionModelEngine.cpp @@ -132,7 +132,10 @@ void InteractionModelEngine::Shutdown() for (auto & writeHandler : mWriteHandlers) { - writeHandler.Abort(); + if (!writeHandler.IsFree()) + { + writeHandler.Close(); + } } mReportingEngine.Shutdown(); diff --git a/src/app/WriteHandler.cpp b/src/app/WriteHandler.cpp index a79cab52c556f3..1e5343432a3709 100644 --- a/src/app/WriteHandler.cpp +++ b/src/app/WriteHandler.cpp @@ -48,15 +48,16 @@ CHIP_ERROR WriteHandler::Init() void WriteHandler::Close() { - mSuppressResponse = false; VerifyOrReturn(mState != State::Uninitialized); - ClearState(); -} - -void WriteHandler::Abort() -{ - ClearState(); + // DeliverFinalListWriteEnd will be a no-op if we have called + // DeliverFinalListWriteEnd in success conditions, so passing false for + // wasSuccessful here is safe: if it does anything, we were in fact not + // successful. + DeliverFinalListWriteEnd(false /* wasSuccessful */); + mExchangeCtx.Release(); + mSuppressResponse = false; + MoveToState(State::Uninitialized); } Status WriteHandler::HandleWriteRequestMessage(Messaging::ExchangeContext * apExchangeContext, @@ -691,13 +692,6 @@ void WriteHandler::MoveToState(const State aTargetState) ChipLogDetail(DataManagement, "IM WH moving to [%s]", GetStateStr()); } -void WriteHandler::ClearState() -{ - DeliverFinalListWriteEnd(false /* wasSuccessful */); - mExchangeCtx.Release(); - MoveToState(State::Uninitialized); -} - } // namespace app } // namespace chip diff --git a/src/app/WriteHandler.h b/src/app/WriteHandler.h index 577a991d923bfb..9a004d9b0e5e60 100644 --- a/src/app/WriteHandler.h +++ b/src/app/WriteHandler.h @@ -70,12 +70,6 @@ class WriteHandler : public Messaging::ExchangeDelegate Protocols::InteractionModel::Status OnWriteRequest(Messaging::ExchangeContext * apExchangeContext, System::PacketBufferHandle && aPayload, bool aIsTimedWrite); - /* - * This forcibly closes the exchange context if a valid one is pointed to and de-initializes the object. Such a situation does - * not arise during normal message processing flows that all normally call Close() below. - */ - void Abort(); - /** * Clean up state when we are done sending the write response. */ @@ -136,7 +130,6 @@ class WriteHandler : public Messaging::ExchangeDelegate CHIP_ERROR SendWriteResponse(System::PacketBufferTLVWriter && aMessageWriter); void MoveToState(const State aTargetState); - void ClearState(); const char * GetStateStr() const; void DeliverListWriteBegin(const ConcreteAttributePath & aPath); From fd3217a44c8ae0477e1df4f00c8407be09208381 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 8 Feb 2023 13:35:53 -0500 Subject: [PATCH 06/16] Simplify and future-proof enum range checks in door locks. (#24879) * Simplify and future-proof enum range checks in door locks. Instead of explicitly checking for the min/max values, check for the "unknown value" value that decoding will decode to if the value is out of range. Fixes https://github.com/project-chip/connectedhomeip/issues/20936 * Address review commment. * Address more review comments. --- .../door-lock-server/door-lock-server.cpp | 14 ++++++-------- src/app/data-model/Nullable.h | 4 +++- src/lib/core/Optional.h | 2 ++ src/lib/core/tests/TestOptional.cpp | 19 +++++++++++++++++++ 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/app/clusters/door-lock-server/door-lock-server.cpp b/src/app/clusters/door-lock-server/door-lock-server.cpp index 6fb25e34e3d02c..365990cd4c9cc4 100644 --- a/src/app/clusters/door-lock-server/door-lock-server.cpp +++ b/src/app/clusters/door-lock-server/door-lock-server.cpp @@ -380,11 +380,10 @@ void DoorLockServer::setUserCommandHandler(chip::app::CommandHandler * commandOb return; } - if (!userType.IsNull() && - (userType.Value() < UserTypeEnum::kUnrestrictedUser || userType.Value() > UserTypeEnum::kRemoteOnlyUser)) + if (userType == UserTypeEnum::kUnknownEnumValue) { emberAfDoorLockClusterPrintln( - "[SetUser] Unable to set the user: user type is out of range [endpointId=%d,userIndex=%d,userType=%u]", + "[SetUser] Unable to set the user: user type is unknown [endpointId=%d,userIndex=%d,userType=%u]", commandPath.mEndpointId, userIndex, to_underlying(userType.Value())); sendClusterResponse(commandObj, commandPath, EMBER_ZCL_STATUS_INVALID_COMMAND); @@ -694,10 +693,9 @@ void DoorLockServer::setCredentialCommandHandler( return; } - if (!userType.IsNull() && - (userType.Value() < UserTypeEnum::kUnrestrictedUser || userType.Value() > UserTypeEnum::kRemoteOnlyUser)) + if (userType == UserTypeEnum::kUnknownEnumValue) { - emberAfDoorLockClusterPrintln("[SetCredential] Unable to set the credential: user type is out of range " + emberAfDoorLockClusterPrintln("[SetCredential] Unable to set the credential: user type is unknown " "[endpointId=%d,credentialIndex=%d,userType=%u]", commandPath.mEndpointId, credentialIndex, to_underlying(userType.Value())); sendSetCredentialResponse(commandObj, commandPath, DlStatus::kInvalidField, 0, nextAvailableCredentialSlot); @@ -3113,9 +3111,9 @@ void DoorLockServer::setHolidayScheduleCommandHandler(chip::app::CommandHandler return; } - if (operatingMode > OperatingModeEnum::kPassage || operatingMode < OperatingModeEnum::kNormal) + if (operatingMode == OperatingModeEnum::kUnknownEnumValue) { - emberAfDoorLockClusterPrintln("[SetHolidaySchedule] Unable to add schedule - operating mode is out of range" + emberAfDoorLockClusterPrintln("[SetHolidaySchedule] Unable to add schedule - operating mode is unknown" "[endpointId=%d,scheduleIndex=%d,localStarTime=%" PRIu32 ",localEndTime=%" PRIu32 ", operatingMode=%d]", endpointId, holidayIndex, localStartTime, localEndTime, to_underlying(operatingMode)); diff --git a/src/app/data-model/Nullable.h b/src/app/data-model/Nullable.h index 46586e0742f328..844a7c1b385ae9 100644 --- a/src/app/data-model/Nullable.h +++ b/src/app/data-model/Nullable.h @@ -83,7 +83,9 @@ struct Nullable : protected Optional static constexpr bool kIsFabricScoped = false; bool operator==(const Nullable & other) const { return Optional::operator==(other); } - bool operator!=(const Nullable & other) const { return !(*this == other); } + bool operator!=(const Nullable & other) const { return Optional::operator!=(other); } + bool operator==(const T & other) const { return Optional::operator==(other); } + bool operator!=(const T & other) const { return Optional::operator!=(other); } }; template diff --git a/src/lib/core/Optional.h b/src/lib/core/Optional.h index 316473892a3938..4edae30093c038 100644 --- a/src/lib/core/Optional.h +++ b/src/lib/core/Optional.h @@ -184,6 +184,8 @@ class Optional return (mHasValue == other.mHasValue) && (!other.mHasValue || (mValue.mData == other.mValue.mData)); } bool operator!=(const Optional & other) const { return !(*this == other); } + bool operator==(const T & other) const { return HasValue() && Value() == other; } + bool operator!=(const T & other) const { return !(*this == other); } /** Convenience method to create an optional without a valid value. */ static Optional Missing() { return Optional(); } diff --git a/src/lib/core/tests/TestOptional.cpp b/src/lib/core/tests/TestOptional.cpp index 9eff4dce870e45..af4617856894c8 100644 --- a/src/lib/core/tests/TestOptional.cpp +++ b/src/lib/core/tests/TestOptional.cpp @@ -45,6 +45,8 @@ struct Count Count(Count && o) : m(o.m) { ++created; } Count & operator=(Count &&) = default; + bool operator==(const Count & o) const { return m == o.m; } + int m; static void ResetCounter() @@ -74,26 +76,43 @@ int Count::destroyed; static void TestBasic(nlTestSuite * inSuite, void * inContext) { + // Set up our test Count objects, which will mess with counts, before we reset the + // counts. + Count c100(100), c101(101), c102(102); + Count::ResetCounter(); { auto testOptional = Optional::Value(100); NL_TEST_ASSERT(inSuite, Count::created == 1 && Count::destroyed == 0); NL_TEST_ASSERT(inSuite, testOptional.HasValue() && testOptional.Value().m == 100); + NL_TEST_ASSERT(inSuite, testOptional == c100); + NL_TEST_ASSERT(inSuite, testOptional != c101); + NL_TEST_ASSERT(inSuite, testOptional != c102); testOptional.ClearValue(); NL_TEST_ASSERT(inSuite, Count::created == 1 && Count::destroyed == 1); NL_TEST_ASSERT(inSuite, !testOptional.HasValue()); + NL_TEST_ASSERT(inSuite, testOptional != c100); + NL_TEST_ASSERT(inSuite, testOptional != c101); + NL_TEST_ASSERT(inSuite, testOptional != c102); testOptional.SetValue(Count(101)); NL_TEST_ASSERT(inSuite, Count::created == 3 && Count::destroyed == 2); NL_TEST_ASSERT(inSuite, testOptional.HasValue() && testOptional.Value().m == 101); + NL_TEST_ASSERT(inSuite, testOptional != c100); + NL_TEST_ASSERT(inSuite, testOptional == c101); + NL_TEST_ASSERT(inSuite, testOptional != c102); testOptional.Emplace(102); NL_TEST_ASSERT(inSuite, Count::created == 4 && Count::destroyed == 3); NL_TEST_ASSERT(inSuite, testOptional.HasValue() && testOptional.Value().m == 102); + NL_TEST_ASSERT(inSuite, testOptional != c100); + NL_TEST_ASSERT(inSuite, testOptional != c101); + NL_TEST_ASSERT(inSuite, testOptional == c102); } + // Our test Count objects are still in scope here. NL_TEST_ASSERT(inSuite, Count::created == 4 && Count::destroyed == 4); } From c7b8bf94b6d8077cb2dba2e2150b4f920c4f2456 Mon Sep 17 00:00:00 2001 From: manjunath-grl <102359958+manjunath-grl@users.noreply.github.com> Date: Thu, 9 Feb 2023 01:34:33 +0530 Subject: [PATCH 07/16] Modified test Feb 08 (#24918) * Modified scripts: TC-ACE-1.5 TC-ACL-2.7 TC-ACL-2.8 TC-ACL-2.10 Modified manual test TC-BRBINFO-2.1 Added missed prompt in simulated test: TC-ACT-3.1 TC-BOOL-3.1 TC-FLW-3.1 TC-I-3.1 TC-PRS-3.1 TC-PSCFG-3.1 TC-SWTCH-3.1 * Auto generated files * Restyled by whitespace * Fixes issue #690 --------- Co-authored-by: Restyled.io --- .../suites/certification/Test_TC_ACE_1_5.yaml | 16 +- .../certification/Test_TC_ACL_2_10.yaml | 17 +- .../suites/certification/Test_TC_ACL_2_7.yaml | 20 +- .../suites/certification/Test_TC_ACL_2_8.yaml | 20 +- .../Test_TC_ACT_3_1_Simulated.yaml | 108 +++++++++ .../Test_TC_BOOL_3_1_Simulated.yaml | 30 +++ .../certification/Test_TC_BRBINFO_2_1.yaml | 2 +- .../certification/Test_TC_BRBINFO_2_3.yaml | 56 ++--- .../Test_TC_FLW_3_1_Simulated.yaml | 38 +++ .../suites/certification/Test_TC_G_2_3.yaml | 122 ++++++---- .../Test_TC_I_3_1_Simulated.yaml | 30 +++ .../Test_TC_PRS_3_1_Simulated.yaml | 43 ++++ .../Test_TC_PSCFG_3_1_Simulated.yaml | 30 +++ .../Test_TC_SWTCH_3_1_Simulated.yaml | 34 +++ .../chip-tool/zap-generated/test/Commands.h | 84 ++++++- .../zap-generated/test/Commands.h | 30 ++- .../app1/zap-generated/test/Commands.h | 224 +++++++++++++++++- .../app2/zap-generated/test/Commands.h | 224 +++++++++++++++++- 18 files changed, 999 insertions(+), 129 deletions(-) diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml index 7f71142d39b160..75dcd4e537f0df 100644 --- a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml @@ -22,6 +22,12 @@ config: payload: type: char_string defaultValue: "MT:-24J0AFN00KA0648G00" + discriminator: + type: int16u + defaultValue: 3840 + PakeVerifier: + type: octet_string + defaultValue: "hex:b96170aae803346884724fe9a3b287c30330c2a660375d17bb205a8cf1aecb350457f8ab79ee253ab6a8e46bb09e543ae422736de501e3db37d441fe344920d09548e4c18240630c4ff4913c53513839b7c07fcc0627a1b8573a149fcd1fa466cf" tests: - label: "Wait for the commissioned device to be retrieved for TH1" @@ -41,12 +47,20 @@ tests: - label: "Open Commissioning Window from alpha" cluster: "Administrator Commissioning" - command: "OpenBasicCommissioningWindow" + command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 arguments: values: - name: "CommissioningTimeout" value: 180 + - name: "PAKEPasscodeVerifier" + value: PakeVerifier + - name: "Discriminator" + value: discriminator + - name: "Iterations" + value: 1000 + - name: "Salt" + value: "SPAKE2P Key Salt" - label: "Commission from TH2" identity: "beta" diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml index a514fec00b511c..3f52bd29623551 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml @@ -31,6 +31,9 @@ config: payload: type: char_string defaultValue: "MT:-24J0AFN00KA0648G00" + PakeVerifier: + type: octet_string + defaultValue: "hex:b96170aae803346884724fe9a3b287c30330c2a660375d17bb205a8cf1aecb350457f8ab79ee253ab6a8e46bb09e543ae422736de501e3db37d441fe344920d09548e4c18240630c4ff4913c53513839b7c07fcc0627a1b8573a149fcd1fa466cf" D_OK_EMPTY: type: octet_string defaultValue: "hex:1718" @@ -64,16 +67,22 @@ tests: response: saveAs: TH1FabricIndex - - label: - "Step 3:TH1 puts DUT into commissioning mode, TH2 commissions DUT - using admin node ID N2" + - label: "Step 3:TH1 puts DUT into commissioning mode" cluster: "Administrator Commissioning" - command: "OpenBasicCommissioningWindow" + command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 arguments: values: - name: "CommissioningTimeout" value: 180 + - name: "PAKEPasscodeVerifier" + value: PakeVerifier + - name: "Discriminator" + value: discriminator + - name: "Iterations" + value: 1000 + - name: "Salt" + value: "SPAKE2P Key Salt" - label: "TH2 starts a commissioning process with DUT" identity: "beta" diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml index 38be34e85320de..cca2cec6d76409 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml @@ -28,6 +28,12 @@ config: payload: type: char_string defaultValue: "MT:-24J0AFN00KA0648G00" + discriminator: + type: int16u + defaultValue: 3840 + PakeVerifier: + type: octet_string + defaultValue: "hex:b96170aae803346884724fe9a3b287c30330c2a660375d17bb205a8cf1aecb350457f8ab79ee253ab6a8e46bb09e543ae422736de501e3db37d441fe344920d09548e4c18240630c4ff4913c53513839b7c07fcc0627a1b8573a149fcd1fa466cf" D_OK_EMPTY: type: octet_string defaultValue: "hex:1718" @@ -61,16 +67,22 @@ tests: response: saveAs: TH1FabricIndex - - label: - "Step 3:TH1 puts DUT into commissioning mode, TH2 commissions DUT - using admin node ID N2" + - label: "Step 3:TH1 puts DUT into commissioning mode" cluster: "Administrator Commissioning" - command: "OpenBasicCommissioningWindow" + command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 arguments: values: - name: "CommissioningTimeout" value: 180 + - name: "PAKEPasscodeVerifier" + value: PakeVerifier + - name: "Discriminator" + value: discriminator + - name: "Iterations" + value: 1000 + - name: "Salt" + value: "SPAKE2P Key Salt" - label: "Step 4:TH2 starts a commissioning process with DUT" identity: "beta" diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml index b4865ea186de2b..f744b108df2649 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml @@ -27,6 +27,12 @@ config: payload: type: char_string defaultValue: "MT:-24J0AFN00KA0648G00" + discriminator: + type: int16u + defaultValue: 3840 + PakeVerifier: + type: octet_string + defaultValue: "hex:b96170aae803346884724fe9a3b287c30330c2a660375d17bb205a8cf1aecb350457f8ab79ee253ab6a8e46bb09e543ae422736de501e3db37d441fe344920d09548e4c18240630c4ff4913c53513839b7c07fcc0627a1b8573a149fcd1fa466cf" tests: - label: "Wait for the commissioned device to be retrieved" @@ -53,16 +59,22 @@ tests: response: saveAs: TH1FabricIndex - - label: - "TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin - node ID N2" + - label: "TH1 puts DUT into commissioning mode" cluster: "Administrator Commissioning" - command: "OpenBasicCommissioningWindow" + command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 arguments: values: - name: "CommissioningTimeout" value: 180 + - name: "PAKEPasscodeVerifier" + value: PakeVerifier + - name: "Discriminator" + value: discriminator + - name: "Iterations" + value: 1000 + - name: "Salt" + value: "SPAKE2P Key Salt" - label: "TH2 starts a commissioning process with DUT" identity: "beta" diff --git a/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml index 603a75ea3c6d9b..82191e78bf1efd 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml @@ -449,3 +449,111 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + Optional attibute + + ./chip-tool actions read setup-url 1 1 + + Verify the Unsupported attribute on the TH(all-clusters-minnimal-app) Log + + [1666952609.343159][217377:217377] CHIP:DMG: ReadRequestMessage = + [1666952609.343185][217377:217377] CHIP:DMG: { + [1666952609.343205][217377:217377] CHIP:DMG: AttributePathIBs = + [1666952609.343228][217377:217377] CHIP:DMG: [ + [1666952609.343248][217377:217377] CHIP:DMG: AttributePathIB = + [1666952609.343272][217377:217377] CHIP:DMG: { + [1666952609.343296][217377:217377] CHIP:DMG: Endpoint = 0x1, + [1666952609.343319][217377:217377] CHIP:DMG: Cluster = 0x25, + [1666952609.343344][217377:217377] CHIP:DMG: Attribute = 0x0000_0002, + [1666952609.343366][217377:217377] CHIP:DMG: } + [1666952609.343396][217377:217377] CHIP:DMG: + [1666952609.343414][217377:217377] CHIP:DMG: ], + [1666952609.343437][217377:217377] CHIP:DMG: + [1666952609.343456][217377:217377] CHIP:DMG: isFabricFiltered = true, + [1666952609.343474][217377:217377] CHIP:DMG: InteractionModelRevision = 1 + [1666952609.343491][217377:217377] CHIP:DMG: }, + [1666952609.343573][217377:217377] CHIP:DMG: IM RH moving to [GeneratingReports] + [1666952609.343647][217377:217377] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1666952609.343671][217377:217377] CHIP:DMG: Cluster 25, Attribute 2 is dirty + [1666952609.343688][217377:217377] CHIP:DMG: Reading attribute: Cluster=0x0000_0025 Endpoint=1 AttributeId=0x0000_0002 (expanded=0) + [1666952609.343733][217377:217377] CHIP:DMG: Sending report (payload has 33 bytes)... + [1666952609.344066][217377:217377] CHIP:EM: <<< [E:37827r M:202875336 (Ack:199155625)] (S) Msg TX to 1:000000000001B669 [AE59] --- Type 0001:05 (IM:ReportData) + [1666952609.344128][217377:217377] CHIP:IN: (S) Sending msg 202875336 on secure session with LSID: 63116 + [1666952609.344547][217377:217377] CHIP:DMG: >> to UDP:[fe80::485c:bace:6107:3682%wlp3s0]:46813 | 202875336 | [Interaction Model (1) / Report Data (0x05) / Session = 20214 / Exchange = 37827] + [1666952609.344601][217377:217377] CHIP:DMG: Header Flags = + [1666952609.344623][217377:217377] CHIP:DMG: { + [1666952609.344664][217377:217377] CHIP:DMG: Exchange (0x06) = + [1666952609.344681][217377:217377] CHIP:DMG: { + [1666952609.344703][217377:217377] CHIP:DMG: AckMsg = 199155625 + [1666952609.344723][217377:217377] CHIP:DMG: NeedsAck = true + [1666952609.344741][217377:217377] CHIP:DMG: } + [1666952609.344770][217377:217377] CHIP:DMG: } + [1666952609.344788][217377:217377] CHIP:DMG: + [1666952609.344816][217377:217377] CHIP:DMG: Encrypted Payload (67 bytes) = + [1666952609.344836][217377:217377] CHIP:DMG: { + [1666952609.344856][217377:217377] CHIP:DMG: data = 00f64e00c8a1170c0f5d4a4d9195a985ad54b3de870e336b0ecfaa7373615ca174138e2959606cb26476c70d8149a1435824f8e4446d9cc896de6c6d7b7275ea265d7c + [1666952609.344878][217377:217377] CHIP:DMG: buffer_ptr = 94384713812256 + [1666952609.344897][217377:217377] CHIP:DMG: } + [1666952609.344915][217377:217377] CHIP:DMG: + [1666952609.344947][217377:217377] CHIP:DMG: Decrypted Payload (33 bytes) = + [1666952609.344967][217377:217377] CHIP:DMG: { + [1666952609.344986][217377:217377] CHIP:DMG: data = 153601153500370024020124032524040218350124008618181818290424ff0118 + [1666952609.345007][217377:217377] CHIP:DMG: } + [1666952609.345024][217377:217377] CHIP:DMG: + [1666952609.345097][217377:217377] CHIP:DMG: ReportDataMessage = + [1666952609.345124][217377:217377] CHIP:DMG: { + [1666952609.345144][217377:217377] CHIP:DMG: AttributeReportIBs = + [1666952609.345174][217377:217377] CHIP:DMG: [ + [1666952609.345193][217377:217377] CHIP:DMG: AttributeReportIB = + [1666952609.345224][217377:217377] CHIP:DMG: { + [1666952609.345244][217377:217377] CHIP:DMG: AttributeStatusIB = + [1666952609.345269][217377:217377] CHIP:DMG: { + [1666952609.345290][217377:217377] CHIP:DMG: AttributePathIB = + [1666952609.345320][217377:217377] CHIP:DMG: { + [1666952609.345346][217377:217377] CHIP:DMG: Endpoint = 0x1, + [1666952609.345373][217377:217377] CHIP:DMG: Cluster = 0x25, + [1666952609.345403][217377:217377] CHIP:DMG: Attribute = 0x0000_0002, + [1666952609.345431][217377:217377] CHIP:DMG: } + [1666952609.345462][217377:217377] CHIP:DMG: + [1666952609.345489][217377:217377] CHIP:DMG: StatusIB = + [1666952609.345519][217377:217377] CHIP:DMG: { + [1666952609.345543][217377:217377] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), + [1666952609.345570][217377:217377] CHIP:DMG: }, + [1666952609.345595][217377:217377] CHIP:DMG: + [1666952609.345617][217377:217377] CHIP:DMG: }, + [1666952609.345647][217377:217377] CHIP:DMG: + [1666952609.345668][217377:217377] CHIP:DMG: }, + [1666952609.345698][217377:217377] CHIP:DMG: + [1666952609.345718][217377:217377] CHIP:DMG: ], + [1666952609.345750][217377:217377] CHIP:DMG: + [1666952609.345771][217377:217377] CHIP:DMG: SuppressResponse = true, + [1666952609.345792][217377:217377] CHIP:DMG: InteractionModelRevision = 1 + [1666952609.345811][217377:217377] CHIP:DMG: } + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml index c9b6f7ce1b5476..9999df777ec779 100644 --- a/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml @@ -323,3 +323,33 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + This cluster doesn't have any optional attribute + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml index 80d0966702ab14..7390b5b4093acc 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml @@ -137,7 +137,7 @@ tests: - label: "TH writes NodeLabel from the DUT." PICS: BRBINFO.S.A0005 && PICS_USER_PROMPT verification: | - ./chip-tool bridgeddevicebasic write node-label '"newnode"' 1 3 + ./chip-tool bridgeddevicebasicinformation write node-label '"newnode"' 1 3 Verify response has unsupported write on TH(chip-tool) Log: diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml index 7461750e3b08dd..ac89c2eff1b992 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml @@ -497,42 +497,26 @@ tests: Optional Attribute - If it is supported, then in TH(bridge-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE Example Log: - [1663658944.254117][3274:3274] CHIP:DMG: - [1663658944.254195][3274:3274] CHIP:DMG: ReportDataMessage = - [1663658944.254224][3274:3274] CHIP:DMG: { - [1663658944.254248][3274:3274] CHIP:DMG: AttributeReportIBs = - [1663658944.254286][3274:3274] CHIP:DMG: [ - [1663658944.254313][3274:3274] CHIP:DMG: AttributeReportIB = - [1663658944.254348][3274:3274] CHIP:DMG: { - [1663658944.254380][3274:3274] CHIP:DMG: AttributeStatusIB = - [1663658944.254419][3274:3274] CHIP:DMG: { - [1663658944.254456][3274:3274] CHIP:DMG: AttributePathIB = - [1663658944.254497][3274:3274] CHIP:DMG: { - [1663658944.254539][3274:3274] CHIP:DMG: Endpoint = 0x3, - [1663658944.254575][3274:3274] CHIP:DMG: Cluster = 0x39, - [1663658944.254614][3274:3274] CHIP:DMG: Attribute = 0x0000_000C, - [1663658944.254648][3274:3274] CHIP:DMG: } - [1663658944.254690][3274:3274] CHIP:DMG: - [1663658944.254723][3274:3274] CHIP:DMG: StatusIB = - [1663658944.254762][3274:3274] CHIP:DMG: { - [1663658944.254835][3274:3274] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1663658944.254876][3274:3274] CHIP:DMG: }, - [1663658944.254919][3274:3274] CHIP:DMG: - [1663658944.254954][3274:3274] CHIP:DMG: }, - [1663658944.254994][3274:3274] CHIP:DMG: - [1663658944.255019][3274:3274] CHIP:DMG: }, - [1663658944.255055][3274:3274] CHIP:DMG: - [1663658944.255081][3274:3274] CHIP:DMG: ], - [1663658944.255113][3274:3274] CHIP:DMG: - [1663658944.255141][3274:3274] CHIP:DMG: SuppressResponse = true, - [1663658944.255170][3274:3274] CHIP:DMG: InteractionModelRevision = 1 - [1663658944.255196][3274:3274] CHIP:DMG: } - [1663658944.255222][3274:3274] CHIP:DMG: - [1663658944.255463][3274:3274] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1663658944.255543][3274:3274] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - [1663658944.255573][3274:3274] CHIP:DMG: IM RH moving to [AwaitingDestruction] - [1663658944.255609][3274:3274] CHIP:DMG: All ReadHandler-s are clean, clear GlobalDirtySet - [1663658944.256310][3274:3274] CHIP:DMG: << from UDP:[fe80::e65f:1ff:fe0e:baf7%eth0]:58756 | 188321411 | [Secure Channel (0) / Standalone Ack (0x10) / Session = 0 / Exchange = 17890] + + [1662483368.089998][6721:6721] CHIP:DMG: ReadRequestMessage = + [1662483368.090026][6721:6721] CHIP:DMG: { + [1662483368.090047][6721:6721] CHIP:DMG: AttributePathIBs = + [1662483368.090100][6721:6721] CHIP:DMG: [ + [1662483368.090126][6721:6721] CHIP:DMG: AttributePathIB = + [1662483368.090154][6721:6721] CHIP:DMG: { + [1662483368.090182][6721:6721] CHIP:DMG: Endpoint = 0x3, + [1662483368.090214][6721:6721] CHIP:DMG: Cluster = 0x39, + [1662483368.090244][6721:6721] CHIP:DMG: Attribute = 0x0000_000D, + [1662483368.090272][6721:6721] CHIP:DMG: } + [1662483368.090299][6721:6721] CHIP:DMG: + [1662483368.090324][6721:6721] CHIP:DMG: ], + [1662483368.090352][6721:6721] CHIP:DMG: + [1662483368.090378][6721:6721] CHIP:DMG: isFabricFiltered = true, + [1662483368.090403][6721:6721] CHIP:DMG: InteractionModelRevision = 1 + [1662483368.090426][6721:6721] CHIP:DMG: }, + [1662483368.090499][6721:6721] CHIP:DMG: IM RH moving to [GeneratingReports] + [1662483368.090578][6721:6721] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1662483368.090607][6721:6721] CHIP:DMG: Cluster 39, Attribute d is dirty disabled: true - label: "DUT reads ProductLabel from the TH" diff --git a/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml index d32135b4ec592d..de8b26fe9e1fc0 100644 --- a/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml @@ -371,3 +371,41 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + Verify TH(all-clusters-minimal-app) receives the read command, and responds that this attribute is not available and also DUT is aware that the optional attributes are not available, and does not issue read requests for the attributes which it did read in step 2 + + + ./chip-tool flowmeasurement read tolerance 1 1 + + Verify Tolerance response on the TH(all-clusters-minimal-app) Log: + + on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_G_2_3.yaml b/src/app/tests/suites/certification/Test_TC_G_2_3.yaml index c7345794dfd14d..6abeafc4e6d379 100644 --- a/src/app/tests/suites/certification/Test_TC_G_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_G_2_3.yaml @@ -191,54 +191,82 @@ tests: [1663071815.845337][23720:23725] CHIP:DMG: }, - Before adding the Groups (0x0008) execute this command + Before adding the Groups (0x0008,0x0009) execute this command + + ./chip-tool groupkeymanagement write group-key-map '[{"groupId":8, "groupKeySetID": 1, "fabricIndex": 1},{"groupId": 9, "groupKeySetID": 1,"fabricIndex": 1}]' 1 0 + + + Verify the "status is success" on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + + [1674551849.075921][20994:20996] CHIP:DMG: WriteResponseMessage = + [1674551849.075924][20994:20996] CHIP:DMG: { + [1674551849.075926][20994:20996] CHIP:DMG: AttributeStatusIBs = + [1674551849.075931][20994:20996] CHIP:DMG: [ + [1674551849.075934][20994:20996] CHIP:DMG: AttributeStatusIB = + [1674551849.075937][20994:20996] CHIP:DMG: { + [1674551849.075940][20994:20996] CHIP:DMG: AttributePathIB = + [1674551849.075943][20994:20996] CHIP:DMG: { + [1674551849.075947][20994:20996] CHIP:DMG: Endpoint = 0x0, + [1674551849.075950][20994:20996] CHIP:DMG: Cluster = 0x3f, + [1674551849.075953][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, + [1674551849.075956][20994:20996] CHIP:DMG: } + [1674551849.075961][20994:20996] CHIP:DMG: + [1674551849.075964][20994:20996] CHIP:DMG: StatusIB = + [1674551849.075967][20994:20996] CHIP:DMG: { + [1674551849.075971][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), + [1674551849.075974][20994:20996] CHIP:DMG: }, + [1674551849.075977][20994:20996] CHIP:DMG: + [1674551849.075980][20994:20996] CHIP:DMG: }, + [1674551849.075986][20994:20996] CHIP:DMG: + [1674551849.075989][20994:20996] CHIP:DMG: AttributeStatusIB = + [1674551849.075991][20994:20996] CHIP:DMG: { + [1674551849.075994][20994:20996] CHIP:DMG: AttributePathIB = + [1674551849.075997][20994:20996] CHIP:DMG: { + [1674551849.076000][20994:20996] CHIP:DMG: Endpoint = 0x0, + [1674551849.076003][20994:20996] CHIP:DMG: Cluster = 0x3f, + [1674551849.076006][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, + [1674551849.076010][20994:20996] CHIP:DMG: ListIndex = Null, + [1674551849.076012][20994:20996] CHIP:DMG: } + [1674551849.076017][20994:20996] CHIP:DMG: + [1674551849.076020][20994:20996] CHIP:DMG: StatusIB = + [1674551849.076022][20994:20996] CHIP:DMG: { + [1674551849.076025][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), + [1674551849.076028][20994:20996] CHIP:DMG: }, + [1674551849.076031][20994:20996] CHIP:DMG: + [1674551849.076034][20994:20996] CHIP:DMG: }, + [1674551849.076040][20994:20996] CHIP:DMG: + [1674551849.076043][20994:20996] CHIP:DMG: AttributeStatusIB = + [1674551849.076046][20994:20996] CHIP:DMG: { + [1674551849.076048][20994:20996] CHIP:DMG: AttributePathIB = + [1674551849.076051][20994:20996] CHIP:DMG: { + [1674551849.076054][20994:20996] CHIP:DMG: Endpoint = 0x0, + [1674551849.076057][20994:20996] CHIP:DMG: Cluster = 0x3f, + [1674551849.076060][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, + [1674551849.076063][20994:20996] CHIP:DMG: ListIndex = Null, + [1674551849.076066][20994:20996] CHIP:DMG: } + [1674551849.076071][20994:20996] CHIP:DMG: + [1674551849.076074][20994:20996] CHIP:DMG: StatusIB = + [1674551849.076076][20994:20996] CHIP:DMG: { + [1674551849.076080][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), + [1674551849.076082][20994:20996] CHIP:DMG: }, + [1674551849.076085][20994:20996] CHIP:DMG: + [1674551849.076088][20994:20996] CHIP:DMG: }, + [1674551849.076092][20994:20996] CHIP:DMG: + [1674551849.076094][20994:20996] CHIP:DMG: ], + [1674551849.076102][20994:20996] CHIP:DMG: + [1674551849.076105][20994:20996] CHIP:DMG: InteractionModelRevision = 1 + [1674551849.076108][20994:20996] CHIP:DMG: } + + + + Before adding the Group0x0005 execute this command which is used to check the Resource_Exhausted Condition + + ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 5, "groupKeySetID": 1, "fabricIndex": 1}]' 1 0 + + + Verify the "status is success" on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: - ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 8, "groupKeySetID": 1, "fabricIndex": 1}]' 1 0 - - Verify the "status is success" on the TH(Chip-tool) Log: - - [1663071878.472457][23730:23735] CHIP:DMG: WriteClient moving to [ResponseRe] - [1663071878.472525][23730:23735] CHIP:DMG: WriteResponseMessage = - [1663071878.472560][23730:23735] CHIP:DMG: { - [1663071878.472607][23730:23735] CHIP:DMG: AttributeStatusIBs = - [1663071878.472649][23730:23735] CHIP:DMG: [ - [1663071878.472702][23730:23735] CHIP:DMG: AttributeStatusIB = - [1663071878.472743][23730:23735] CHIP:DMG: { - [1663071878.472779][23730:23735] CHIP:DMG: AttributePathIB = - [1663071878.472838][23730:23735] CHIP:DMG: { - [1663071878.472893][23730:23735] CHIP:DMG: Endpoint = 0x0, - [1663071878.472939][23730:23735] CHIP:DMG: Cluster = 0x3f, - [1663071878.473002][23730:23735] CHIP:DMG: Attribute = 0x0000_0000, - [1663071878.473044][23730:23735] CHIP:DMG: } - [1663071878.473104][23730:23735] CHIP:DMG: - [1663071878.473154][23730:23735] CHIP:DMG: StatusIB = - [1663071878.473200][23730:23735] CHIP:DMG: { - [1663071878.473257][23730:23735] CHIP:DMG: status = 0x00 (SUCCESS), - [1663071878.473297][23730:23735] CHIP:DMG: }, - [1663071878.473349][23730:23735] CHIP:DMG: - [1663071878.473384][23730:23735] CHIP:DMG: }, - [1663071878.473442][23730:23735] CHIP:DMG: - [1663071878.473476][23730:23735] CHIP:DMG: AttributeStatusIB = - [1663071878.473524][23730:23735] CHIP:DMG: { - [1663071878.473559][23730:23735] CHIP:DMG: AttributePathIB = - [1663071878.473613][23730:23735] CHIP:DMG: { - [1663071878.473656][23730:23735] CHIP:DMG: Endpoint = 0x0, - [1663071878.473714][23730:23735] CHIP:DMG: Cluster = 0x3f, - [1663071878.473759][23730:23735] CHIP:DMG: Attribute = 0x0000_0000, - [1663071878.473814][23730:23735] CHIP:DMG: ListIndex = Null, - [1663071878.473855][23730:23735] CHIP:DMG: } - [1663071878.473913][23730:23735] CHIP:DMG: - [1663071878.473953][23730:23735] CHIP:DMG: StatusIB = - [1663071878.474006][23730:23735] CHIP:DMG: { - [1663071878.474048][23730:23735] CHIP:DMG: status = 0x00 (SUCCESS), - [1663071878.474104][23730:23735] CHIP:DMG: }, - - - Before adding the Group0x0009 execute this command which is used to check the Resource_Exhausted Condition - - ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 9, "groupKeySetID": 1, "fabricIndex": 1}]' 1 0 - - Verify the "status is success" on the TH(Chip-tool) Log: [1658319969.849079][4777:4782] CHIP:DMG: StatusIB = [1658319969.849119][4777:4782] CHIP:DMG: { diff --git a/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml index ba42c2ea920967..68bf2f90ced322 100644 --- a/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml @@ -483,3 +483,33 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + There is no optional attribute for this cluster + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml index b60ecfcb0e91d0..530b60ab96d782 100644 --- a/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml @@ -177,3 +177,46 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + TH all-clusters-minimal-app does not support optional attributes, if implemted we will get "General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" as output when we read following attributes. + + + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + + + TH receives the read command and knows this attribute for this cluster and provides a plausable value, DUT processes the values and operates normally + + ./chip-tool pressuremeasurement read tolerance 1 1 + ./chip-tool pressuremeasurement read scaled-value 1 1 + ./chip-tool pressuremeasurement read min-scaled-value 1 1 + ./chip-tool pressuremeasurement read max-scaled-value 1 1 + ./chip-tool pressuremeasurement read scaled-tolerance 1 1 + ./chip-tool pressuremeasurement read scale 1 1 + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_PSCFG_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_PSCFG_3_1_Simulated.yaml index 8944a46fd3c5a8..f7bb3f17aed002 100644 --- a/src/app/tests/suites/certification/Test_TC_PSCFG_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_PSCFG_3_1_Simulated.yaml @@ -104,3 +104,33 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + This cluster doesn't have any optional attribute + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml index beb30524e705af..3731be32c9cd40 100644 --- a/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml @@ -311,3 +311,37 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + TH all-clusters-minimal-app does not support optional attributes + + ./chip-tool switch read multi-press-max 1 1 + + status = 0x86 (UNSUPPORTED_ATTRIBUTE), + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index e8fe2755873805..f90e2077ce7db9 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -5601,6 +5601,8 @@ class Test_TC_ACL_2_7Suite : public TestCommand AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); AddArgument("payload", &mPayload); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("D_OK_EMPTY", &mDOkEmpty); AddArgument("D_OK_SINGLE", &mDOkSingle); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); @@ -5619,6 +5621,8 @@ class Test_TC_ACL_2_7Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mNodeId2; chip::Optional mPayload; + chip::Optional mDiscriminator; + chip::Optional mPakeVerifier; chip::Optional mDOkEmpty; chip::Optional mDOkSingle; chip::Optional mTimeout; @@ -5835,12 +5839,24 @@ class Test_TC_ACL_2_7Suite : public TestCommand OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3:TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID N2"); + LogStep(3, "Step 3:TH1 puts DUT into commissioning mode"); ListFreer listFreer; - chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; + value.PAKEPasscodeVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20" + "\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d" + "\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51" + "\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf"), + 97); + value.discriminator = mDiscriminator.HasValue() ? mDiscriminator.Value() : 3840U; + value.iterations = 1000UL; + value.salt = chip::ByteSpan(chip::Uint8::from_const_char("SPAKE2P Key Saltgarbage: not in length on purpose"), 16); return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, - AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + AdministratorCommissioning::Commands::OpenCommissioningWindow::Id, value, chip::Optional(10000), chip::NullOptional ); @@ -5964,6 +5980,8 @@ class Test_TC_ACL_2_8Suite : public TestCommand AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); AddArgument("payload", &mPayload); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } @@ -5980,6 +5998,8 @@ class Test_TC_ACL_2_8Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mNodeId2; chip::Optional mPayload; + chip::Optional mDiscriminator; + chip::Optional mPakeVerifier; chip::Optional mTimeout; chip::NodeId TH1CommissionerNodeId; @@ -6376,12 +6396,24 @@ class Test_TC_ACL_2_8Suite : public TestCommand OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID N2"); + LogStep(3, "TH1 puts DUT into commissioning mode"); ListFreer listFreer; - chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; + value.PAKEPasscodeVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20" + "\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d" + "\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51" + "\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf"), + 97); + value.discriminator = mDiscriminator.HasValue() ? mDiscriminator.Value() : 3840U; + value.iterations = 1000UL; + value.salt = chip::ByteSpan(chip::Uint8::from_const_char("SPAKE2P Key Saltgarbage: not in length on purpose"), 16); return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, - AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + AdministratorCommissioning::Commands::OpenCommissioningWindow::Id, value, chip::Optional(10000), chip::NullOptional ); @@ -6803,6 +6835,7 @@ class Test_TC_ACL_2_10Suite : public TestCommand AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); AddArgument("payload", &mPayload); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("D_OK_EMPTY", &mDOkEmpty); AddArgument("D_OK_SINGLE", &mDOkSingle); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); @@ -6822,6 +6855,7 @@ class Test_TC_ACL_2_10Suite : public TestCommand chip::Optional mNodeId2; chip::Optional mDiscriminator; chip::Optional mPayload; + chip::Optional mPakeVerifier; chip::Optional mDOkEmpty; chip::Optional mDOkSingle; chip::Optional mTimeout; @@ -7058,12 +7092,24 @@ class Test_TC_ACL_2_10Suite : public TestCommand OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3:TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID N2"); + LogStep(3, "Step 3:TH1 puts DUT into commissioning mode"); ListFreer listFreer; - chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; + value.PAKEPasscodeVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20" + "\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d" + "\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51" + "\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf"), + 97); + value.discriminator = mDiscriminator.HasValue() ? mDiscriminator.Value() : 3840U; + value.iterations = 1000UL; + value.salt = chip::ByteSpan(chip::Uint8::from_const_char("SPAKE2P Key Saltgarbage: not in length on purpose"), 16); return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, - AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + AdministratorCommissioning::Commands::OpenCommissioningWindow::Id, value, chip::Optional(10000), chip::NullOptional ); @@ -8266,6 +8312,8 @@ class Test_TC_ACE_1_5Suite : public TestCommand AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("payload", &mPayload); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } @@ -8281,6 +8329,8 @@ class Test_TC_ACE_1_5Suite : public TestCommand chip::Optional mCluster; chip::Optional mEndpoint; chip::Optional mPayload; + chip::Optional mDiscriminator; + chip::Optional mPakeVerifier; chip::Optional mTimeout; uint8_t th1FabricIndex; @@ -8416,10 +8466,22 @@ class Test_TC_ACE_1_5Suite : public TestCommand case 2: { LogStep(2, "Open Commissioning Window from alpha"); ListFreer listFreer; - chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; + value.PAKEPasscodeVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20" + "\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d" + "\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51" + "\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf"), + 97); + value.discriminator = mDiscriminator.HasValue() ? mDiscriminator.Value() : 3840U; + value.iterations = 1000UL; + value.salt = chip::ByteSpan(chip::Uint8::from_const_char("SPAKE2P Key Saltgarbage: not in length on purpose"), 16); return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, - AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + AdministratorCommissioning::Commands::OpenCommissioningWindow::Id, value, chip::Optional(10000), chip::NullOptional ); diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 7d3cb336def135..afb2835d1a3ccd 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -5563,6 +5563,8 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("payload", &mPayload); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) @@ -5733,6 +5735,8 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { chip::Optional mCluster; chip::Optional mEndpoint; chip::Optional mPayload; + chip::Optional mDiscriminator; + chip::Optional mPakeVerifier; chip::Optional mTimeout; CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrievedForTh1_0() @@ -5777,16 +5781,28 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams alloc] init]; + __auto_type * params = [[MTRAdministratorCommissioningClusterOpenCommissioningWindowParams alloc] init]; params.commissioningTimeout = [NSNumber numberWithUnsignedShort:180U]; - [cluster openBasicCommissioningWindowWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Open Commissioning Window from alpha Error: %@", err); + params.pakePasscodeVerifier = mPakeVerifier.HasValue() + ? [NSData dataWithBytes:mPakeVerifier.Value().data() length:mPakeVerifier.Value().size()] + : [[NSData alloc] + initWithBytes:"\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb" + "\x20\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22" + "\x73\x6d\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91" + "\x3c\x53\x51\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf" + length:97]; + params.discriminator = mDiscriminator.HasValue() ? [NSNumber numberWithUnsignedShort:mDiscriminator.Value()] + : [NSNumber numberWithUnsignedShort:3840U]; + params.iterations = [NSNumber numberWithUnsignedInt:1000UL]; + params.salt = [[NSData alloc] initWithBytes:"SPAKE2P Key Salt" length:16]; + [cluster openCommissioningWindowWithParams:params + completion:^(NSError * _Nullable err) { + NSLog(@"Open Commissioning Window from alpha Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } diff --git a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h index 5e3bae14d80d99..674574a3b1b3c7 100644 --- a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h +++ b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h @@ -198,7 +198,7 @@ class Test_TC_BINFO_2_3_SimulatedSuite : public TestCommand class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_ACT_3_1_SimulatedSuite() : TestCommand("Test_TC_ACT_3_1_Simulated", 5) + Test_TC_ACT_3_1_SimulatedSuite() : TestCommand("Test_TC_ACT_3_1_Simulated", 7) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -234,6 +234,14 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -280,6 +288,28 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 5: { + LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 6: { + LogStep(6, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -288,7 +318,7 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_BOOL_3_1_SimulatedSuite() : TestCommand("Test_TC_BOOL_3_1_Simulated", 3) + Test_TC_BOOL_3_1_SimulatedSuite() : TestCommand("Test_TC_BOOL_3_1_Simulated", 5) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -324,6 +354,14 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -362,6 +400,28 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 3: { + LogStep(3, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 4: { + LogStep(4, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -780,7 +840,7 @@ class Test_TC_DGWIFI_3_1_SimulatedSuite : public TestCommand class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_FLW_3_1_SimulatedSuite() : TestCommand("Test_TC_FLW_3_1_Simulated", 6) + Test_TC_FLW_3_1_SimulatedSuite() : TestCommand("Test_TC_FLW_3_1_Simulated", 8) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -816,6 +876,14 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -866,6 +934,28 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 6: { + LogStep(6, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 7: { + LogStep(7, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -940,7 +1030,7 @@ class Test_TC_G_3_1_SimulatedSuite : public TestCommand class Test_TC_I_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_I_3_1_SimulatedSuite() : TestCommand("Test_TC_I_3_1_Simulated", 6) + Test_TC_I_3_1_SimulatedSuite() : TestCommand("Test_TC_I_3_1_Simulated", 8) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -976,6 +1066,14 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1026,6 +1124,28 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 6: { + LogStep(6, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 7: { + LogStep(7, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1034,7 +1154,7 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_PRS_3_1_SimulatedSuite() : TestCommand("Test_TC_PRS_3_1_Simulated", 11) + Test_TC_PRS_3_1_SimulatedSuite() : TestCommand("Test_TC_PRS_3_1_Simulated", 13) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1070,6 +1190,14 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1140,6 +1268,28 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 11: { + LogStep(11, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 12: { + LogStep(12, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1333,7 +1483,7 @@ class Test_TC_PS_3_1_SimulatedSuite : public TestCommand class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_PSCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_PSCFG_3_1_Simulated", 3) + Test_TC_PSCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_PSCFG_3_1_Simulated", 5) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1369,6 +1519,14 @@ class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1407,6 +1565,28 @@ class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 3: { + LogStep(3, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 4: { + LogStep(4, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1543,7 +1723,7 @@ class Test_TC_RH_3_1_SimulatedSuite : public TestCommand class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_SWTCH_3_1_SimulatedSuite() : TestCommand("Test_TC_SWTCH_3_1_Simulated", 5) + Test_TC_SWTCH_3_1_SimulatedSuite() : TestCommand("Test_TC_SWTCH_3_1_Simulated", 7) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1579,6 +1759,14 @@ class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1625,6 +1813,28 @@ class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 5: { + LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 6: { + LogStep(6, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } diff --git a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h index 5e3bae14d80d99..674574a3b1b3c7 100644 --- a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h +++ b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h @@ -198,7 +198,7 @@ class Test_TC_BINFO_2_3_SimulatedSuite : public TestCommand class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_ACT_3_1_SimulatedSuite() : TestCommand("Test_TC_ACT_3_1_Simulated", 5) + Test_TC_ACT_3_1_SimulatedSuite() : TestCommand("Test_TC_ACT_3_1_Simulated", 7) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -234,6 +234,14 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -280,6 +288,28 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 5: { + LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 6: { + LogStep(6, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -288,7 +318,7 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_BOOL_3_1_SimulatedSuite() : TestCommand("Test_TC_BOOL_3_1_Simulated", 3) + Test_TC_BOOL_3_1_SimulatedSuite() : TestCommand("Test_TC_BOOL_3_1_Simulated", 5) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -324,6 +354,14 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -362,6 +400,28 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 3: { + LogStep(3, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 4: { + LogStep(4, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -780,7 +840,7 @@ class Test_TC_DGWIFI_3_1_SimulatedSuite : public TestCommand class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_FLW_3_1_SimulatedSuite() : TestCommand("Test_TC_FLW_3_1_Simulated", 6) + Test_TC_FLW_3_1_SimulatedSuite() : TestCommand("Test_TC_FLW_3_1_Simulated", 8) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -816,6 +876,14 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -866,6 +934,28 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 6: { + LogStep(6, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 7: { + LogStep(7, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -940,7 +1030,7 @@ class Test_TC_G_3_1_SimulatedSuite : public TestCommand class Test_TC_I_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_I_3_1_SimulatedSuite() : TestCommand("Test_TC_I_3_1_Simulated", 6) + Test_TC_I_3_1_SimulatedSuite() : TestCommand("Test_TC_I_3_1_Simulated", 8) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -976,6 +1066,14 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1026,6 +1124,28 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 6: { + LogStep(6, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 7: { + LogStep(7, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1034,7 +1154,7 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_PRS_3_1_SimulatedSuite() : TestCommand("Test_TC_PRS_3_1_Simulated", 11) + Test_TC_PRS_3_1_SimulatedSuite() : TestCommand("Test_TC_PRS_3_1_Simulated", 13) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1070,6 +1190,14 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1140,6 +1268,28 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 11: { + LogStep(11, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 12: { + LogStep(12, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1333,7 +1483,7 @@ class Test_TC_PS_3_1_SimulatedSuite : public TestCommand class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_PSCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_PSCFG_3_1_Simulated", 3) + Test_TC_PSCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_PSCFG_3_1_Simulated", 5) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1369,6 +1519,14 @@ class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1407,6 +1565,28 @@ class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 3: { + LogStep(3, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 4: { + LogStep(4, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1543,7 +1723,7 @@ class Test_TC_RH_3_1_SimulatedSuite : public TestCommand class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_SWTCH_3_1_SimulatedSuite() : TestCommand("Test_TC_SWTCH_3_1_Simulated", 5) + Test_TC_SWTCH_3_1_SimulatedSuite() : TestCommand("Test_TC_SWTCH_3_1_Simulated", 7) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1579,6 +1759,14 @@ class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1625,6 +1813,28 @@ class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 5: { + LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 6: { + LogStep(6, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } From c6dab5e64ba2f769b86d6e82efb216d22a5aa789 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Wed, 8 Feb 2023 21:19:23 +0100 Subject: [PATCH 08/16] =?UTF-8?q?[PICS]=20Update=20PICS.yaml=20with=20the?= =?UTF-8?q?=20latest=20PICS=20from=20the=20test=20plan,=20upda=E2=80=A6=20?= =?UTF-8?q?(#24923)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/tests/suites/TestDiscovery.yaml | 30 +- src/app/tests/suites/certification/PICS.yaml | 9139 ++++++++++------- .../suites/certification/Test_TC_BR_4.yaml | 6 +- .../suites/certification/Test_TC_DA_1_1.yaml | 2 +- .../suites/certification/Test_TC_DD_2_1.yaml | 2 +- .../Test_TC_MEDIAPLAYBACK_1_7.yaml | 2 +- .../Test_TC_MEDIAPLAYBACK_6_3.yaml | 10 +- .../certification/Test_TC_OPCREDS_3_3.yaml | 2 +- .../suites/certification/Test_TC_SC_4_4.yaml | 2 +- .../suites/certification/Test_TC_SC_5_1.yaml | 2 +- .../tests/suites/certification/ci-pics-values | 700 +- .../chip-tool/zap-generated/test/Commands.h | 34 +- .../zap-generated/test/Commands.h | 12 +- 13 files changed, 5893 insertions(+), 4050 deletions(-) diff --git a/src/app/tests/suites/TestDiscovery.yaml b/src/app/tests/suites/TestDiscovery.yaml index 474bfb02945884..d5195459f7a4fc 100644 --- a/src/app/tests/suites/TestDiscovery.yaml +++ b/src/app/tests/suites/TestDiscovery.yaml @@ -104,7 +104,7 @@ tests: # Find a way to validate the service type and the service domain - label: "Check Hostname" - PICS: "(WIFI || ETH) && !THREAD" + PICS: "(MCORE.COM.WIFI || MCORE.COM.ETH) && !MCORE.COM.THR" # On macOS the hostname is the device name and because of it this test is disabled for now. disabled: true cluster: "DiscoveryCommands" @@ -119,7 +119,7 @@ tests: isHexString: true - label: "Check Hostname" - PICS: "(!WIFI && !ETH) && THREAD" + PICS: "(!MCORE.COM.WIFI && !MCORE.COM.ETH) && MCORE.COM.THR" # On macOS the hostname is the device name and because of it this test is disabled for now. disabled: true cluster: "DiscoveryCommands" @@ -156,7 +156,7 @@ tests: command: "FindCommissionableByCommissioningMode" - label: "Check Vendor ID (_V)" - PICS: VENDOR_SUBTYPE + PICS: MCORE.SC.VENDOR_SUBTYPE cluster: "DiscoveryCommands" command: "FindCommissionableByVendorId" arguments: @@ -167,7 +167,7 @@ tests: - label: "Check Device Type ID (_T)" # The device type is not broadcasted by the accessory under CI. disabled: true - PICS: DEVTYPE_SUBTYPE + PICS: MCORE.SC.DEVTYPE_SUBTYPE cluster: "DiscoveryCommands" command: "FindCommissionableByDeviceType" arguments: @@ -189,7 +189,7 @@ tests: maxValue: 4096 - label: "TXT key for Vendor ID and Product ID (VP)" - PICS: VP_KEY + PICS: MCORE.SC.VP_KEY cluster: "DiscoveryCommands" command: "FindCommissionable" response: @@ -200,7 +200,7 @@ tests: # Maybe it should be a PICS code to differentiate between manufacturer that wants to broadcast the # product id ? - label: "TXT key for Vendor ID and Product ID (VP)" - PICS: VP_KEY + PICS: MCORE.SC.VP_KEY optional: true cluster: "DiscoveryCommands" command: "FindCommissionable" @@ -209,8 +209,8 @@ tests: - name: "productId" value: productId - - label: "Optional TXT key for MRP Retry Interval Idle (CRI)" - PICS: CRI_COMM_DISCOVERY_KEY + - label: "Optional TXT key for MRP Sleepy Idle Interval (SII)" + PICS: MCORE.SC.SII_COMM_DISCOVERY_KEY cluster: "DiscoveryCommands" command: "FindCommissionable" response: @@ -219,8 +219,8 @@ tests: constraints: maxValue: 3600000 - - label: "Optional TXT key for MRP Retry Interval Active (CRA)" - PICS: CRA_COMM_DISCOVERY_KEY + - label: "Optional TXT key for MRP Sleepy Active Interval (SAI)" + PICS: MCORE.SC.SAI_COMM_DISCOVERY_KEY cluster: "DiscoveryCommands" command: "FindCommissionable" response: @@ -239,7 +239,7 @@ tests: - label: "Optional TXT key for device type (DT)" disabled: true - PICS: DT_KEY + PICS: MCORE.SC.DT_KEY cluster: "DiscoveryCommands" command: "FindCommissionable" response: @@ -252,7 +252,7 @@ tests: maxValue: 999 - label: "Optional TXT key for device name (DN)" - PICS: DN_KEY + PICS: MCORE.SC.DN_KEY cluster: "DiscoveryCommands" command: "FindCommissionable" response: @@ -262,7 +262,7 @@ tests: maxLength: 32 - label: "Optional TXT key for rotating device identifier (RI)" - PICS: RI_KEY + PICS: MCORE.SC.RI_KEY cluster: "DiscoveryCommands" command: "FindCommissionable" response: @@ -272,7 +272,7 @@ tests: maxValue: 100 - label: "Optional TXT key for pairing hint (PH)" - PICS: PH_KEY + PICS: MCORE.SC.PH_KEY cluster: "DiscoveryCommands" command: "FindCommissionable" response: @@ -282,7 +282,7 @@ tests: notValue: 0 - label: "Optional TXT key for pairing instructions (PI)" - PICS: PI_KEY + PICS: MCORE.SC.PI_KEY cluster: "DiscoveryCommands" command: "FindCommissionable" response: diff --git a/src/app/tests/suites/certification/PICS.yaml b/src/app/tests/suites/certification/PICS.yaml index c68e8915b65014..6c08289dbcd570 100644 --- a/src/app/tests/suites/certification/PICS.yaml +++ b/src/app/tests/suites/certification/PICS.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Project CHIP Authors +# 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. @@ -12,2659 +12,3248 @@ # See the License for the specific language governing permissions and # limitations under the License. -name: PICS Items +name: PICS Item PICS: - - label: "Does the device support discovery over Bluetooth Low Power (BLE)" - id: BLE - - - label: "Does the device support discovery over WiFi?" - id: WIFI - - - label: "Does the device support discovery over THREAD" - id: THREAD + # + # Custom PICS + # + - label: "Prompts user for input. Unable to run in CI" + id: PICS_USER_PROMPT - - label: "Does the device support discovery over Ethernet?" - id: ETH + - label: "Skip sample app" + id: PICS_SKIP_SAMPLE_APP - - label: "Does the device support manufacturing date" - id: MANF_DATE + - label: "Run steps in SDK and CI only" + id: PICS_SDK_CI_ONLY - - label: "Does the device support Intermediate CA Certificate" - id: DM_ICACERT + # + # Base Details + # + - label: "Is DUT Software Component?" + id: MCORE.DT_SW_COMP - # Basic Inputcluster - - label: "Does the device implement the PresentValue attribute?" - id: A_PRESENTVALUE + - label: + "Does the device support communication over Bluetooth Low Energy (BLE) + ?" + id: MCORE.COM.BLE - - label: "Does the device implement the OutOfService attribute?" - id: A_OUTOFSERVICE + - label: "Does the device support communication over Wi-Fi ?" + id: MCORE.COM.WIFI - - label: "Does the device implement the StatusFlags attribute?" - id: A_STATUSFLAGS + - label: "Does the device support communication over Ethernet ?" + id: MCORE.COM.ETH - - label: "Can PresentValue be changed by manual operation at the DUT?" - id: MANUAL_OPERATE + - label: "Does the device support communication over Thread ?" + id: MCORE.COM.THR - - label: "Can an OutOfService be triggered?" - id: MANUAL_OUTOFSERVICE + - label: + "Does the device support Wi-Fi or Thread interfaces communication ?" + id: MCORE.COM.WIRELESS - - label: "Can an Alarm be triggered?" - id: MANUAL_ALARM + - label: "Does the device implement a Commissioner ?" + id: MCORE.ROLE.COMMISSIONER - - label: "Can a Fault be triggered?" - id: MANUAL_FAULT + - label: "Does the device implement a Commissionee ?" + id: MCORE.ROLE.COMMISSIONEE - # Color Control cluster - - label: "Does the device implement the CurrentHue attribute?" - id: CC.S.A0000 + - label: "Does the device implement a Controller ?" + id: MCORE.ROLE.CONTROLLER - - label: "Does the device implement the CurrentSaturation attribute?" - id: CC.S.A0001 + - label: "Does the device support the Factory Reset Method?" + id: MCORE.UI.FACTORYRESET - - label: "Does the device implement the REMAININGTime attribute?" - id: CC.S.A0002 + - label: + "Does the commissionee device only function within a Matter network?" + id: MCORE.DD.CHIP_DEV - - label: "Does the device implement the CurrentX attribute?" - id: CC.S.A0003 + - label: "Is the commissionee device a lock device?" + id: MCORE.DD.DEV_LOCK - - label: "Does the device implement the CurrentY attribute?" - id: CC.S.A0004 + - label: "Is the commissionee device a barrier access device?" + id: MCORE.DD.DEV_BARRIER - - label: "Does the device implement the DriftCompensation attribute?" - id: CC.S.A0005 + - label: + "Does the commissionee device have a vendor specific information + element (IE)?" + id: MCORE.DD.IE - - label: "Does the device implement the CompensationText attribute?" - id: CC.S.A0006 + - label: + "Does the commissionee device or device packaging have a QR code based + onboarding payload?" + id: MCORE.DD.QR - - label: "Does the device implement the ColorTemperatureMireds attribute?" - id: CC.S.A0007 + - label: + "Does the commissionee device or device packaging have a Manual + Pairing Code?" + id: MCORE.DD.MANUAL_PC - - label: "Does the device implement the ColorMode attribute?" - id: CC.S.A0008 + - label: + "Does the commissionee device have a NFC tag containing the onboarding + payload?" + id: MCORE.DD.NFC - - label: "Does the device implement the Options attribute?" - id: CC.S.A000f + - label: "Does the commissionee device support dynamic passcodes?" + id: MCORE.DD.PASSCODE - - label: "Does the device implement the EnhancedCurrentHue attribute?" - id: CC.S.A4000 + - label: "Does the DUT support user interface?" + id: MCORE.DD.UI - - label: "Does the device implement the EnhancedColorMode attribute?" - id: CC.S.A4001 + - label: "Does the DUT support Commissioner Discovery?" + id: MCORE.DD.COMM_DISCOVERY - - label: "Does the device implement the ColorLoopActive attribute?" - id: CC.S.A4002 + - label: "Is the DUT a Controller?" + id: MCORE.DD.CONTROLLER - - label: "Does the device implement the ColorLoopDirection attribute?" - id: CC.S.A4003 + - label: + "Does the commissionee device’s Onboarding Payload contain + concatenated QR codes?" + id: MCORE.DD.CONCATENATED_QR_CODE - - label: "Does the device implement the ColorLoopTime attribute?" - id: CC.S.A4004 + - label: + "Does the commissioner support scanning and processing concatenated QR + codes?" + id: MCORE.DD.CTRL_CONCATENATED_QR_CODE_1 - label: - "Does the device implement the ColorLoopStartEnhancedHue attribute?" - id: CC.S.A4005 + "Does the commissioner support processing devices in the order as + indicated in the concatenated QR codes?" + id: MCORE.DD.CTRL_CONCATENATED_QR_CODE_1_INORDER - label: - "Does the device implement the ColorLoopStoredEnhancedHue attribute?" - id: CC.S.A4006 + "Does the commissioner support indicating to user the need to + commission devices one by one for concatenated QR codes?" + id: MCORE.DD.CTRL_CONCATENATED_QR_CODE_2 - - label: "Does the device implement the ColorCapabilities attribute?" - id: CC.S.A400a + - label: "Does the commissioner support Discovery Capability over BLE?" + id: MCORE.DD.DISCOVERY_BLE - label: - "Does the device implement the ColorTempPhysicalMinMireds attribute?" - id: CC.S.A400b + "Does the commissioner support Discovery Capability over IP Network?" + id: MCORE.DD.DISCOVERY_IP + + - label: "Does the commissioner support Discovery Capability over SoftAP?" + id: MCORE.DD.DISCOVERY_SOFTAP + + - label: "Does the DUT support Standard Commissioning Flow?" + id: MCORE.DD.STANDARD_COMM_FLOW + + - label: "Does the DUT support User-Intent Commissioning Flow?" + id: MCORE.DD.USER_INTENT_COMM_FLOW + + - label: "Does the DUT support Custom Commissioning Flow?" + id: MCORE.DD.CUSTOM_COMM_FLOW - label: - "Does the device implement the ColorTempPhysicalMaxMireds attribute?" - id: CC.S.A400c + "Does the commissioner support accepting a Manual Pairing Code for + commissioning?" + id: MCORE.DD.MANUAL_PC_COMMISSIONING - label: - "Does the device implement the CoupleColorTempToLevelMinMireds - attribute?" - id: CC.S.A400d + "Does the commissioner support accepting an 11-digit Manual Pairing + Code for commissioning?" + id: MCORE.DD.11_MANUAL_PC - label: - "Does the device implement the StartUPColorTemperatureMireds - attribute?" - id: CC.S.A4010 + "Does the commissioner support accepting a 21-digit Manual Pairing + Code for commissioning?" + id: MCORE.DD.21_MANUAL_PC - - label: "Does the device implement the NumberOfPrimaries attribute?" - id: CC.S.A0010 + - label: + "Is commissionee device subject to physical tampering (doorbell, + camera, door lock, designed for outdoor usage)?" + id: MCORE.DD.PHYSICAL_TAMPERING - - label: "Does the device implement the Primary1X attribute?" - id: CC.S.A0011 + - label: + "Does the commissioner support scanning NFC tags containing the + onboarding payload?" + id: MCORE.DD.SCAN_NFC - - label: "Does the device implement the Primary1Y attribute?" - id: CC.S.A0012 + - label: + "Does the commissioner support accepting a QR code for commissioning?" + id: MCORE.DD.QR_COMMISSIONING - - label: "Does the device implement the Primary1Intensity attribute?" - id: CC.S.A0013 + - label: + "Does the commissioner support scanning QR codes containing the + onboarding payload?" + id: MCORE.DD.SCAN_QR_CODE - - label: "Does the device implement the Primary2X attribute?" - id: CC.S.A0015 + - label: + "Does the commissionee device support Extended Discovery through + DNS-SD advertisements when device is not in commissioning mode?" + id: MCORE.DD.EXTENDED_DISCOVERY - - label: "Does the device implement the Primary2Y attribute?" - id: CC.S.A0016 + - label: + "Does the commissionee device support advertising the Vendor ID + Commissioning Subtype in Commissionable Node Discovery through DNS-SD + advertisements?" + id: MCORE.DD.COMMISSIONING_SUBTYPE_V - - label: "Does the device implement the Primary2Intensity attribute?" - id: CC.S.A0017 + - label: + "Does the commissionee device support advertising the Device Type + Commissioning Subtype in Commissionable Node Discovery through DNS-SD + advertisements?" + id: MCORE.DD.COMMISSIONING_SUBTYPE_T - - label: "Does the device implement the Primary3X attribute?" - id: CC.S.A0019 + - label: + "Does the commissionee device support TXT Key 'VP' (Vendor ID / + Product ID) in it’s DNS-SD TXT Records for Commissionable Node + Discovery?" + id: MCORE.DD.TXT_KEY_VP - - label: "Does the device implement the Primary3Y attribute?" - id: CC.S.A001a + - label: + "Does the commissionee device support TXT Key 'DT' (Device Type) in + it’s DNS-SD TXT Records for Commissionable Node Discovery?" + id: MCORE.DD.TXT_KEY_DT - - label: "Does the device implement the Primary3Intensity attribute?" - id: CC.S.A001b + - label: + "Does the commissionee device support TXT Key 'DN' (Device Name) in + it’s DNS-SD TXT Records for Commissionable Node Discovery?" + id: MCORE.DD.TXT_KEY_DN - - label: "Does the device implement the Primary4X attribute?" - id: CC.S.A0020 + - label: + "Does the commissionee device support TXT Key 'RI' (Rotating + Identifier) in it’s DNS-SD TXT Records for Commissionable Node + Discovery?" + id: MCORE.DD.TXT_KEY_RI - - label: "Does the device implement the Primary4Y attribute?" - id: CC.S.A0021 + - label: + "Does the commissionee device support TXT Key 'PH' (Pairing Hint) in + it’s DNS-SD TXT Records for Commissionable Node Discovery?" + id: MCORE.DD.TXT_KEY_PH - - label: "Does the device implement the PRIMAR41Intensity attribute?" - id: CC.S.A0022 + - label: + "Does the commissionee device support TXT Key 'PI' (Pairing + Instruction) in it’s DNS-SD TXT Records for Commissionable Node + Discovery?" + id: MCORE.DD.TXT_KEY_PI - - label: "Does the device implement the Primary5X attribute?" - id: CC.S.A0024 + - label: + "Does device support optional subtype _V in commissionable node + discovery mDNS?" + id: MCORE.SC.VENDOR_SUBTYPE - - label: "Does the device implement the Primary5Y attribute?" - id: CC.S.A0025 + - label: + "Does device support optional subtype _T in commissionable node + discovery mDNS?" + id: MCORE.SC.DEVTYPE_SUBTYPE - - label: "Does the device implement the Primary5Intensity attribute?" - id: CC.S.A0026 + - label: + "Does device support optional key VP in commissionable node discovery + mDNS?" + id: MCORE.SC.VP_KEY - - label: "Does the device implement the Primary6X attribute?" - id: CC.S.A0028 + - label: + "Does device support optional key DT in commissionable node discovery + mDNS?" + id: MCORE.SC.DT_KEY - - label: "Does the device implement the Primary6Y attribute?" - id: CC.S.A0029 + - label: + "Does device support optional key DN in commissionable node discovery + mDNS?" + id: MCORE.SC.DN_KEY - - label: "Does the device implement the Primary6Intensity attribute?" - id: CC.S.A002a + - label: + "Does device support optional key RI in commissionable node discovery + mDNS?" + id: MCORE.SC.RI_KEY - - label: "Does the device implement the WhitePointX attribute?" - id: CC.S.A0030 + - label: + "Does device support optional key PH in commissionable node discovery + mDNS?" + id: MCORE.SC.PH_KEY - - label: "Does the device implement the WhitePointY attribute?" - id: CC.S.A0031 + - label: + "Does device support optional key PI in commissionable node discovery + mDNS?" + id: MCORE.SC.PI_KEY - - label: "Does the device implement the ColorPointRX attribute?" - id: CC.S.A0032 + - label: + "Does device support optional key SII in operational discovery mDNS?" + id: MCORE.SC.SII_OP_DISCOVERY_KEY - - label: "Does the device implement the ColorPointRY attribute?" - id: CC.S.A0033 + - label: + "Does device support optional key SII in operational discovery mDNS?" + id: MCORE.SC.SAI_OP_DISCOVERY_KEY - - label: "Does the device implement the ColorPointRIntensity attribute?" - id: CC.S.A0034 + - label: + "Does device support optional key SII in operational discovery mDNS?" + id: MCORE.SC.T_KEY - - label: "Does the device implement the ColorPointGX attribute?" - id: CC.S.A0036 + - label: "Is the DUT a Controller?" + id: MCORE.SC.DT_CONTROLLER - - label: "Does the device implement the ColorPointGY attribute?" - id: CC.S.A0037 + - label: + "Does device support optional key SII in commissionable node discovery + mDNS?" + id: MCORE.SC.SII_COMM_DISCOVERY_KEY - - label: "Does the device implement the ColorPointGIntensity attribute?" - id: CC.S.A0038 + - label: + "Does device support optional key SAI in commissionable node discovery + mDNS?" + id: MCORE.SC.SAI_COMM_DISCOVERY_KEY - - label: "Does the device implement the ColorPointBX attribute?" - id: CC.S.A003a + - label: + "Does device support Extended Discovery for Commissionable Node + Discovery?" + id: MCORE.SC.EXTENDED_DISCOVERY - - label: "Does the device implement the ColorPointBY attribute?" - id: CC.S.A003b + - label: "Is the device a sleepy end device (SED)?" + id: MCORE.SC.SED - - label: "Does the device implement the ColorPointBIntensity attribute?" - id: CC.S.A003c + - label: "Does the Controller DUT support Service Advertising?" + id: MCORE.SC.ADV - - label: "Does the device implement receiving the MoveToHue command?" - id: CC.S.C00.Rsp + - label: "Does Device support LwIP stack?" + id: MCORE.SC.LWIP - - label: "Does the device implement receiving the MoveHue command?" - id: CC.S.C01.Rsp - - - label: "Does the device implement receiving the MoveToHue command?" - id: CC.S.C02.Rsp - - - label: "Does the device implement receiving the MoveToSaturation command?" - id: CC.S.C03.Rsp - - - label: "Does the device implement receiving the MoveSaturation command?" - id: CC.S.C04.Rsp + - label: + "Does Commissioner notify user that Commissionee is not a fully + trusted device on device attestation failure?" + id: MCORE.DA.ATTEST_WARNING - - label: "Does the device implement receiving the StepSaturation command?" - id: CC.S.C05.Rsp + - label: + "Does commissionee-provided certification declaration make use of + dac_origin_vendor_id field?" + id: MCORE.DA.CERTDECL_ORIGIN_VENDORID - label: - "Does the device implement receiving the MoveToHueAndSaturation - command?" - id: CC.S.C06.Rsp + "Does commissionee-provided certification declaration make use of + dac_origin_product_id field?" + id: MCORE.DA.CERTDECL_ORIGIN_PRODUCTID - - label: "Does the device implement receiving the MoveToColor command?" - id: CC.S.C07.Rsp + - label: + "Does commissionee-provided certification declaration make use of + authorized_paa_list field?" + id: MCORE.DA.CERTDECL_AUTH_PAA - - label: "Does the device implement receiving the MoveColor command?" - id: CC.S.C08.Rsp + - label: + "Does commissionee provide a Firmware Information field in the + AttestationResponse?" + id: MCORE.DA.ATTESTELEMENT_FW_INFO - - label: "Does the device implement receiving the StopMoveStep command?" - id: CC.S.C47.Rsp + - label: "Is the device a Server" + id: MCORE.IDM.S - - label: "Does the device implement receiving the StepColor command?" - id: CC.S.C09.Rsp + - label: "Is the device a Client" + id: MCORE.IDM.C - label: - "Does the device implement receiving the MoveToColorTemperature - command?" - id: CC.S.C0a.Rsp + "Is the device a Client and Supports sending a Invoke Request Message" + id: MCORE.IDM.C.InvokeRequest - label: - "Does the device implement receiving the MoveColorTemperature command?" - id: CC.S.C4b.Rsp + "Is the device a Client and Supports sending a Read Request Message" + id: MCORE.IDM.C.ReadRequest - label: - "Does the device implement receiving the StepColorTemperature command?" - id: CC.S.C4c.Rsp + "Is the device a Client and Supports sending a Write Request Message" + id: MCORE.IDM.C.WriteRequest - label: - "Does the device implement receiving the EnhancedMoveToHue command?" - id: CC.S.C40.Rsp + "Is the device a Client and Supports sending a Subscribe Request + Message" + id: MCORE.IDM.C.SubscribeRequest - - label: "Does the device implement receiving the EnhancedMoveHue command?" - id: CC.S.C41.Rsp + - label: "Is the device a Server and supports an attribute of DataType Bool" + id: MCORE.IDM.S.Attribute.DataType_Bool - - label: "Does the device implement receiving the EnhancedStepHue command?" - id: CC.S.C42.Rsp + - label: + "Is the device a Server and supports an attribute of DataType String" + id: MCORE.IDM.S.Attribute.DataType_String - label: - "Does the device implement receiving the - EnhancedMoveToHueAndSaturation command?" - id: CC.S.C43.Rsp + "Is the device a Server and supports an attribute of DataType Unsigned + Integer" + id: MCORE.IDM.S.Attribute.DataType_UnsignedInteger - - label: "Does the device implement receiving the ColorLoopSet command?" - id: CC.S.C44.Rsp + - label: + "Is the device a Server and supports an attribute of DataType Signed + Integer" + id: MCORE.IDM.S.Attribute.DataType_SignedInteger - - label: "Does the DUT(server) support the Hue/Saturation feature?" - id: CC.S.F00 + - label: + "Is the device a Server and supports an attribute of DataType Struct" + id: MCORE.IDM.S.Attribute.DataType_Struct - - label: "Does the DUT(server) support the Enhanced Hue feature?" - id: CC.S.F01 + - label: + "Is the device a Server and supports an attribute of DataType Floating + Point" + id: MCORE.IDM.S.Attribute.DataType_FloatingPoint - - label: "Does the DUT(server) support the Color Loop feature?" - id: CC.S.F02 + - label: "Is the device a Server and supports an attribute of DataType List" + id: MCORE.IDM.S.Attribute.DataType_List - - label: "Does the DUT(server) support the Color XY feature?" - id: CC.S.F03 + - label: + "Is the device a Server and supports an attribute of DataType Octet + String" + id: MCORE.IDM.S.Attribute.DataType_OctetString - - label: "Does the DUT(server) support the Color Temperature feature?" - id: CC.S.F04 + - label: "Is the device a Server and supports an attribute of DataType Enum" + id: MCORE.IDM.S.Attribute.DataType_Enum - - label: "Does the device implement the CurrentHue attribute?" - id: CC.C.A0000 + - label: + "Is the device a Server and supports an attribute of DataType Bitmap" + id: MCORE.IDM.S.Attribute.DataType_Bitmap - - label: "Does the device implement the CurrentSaturation attribute?" - id: CC.C.A0001 + - label: + "Is the device a Client and supports Reading an attribute of DataType + Bool" + id: MCORE.IDM.C.ReadRequest.Attribute.DataType_Bool - - label: "Does the device implement the REMAININGTime attribute?" - id: CC.C.A0002 + - label: + "Is the device a Client and supports Reading an attribute of DataType + String" + id: MCORE.IDM.C.ReadRequest.Attribute.DataType_String - - label: "Does the device implement the CurrentX attribute?" - id: CC.C.A0003 + - label: + "Is the device a Client and supports Reading an attribute of DataType + Unsigned Integer" + id: MCORE.IDM.C.ReadRequest.Attribute.DataType_UnsignedInteger - - label: "Does the device implement the CurrentY attribute?" - id: CC.C.A0004 + - label: + "Is the device a Client and supports Reading an attribute of DataType + Signed Integer" + id: MCORE.IDM.C.ReadRequest.Attribute.DataType_SignedInteger - - label: "Does the device implement the DriftCompensation attribute?" - id: CC.C.A0005 + - label: + "Is the device a Client and supports Reading an attribute of DataType + Struct" + id: MCORE.IDM.C.ReadRequest.Attribute.DataType_Struct - - label: "Does the device implement the CompensationText attribute?" - id: CC.C.A0006 + - label: + "Is the device a Client and supports Reading an attribute of DataType + Floating Point" + id: MCORE.IDM.C.ReadRequest.Attribute.DataType_FloatingPoint - - label: "Does the device implement the ColorTemperatureMireds attribute?" - id: CC.C.A0007 + - label: + "Is the device a Client and supports Reading an attribute of DataType + List" + id: MCORE.IDM.C.ReadRequest.Attribute.DataType_List - - label: "Does the device implement the ColorMode attribute?" - id: CC.C.A0008 + - label: + "Is the device a Client and supports Reading an attribute of DataType + Octet String" + id: MCORE.IDM.C.ReadRequest.Attribute.DataType_OctetString - - label: "Does the device implement the Options attribute?" - id: CC.C.A000f + - label: + "Is the device a Client and supports Reading an attribute of DataType + Enum" + id: MCORE.IDM.C.ReadRequest.Attribute.DataType_Enum - - label: "Does the device implement the EnhancedCurrentHue attribute?" - id: CC.C.A4000 + - label: + "Is the device a Client and supports Reading an attribute of DataType + Bitmap" + id: MCORE.IDM.C.ReadRequest.Attribute.DataType_Bitmap - - label: "Does the device implement the EnhancedColorMode attribute?" - id: CC.C.A4001 + - label: + "Is the device a Client and supports writing an attribute of DataType + Bool" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Bool - - label: "Does the device implement the ColorLoopActive attribute?" - id: CC.C.A4002 + - label: + "Is the device a Client and supports writing an attribute of DataType + String" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_String - - label: "Does the device implement the ColorLoopDirection attribute?" - id: CC.C.A4003 + - label: + "Is the device a Client and supports writing an attribute of DataType + Unsigned Integer" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_UnsignedInteger - - label: "Does the device implement the ColorLoopTime attribute?" - id: CC.C.A4004 + - label: + "Is the device a Client and supports writing an attribute of DataType + Signed Integer" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_SignedInteger - label: - "Does the device implement the ColorLoopStartEnhancedHue attribute?" - id: CC.C.A4005 + "Is the device a Client and supports writing an attribute of DataType + Struct" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Struct - label: - "Does the device implement the ColorLoopStoredEnhancedHue attribute?" - id: CC.C.A4006 + "Is the device a Client and supports writing an attribute of DataType + Floating Point" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_FloatingPoint - - label: "Does the device implement the ColorCapabilities attribute?" - id: CC.C.A400a + - label: + "Is the device a Client and supports writing an attribute of DataType + List" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_List - label: - "Does the device implement the ColorTempPhysicalMinMireds attribute?" - id: CC.C.A400b + "Is the device a Client and supports writing an attribute of DataType + Octet String" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_OctetString - label: - "Does the device implement the ColorTempPhysicalMaxMireds attribute?" - id: CC.C.A400c + "Is the device a Client and supports writing an attribute of DataType + Enum" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Enum - label: - "Does the device implement the CoupleColorTempToLevelMinMireds - attribute?" - id: CC.C.A400d + "Is the device a Client and supports writing an attribute of DataType + Bitmap" + id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Bitmap - label: - "Does the device implement the StartUPColorTemperatureMireds - attribute?" - id: CC.C.A4010 + "Is the device a Server and supports a writable attribute of DataType + Bool" + id: MCORE.IDM.S.Attribute_W.DataType_Bool - - label: "Does the device implement the NumberOfPrimaries attribute?" - id: CC.C.A0010 + - label: + "Is the device a Server and supports a writable attribute of DataType + String" + id: MCORE.IDM.S.Attribute_W.DataType_String - - label: "Does the device implement the Primary1X attribute?" - id: CC.C.A0011 + - label: + "Is the device a Server and supports a writable attribute of DataType + UnsignedInteger" + id: MCORE.IDM.S.Attribute_W.DataType_UnsignedInteger - - label: "Does the device implement the Primary1Y attribute?" - id: CC.C.A0012 + - label: + "Is the device a Server and supports a writable attribute of DataType + SignedInteger" + id: MCORE.IDM.S.Attribute_W.DataType_SignedInteger - - label: "Does the device implement the Primary1Intensity attribute?" - id: CC.C.A0013 + - label: + "Is the device a Server and supports a writable attribute of DataType + Struct" + id: MCORE.IDM.S.Attribute_W.DataType_Struct - - label: "Does the device implement the Primary2X attribute?" - id: CC.C.A0015 + - label: + "Is the device a Server and supports a writable attribute of DataType + FloatingPoint" + id: MCORE.IDM.S.Attribute_W.DataType_FloatingPoint - - label: "Does the device implement the Primary2Y attribute?" - id: CC.C.A0016 + - label: + "Is the device a Server and supports a writable attribute of DataType + List" + id: MCORE.IDM.S.Attribute_W.DataType_List - - label: "Does the device implement the Primary2Intensity attribute?" - id: CC.C.A0017 + - label: + "Is the device a Server and supports a writable attribute of DataType + OctetString" + id: MCORE.IDM.S.Attribute_W.DataType_OctetString - - label: "Does the device implement the Primary3X attribute?" - id: CC.C.A0019 + - label: + "Is the device a Server and supports a writable attribute of DataType + Enum" + id: MCORE.IDM.S.Attribute_W.DataType_Enum - - label: "Does the device implement the Primary3Y attribute?" - id: CC.C.A001a + - label: + "Is the device a Server and supports a writable attribute of DataType + Bitmap" + id: MCORE.IDM.S.Attribute_W.DataType_Bitmap - - label: "Does the device implement the Primary3Intensity attribute?" - id: CC.C.A001b + - label: + "Is the device a Client and supports subscribing to an attribute of + DataType Bool" + id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Bool - - label: "Does the device implement the Primary4X attribute?" - id: CC.C.A0020 + - label: + "Is the device a Client and supports subscribing to an attribute of + DataType String" + id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_String - - label: "Does the device implement the Primary4Y attribute?" - id: CC.C.A0021 + - label: + "Is the device a Client and supports subscribing to an attribute of + DataType UnsignedInteger" + id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_UnsignedInteger - - label: "Does the device implement the PRIMAR41Intensity attribute?" - id: CC.C.A0022 + - label: + "Is the device a Client and supports subscribing to an attribute of + DataType Integer" + id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Integer - - label: "Does the device implement the Primary5X attribute?" - id: CC.C.A0024 + - label: + "Is the device a Client and supports subscribing to an attribute of + DataType FloatingPoint" + id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_FloatingPoint - - label: "Does the device implement the Primary5Y attribute?" - id: CC.C.A0025 + - label: + "Is the device a Client and supports subscribing to an attribute of + DataType List" + id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_List - - label: "Does the device implement the Primary5Intensity attribute?" - id: CC.C.A0026 + - label: + "Is the device a Server and capable of generating large data which is + greater than 1 MTU(1280 bytes)" + id: MCORE.IDM.S.LargeData - - label: "Does the device implement the Primary6X attribute?" - id: CC.C.A0028 + - label: + "Is the device a Client and supports subscribing to an individual + Event" + id: MCORE.IDM.C.SubscribeEvent - - label: "Does the device implement the Primary6Y attribute?" - id: CC.C.A0029 + - label: "Is the device a Client and supports Reading an individual Event" + id: MCORE.IDM.C.ReadEvent - - label: "Does the device implement the Primary6Intensity attribute?" - id: CC.C.A002a + - label: + "Is the device a client and supports subscribing to Multiple + Attributes" + id: MCORE.IDM.C.SubscribeRequest.MultipleAttributes - - label: "Does the device implement the WhitePointX attribute?" - id: CC.C.A0030 + - label: "Is the device a Server and supports Persistent subscription" + id: MCORE.IDM.S.PersistentSubscription - - label: "Does the device implement the WhitePointY attribute?" - id: CC.C.A0031 + - label: "Does the DUT implement a Bridge" + id: MCORE.BRIDGE - - label: "Does the device implement the ColorPointRX attribute?" - id: CC.C.A0032 + - label: + "Does the DUT have information on battery level of (at least some of) + of its bridged devices" + id: MCORE.BRIDGE.BatInfo - - label: "Does the device implement the ColorPointRY attribute?" - id: CC.C.A0033 + - label: + "Does the DUT have means to change the state of (at least some of) of + its bridged devices, e.g. through a manufacturer-provided app" + id: MCORE.BRIDGE.OtherControl - - label: "Does the device implement the ColorPointRIntensity attribute?" - id: CC.C.A0034 + - label: + "Does the DUT have means to change the name of (at least some of) of + its bridged devices, e.g. through a manufacturer-provided app" + id: MCORE.BRIDGE.AllowDeviceRename - - label: "Does the device implement the ColorPointGX attribute?" - id: CC.C.A0036 + - label: "Does the DUT support a Bridge" + id: MCORE.BRIDGECLIENT - - label: "Does the device implement the ColorPointGY attribute?" - id: CC.C.A0037 + - label: "Does the DUT support to maintain a list of connected devices" + id: MCORE.DEVLIST.UseDevices - - label: "Does the device implement the ColorPointGIntensity attribute?" - id: CC.C.A0038 + - label: "Does the DUT support to maintain the names of connected devices" + id: MCORE.DEVLIST.UseDeviceName - - label: "Does the device implement the ColorPointBX attribute?" - id: CC.C.A003a + - label: "Does the DUT support to maintain the state of connected devices" + id: MCORE.DEVLIST.UseDeviceState - - label: "Does the device implement the ColorPointBY attribute?" - id: CC.C.A003b + - label: + "Does the DUT support maintaining information on battery level of + connected devices" + id: MCORE.DEVLIST.UseBatInfo - - label: "Does the device implement the ColorPointBIntensity attribute?" - id: CC.C.A003c + - label: "Does the DUT support the BDX Sender role?" + id: MCORE.BDX.Sender - - label: "Does the device implement receiving the MoveToHue command?" - id: CC.C.C00.Tx + - label: "Does the DUT support the BDX Receiver role?" + id: MCORE.BDX.Receiver - - label: "Does the device implement receiving the MoveHue command?" - id: CC.C.C01.Tx + - label: "Does the DUT support the BDX Sender role in Synchronous mode?" + id: MCORE.BDX.SynchronousSender - - label: "Does the device implement receiving the MoveToHue command?" - id: CC.C.C02.Tx + - label: "Does the DUT support the BDX Receiver role in Synchronous mode?" + id: MCORE.BDX.SynchronousReceiver - - label: "Does the device implement receiving the MoveToSaturation command?" - id: CC.C.C03.Tx + - label: "Does the DUT support the BDX Sender role in Asynchronous mode?" + id: MCORE.BDX.AsynchronousSender - - label: "Does the device implement receiving the MoveSaturation command?" - id: CC.C.C04.Tx + - label: "Does the DUT support the BDX Receiver role in Asynchronous mode?" + id: MCORE.BDX.AsynchronousReceiver - - label: "Does the device implement receiving the StepSaturation command?" - id: CC.C.C05.Tx + - label: "Does the DUT control the rate of the BDX transfer ?" + id: MCORE.BDX.Driver - - label: - "Does the device implement receiving the MoveToHueAndSaturation - command?" - id: CC.C.C06.Tx + - label: "Is the DUT an Initiator of the BDX transfer?" + id: MCORE.BDX.Initiator - - label: "Does the device implement receiving the MoveToColor command?" - id: CC.C.C07.Tx + - label: "Is the DUT a Responder of the BDX transfer?" + id: MCORE.BDX.Responder - - label: "Does the device implement receiving the MoveColor command?" - id: CC.C.C08.Tx + - label: "Does the DUT support sending the BlockQueryWithSkip message?" + id: MCORE.BDX.BlockQueryWithSkip - - label: "Does the device implement receiving the StopMoveStep command?" - id: CC.C.C47.Tx + - label: "Does the DUT implement the OTA Requestor Device Type?" + id: MCORE.OTA.Requestor - - label: "Does the device implement receiving the StepColor command?" - id: CC.C.C09.Tx + - label: "Does the DUT implement the OTA Provider Device Type?" + id: MCORE.OTA.Provider - - label: - "Does the device implement receiving the MoveToColorTemperature - command?" - id: CC.C.C0a.Tx + - label: "Does the DUT support the HTTPS Protocol for OTA image download?" + id: MCORE.OTA.HTTPS - label: - "Does the device implement receiving the MoveColorTemperature command?" - id: CC.C.C4b.Tx + "Does the DUT support obtaining user consent for OTA application by + virtue of built-in user interface capabilities?" + id: MCORE.OTA.RequestorConsent + + - label: "Does the DUT support resumption of a transfer previously aborted?" + id: MCORE.OTA.Resume + + - label: "Does the DUT support Vendor specific OTA implementation?" + id: MCORE.OTA.VendorSpecific - label: - "Does the device implement receiving the StepColorTemperature command?" - id: CC.C.C4c.Tx + "Does the DUT have Administer privilege over the Access Control of + another node?" + id: MCORE.ACL.Administrator - label: - "Does the device implement receiving the EnhancedMoveToHue command?" - id: CC.C.C40.Tx + "Does the Requestor DUT support querying a different Provider in its + OTA Provider List when it hits error conditions in invoking the + QueryImage command?" + id: MCORE.OTA.Retry - - label: "Does the device implement receiving the EnhancedMoveHue command?" - id: CC.C.C41.Tx + # Access Control cluster + - label: "Does the device implement the Access Control Cluster as a server?" + id: ACL.S - - label: "Does the device implement receiving the EnhancedStepHue command?" - id: CC.C.C42.Tx + - label: "Does the device implement the Access Control Cluster as a client?" + id: ACL.C + + # + # server / attributes + # + - label: "Does the device implement the ACL attribute?" + id: ACL.S.A0000 + + - label: "Does the device implement the extension attribute?" + id: ACL.S.A0001 - label: - "Does the device implement receiving the - EnhancedMoveToHueAndSaturation command?" - id: CC.C.C43.Tx + "Does the device implement the SubjectsPerAccessControlEntry + attribute?" + id: ACL.S.A0002 - - label: "Does the device implement receiving the ColorLoopSet command?" - id: CC.C.C44.Tx + - label: "Does the device implement the TargetsPerAccessControlEntry event?" + id: ACL.S.A0003 - label: - "Does the device implement sending the MoveToColorTemperature command?" - id: CC.C.C0a.Tx + "Does the device implement the AccessControlEntriesPerFabric + attribute?" + id: ACL.S.A0004 - # Relative Humidity cluster - - label: "Does the device implement the MeasuredValue attribute?" - id: RH.S.A0000 + # + # server / Events + # + - label: "Does the device implement the AccessControlEntryChanged Event?" + id: ACL.S.E00 - - label: "Does the device implement the MinMeasuredValue attribute?" - id: RH.S.A0001 + - label: + "Does the device implement the AccessControlExtensionChanged Event?" + id: ACL.S.E01 - - label: "Does the device implement the MaxMeasuredValue attribute?" - id: RH.S.A0002 + # + # client / Events + # + - label: "Does the device implement the AccessControlEntryChanged Event?" + id: ACL.C.E00 - - label: "Does the device implement the Tolerance attribute?" - id: RH.S.A0003 + - label: + "Does the device implement the AccessControlExtensionChanged Event?" + id: ACL.C.E01 + # Access Control Enforcement Test Plan - label: - "Can the MeasuredValue attribute changed by physical control at the - device?" - id: RH.M.ManuallyControlled + "Does the device implement an Application Device Type on any endpoint" + id: APPDEVICE.S - # Temperature Measurement cluster - - label: "Does the device implement the MeasuredValue attribute?" - id: TMP.S.A0000 + # Actions Cluster Test Plan + - label: "Does the device implement the Actions cluster as a server?" + id: ACT.S - - label: "Does the device implement the MinMeasuredValue attribute?" - id: TMP.S.A0001 + - label: "Does the device implement the Actions cluster as a client?" + id: ACT.C - - label: "Does the device implement the MaxMeasuredValue attribute?" - id: TMP.S.A0002 + # + # server / attributes + # + - label: "Does the device implement the ActionList attribute?" + id: ACT.S.A0000 - - label: "Does the device implement the Tolerance attribute?" - id: TMP.S.A0003 + - label: "Does the device implement the EndpointLists attribute?" + id: ACT.S.A0001 + - label: "Does the device implement the SetupURL attribute?" + id: ACT.S.A0002 + + # + # server / manually + # - label: - "Can the MeasuredValue attribute changed by physical control at the - device?" - id: TMP.M.ManuallyControlled + "Can the ActionList attribute be filled or changed by some means? (see + Note)" + id: ACT.S.M.FillActionList - - label: "Does the device implement the Tolerance attribute?" - id: A_TEMPERATURE_TOLERANCE + - label: + "Can the EndpointLists attribute be changed by some means? (see Note)" + id: ACT.S.M.FillEndpointLists - - label: "Does the device implement the Tolerance attribute?" - id: TMP.S.A0003 + - label: + "Does the DUT support exposing an Endpoint in multiple + EndpointListStructs" + id: ACT.S.M.OverlappingEndpointLists - # Thermostat User Configuration cluster - - label: "Does the device implement the TemperatureDisplayMode attribute?" - id: TSUIC.S.A0000 + - label: "Can a suffix be used on SetupURL" + id: ACT.S.M.SetupURLWithSuffix - - label: "Does the device implement the KeypadLockout attribute?" - id: TSUIC.S.A0001 + # + # client / commandsGenerated + # + - label: "Does the DUT support sending the InstantAction command?" + id: ACT.C.C00.Tx - label: - "Does the device implement the ScheduleProgrammingVisibility - attribute?" - id: TSUIC.S.A0002 - - # Software Diagnostics cluster - #Server Attributes - - label: "The metrics for high watermark related to memory consumption." - id: DGSW.S.F00 + "Does the DUT support sending the InstantActionWithTransition command?" + id: ACT.C.C01.Tx - - label: "Does the device implement the SoftwareFault event?" - id: DGSW.S.E00 + - label: "Does the DUT support sending the StartAction command?" + id: ACT.C.C02.Tx - - label: "Does the device implement the ThreadMetrics attribute" - id: DGSW.S.A0000 + - label: "Does the DUT support sending the StartActionWithDuration command?" + id: ACT.C.C03.Tx - - label: "Does the device implement the CurrentHeapFree attribute" - id: DGSW.S.A0001 + - label: "Does the DUT support sending the StopAction command?" + id: ACT.C.C04.Tx - - label: "Does the device implement the CurrentHeapUsed attribute" - id: DGSW.S.A0002 + - label: "Does the DUT support sending the PauseAction command?" + id: ACT.C.C05.Tx - - label: "Does the device implement the CurrentHeapHighWaterMark attribute" - id: DGSW.S.A0003 + - label: "Does the DUT support sending the PauseActionWithDuration command?" + id: ACT.C.C06.Tx - - label: "Does the device implement the ResetWaterMarks command?" - id: DGSW.S.C00.Rsp + - label: "Does the DUT support sending the ResumeAction command?" + id: ACT.C.C07.Tx - #Client Attributes - - label: "Does the device implement the ThreadMetrics attribute" - id: DGSW.C.A0000 + - label: "Does the DUT support sending the EnableAction command?" + id: ACT.C.C08.Tx - - label: "Does the device implement the CurrentHeapFree attribute" - id: DGSW.C.A0001 + - label: + "Does the DUT support sending the EnableActionWithDuration command?" + id: ACT.C.C09.Tx - - label: "Does the device implement the CurrentHeapUsed attribute" - id: DGSW.C.A0002 + - label: "Does the DUT support sending the DisableAction command?" + id: ACT.C.C0a.Tx - - label: "Does the device implement the CurrentHeapHighWaterMark attribute" - id: DGSW.C.A0003 + - label: + "Does the DUT support sending the DisableActionWithDuration command?" + id: ACT.C.C0b.Tx - - label: "Does the device implement the ResetWaterMarks command?" - id: DGSW.C.C00.Tx + # + # client / manually + # + - label: "Write all supported optional attributes" + id: ACT.C.AO-WRITE - # Thermostat cluster - - label: "Thermostat is capable of managing a heating device" - id: TSTAT.S.F00 + - label: "Write all supported mandatory attribute" + id: ACT.C.AM-WRITE - - label: "Thermostat is capable of managing a cooling device" - id: TSTAT.S.F01 + - label: "Read all supported mandatory attribute" + id: ACT.C.AM-READ - - label: "Supports Occupied and Unoccupied setpoints" - id: TSTAT.S.F02 + - label: "Read all supported optional attributes" + id: ACT.C.AO-READ - - label: "Supports a weekly schedule of setpoint transitions(Schedule)" - id: TSTAT.S.F03 + # Binding Cluster Test Plan + - label: "Does the device implement the Binding Cluster as a server?" + id: BIND.S - - label: "Supports configurable setback (or span)" - id: TSTAT.S.F04 + - label: "Does the device implement the Binding Cluster as a client?" + id: BIND.C - - label: "Supports a System Mode of Auto" - id: TSTAT.S.F05 + # + # server / attributes + # + - label: "Does the DUT(server) support the Binding attribute?" + id: BIND.S.A0000 - - label: "Does the device implement the LocalTemperature attribute?" - id: TSTAT.S.A0000 + # Boolean State Cluster Test Plan + - label: "Does the device implement the Boolean State cluster as a server?" + id: BOOL.S - - label: "Does the device implement the OutdoorTemperature attribute?" - id: TSTAT.S.A0001 + - label: "Does the device implement the Boolean State cluster as a client?" + id: BOOL.C - - label: "Does the device implement the Occupancy attribute?" - id: TSTAT.S.A0002 + # + # server / attributes + # + - label: "Does the device implement the StateValue attribute?" + id: BOOL.S.A0000 - - label: "Does the device implement the AbsMinHeatSetpointLimit attribute?" - id: TSTAT.S.A0003 + # + # server / Events + # + - label: "Does the device implement the StateChange event?" + id: BOOL.S.E00 - - label: "Does the device implement the AbsMaxHeatSetpointLimit attribute?" - id: TSTAT.S.A0004 + # + # server / manually + # + - label: + "Can the StateValue attribute be changed by manual operation at the + DUT?" + id: BOOL.M.ManuallyControlled - - label: "Does the device implement the AbsMinCoolSetpointLimit attribute?" - id: TSTAT.S.A0005 + # + # client / manually + # + - label: "Write all supported mandatory attribute" + id: BOOL.C.AM-WRITE - - label: "Does the device implement the AbsMaxCoolSetpointLimit attribute?" - id: TSTAT.S.A0006 + - label: "Write all supported optional attributes" + id: BOOL.C.AO-WRITE - - label: "Does the device implement the PICoolingDemand attribute?" - id: TSTAT.S.A0007 + - label: "Read all supported mandatory attribute" + id: BOOL.C.AM-READ - - label: "Does the device implement the PIHeatingDemand attribute?" - id: TSTAT.S.A0008 + - label: "Read all supported optional attributes" + id: BOOL.C.AO-READ + # Bridged Device Basic Information Test Plan - label: - "Does the device implement the HVACSystemTypeConfiguration attribute?" - id: TSTAT.S.A0009 + "Does the device implement the Bridged Device Basic Information + Cluster as a server?" + id: BRBINFO.S - label: - "Does the device implement the LocalTemperatureCalibration attribute?" - id: TSTAT.S.A0010 + "Does the device implement the Bridged Device Basic Information + Cluster as a client?" + id: BRBINFO.C - - label: "Does the device implement the OccupiedCoolingSetpoint attribute?" - id: TSTAT.S.A0011 + # + # server / attributes + # + - label: "Does the DUT(server) support the DataModelRevision attribute?" + id: BRBINFO.S.A0000 - - label: "Does the device implement the OccupiedHeatingSetpoint attribute?" - id: TSTAT.S.A0012 + - label: "Does the DUT(server) support the VendorName attribute?" + id: BRBINFO.S.A0001 - - label: - "Does the device implement the UnoccupiedCoolingSetpoint attribute?" - id: TSTAT.S.A0013 + - label: "Does the DUT(server) support the VendorID attribute?" + id: BRBINFO.S.A0002 - - label: - "Does the device implement the UnoccupiedHeatingSetpoint attribute?" - id: TSTAT.S.A0014 + - label: "Does the DUT(server) support the ProductName attribute?" + id: BRBINFO.S.A0003 - - label: "Does the device implement the MinHeatSetpointLimit attribute?" - id: TSTAT.S.A0015 + - label: "Does the DUT(server) support the ProductID attribute?" + id: BRBINFO.S.A0004 - - label: "Does the device implement the MaxHeatSetpointLimit attribute?" - id: TSTAT.S.A0016 + - label: "Does the DUT(server) support the NodeLabel attribute?" + id: BRBINFO.S.A0005 - - label: "Does the device implement the MinCoolSetpointLimit attribute?" - id: TSTAT.S.A0017 + - label: "Does the DUT(server) support the Location attribute?" + id: BRBINFO.S.A0006 - - label: "Does the device implement the MaxCoolSetpointLimit attribute?" - id: TSTAT.S.A0018 + - label: "Does the DUT(server) support the HardwareVersion attribute?" + id: BRBINFO.S.A0007 - - label: "Does the device implement the MinSetpointDeadBand attribute?" - id: TSTAT.S.A0019 + - label: "Does the DUT(server) support the HardwareVersionString attribute?" + id: BRBINFO.S.A0008 - - label: "Does the device implement the RemoteSensing attribute?" - id: TSTAT.S.A001a + - label: "Does the DUT(server) support the SoftwareVersion attribute?" + id: BRBINFO.S.A0009 - - label: - "Does the device implement the ControlSequenceOfOperation attribute?" - id: TSTAT.S.A001b + - label: "Does the DUT(server) support the SoftwareVersionString attribute?" + id: BRBINFO.S.A000a - - label: "Does the device implement the SystemMode attribute?" - id: TSTAT.S.A001c + - label: "Does the DUT(server) support the ManufacturingDate attribute?" + id: BRBINFO.S.A000b - - label: "Does the device implement the AlarmMask attribute?" - id: TSTAT.S.A001d + - label: "Does the DUT(server) support the PartNumber attribute?" + id: BRBINFO.S.A000c - - label: "Does the device implement the ThermostatRunningMode attribute?" - id: TSTAT.S.A001e + - label: "Does the DUT(server) support the ProductURL attribute?" + id: BRBINFO.S.A000d - - label: "Does the device implement the StartOfWeek attribute?" - id: TSTAT.S.A0020 + - label: "Does the DUT(server) support the ProductLabel attribute?" + id: BRBINFO.S.A000e - - label: - "Does the device implement the NumberOfWeeklyTransitions attribute?" - id: TSTAT.S.A0021 + - label: "Does the DUT(server) support the SerialNumber attribute?" + id: BRBINFO.S.A000f - - label: "Does the device implement the NumberOfDailyTransitions attribute?" - id: TSTAT.S.A0022 + - label: "Does the DUT(server) support the LocalConfigDisabled attribute?" + id: BRBINFO.S.A0010 - - label: "Does the device implement the TemperatureSetpointHold attribute?" - id: TSTAT.S.A0023 + - label: "Does the DUT(server) support the Reachable attribute?" + id: BRBINFO.S.A0011 - - label: - "Does the device implement the TemperatureSetpointHoldDuration - attribute?" - id: TSTAT.S.A0024 + - label: "Does the DUT(server) support the UniqueID attribute?" + id: BRBINFO.S.A0012 - - label: - "Does the device implement the ThermostatProgrammingOperationMode - attribute?" - id: TSTAT.S.A0025 + - label: "Does the DUT(server) support the CapabilityMinima attribute?" + id: BRBINFO.S.A0013 - - label: "Does the device implement the ThermostatRunningState attribute?" - id: TSTAT.S.A0029 + # + # server / Events + # + - label: "Does the DUT(server) support the StartUp event?" + id: BRBINFO.S.E00 - - label: "Does the device implement the SetpointChangeSource attribute?" - id: TSTAT.S.A0030 + - label: "Does the DUT(server) support the ShutDown event?" + id: BRBINFO.S.E01 - - label: "Does the device implement the SetpointChangeAmount attribute?" - id: TSTAT.S.A0031 + - label: "Does the DUT(server) support the Leave event?" + id: BRBINFO.S.E02 - - label: - "Does the device implement the SetpointChangeSourceTimestamp - attribute?" - id: TSTAT.S.A0032 + - label: "Does the DUT(server) support the ReachableChanged event?" + id: BRBINFO.S.E03 - - label: "Does the device implement the OccupiedSetback attribute?" - id: TSTAT.S.A0034 + # + # client / attributes + # + - label: + "Does the DUT(client) have access privileges for the DataModelRevision + attribute implemented on server?" + id: BRBINFO.C.A0000 - - label: "Does the device implement the OccupiedSetbackMin attribute?" - id: TSTAT.S.A0035 + - label: + "Does the DUT(client) have access privileges for the VendorName + attribute implemented on server?" + id: BRBINFO.C.A0001 - - label: "Does the device implement the OccupiedSetbackMax attribute?" - id: TSTAT.S.A0036 + - label: + "Does the DUT(client) have access privileges for the VendorID + attribute implemented on server?" + id: BRBINFO.C.A0002 - - label: "Does the device implement the UnoccupiedSetback attribute?" - id: TSTAT.S.A0037 + - label: + "Does the DUT(client) have access privileges for the ProductName + attribute implemented on server?" + id: BRBINFO.C.A0003 - - label: "Does the device implement the UnoccupiedSetbackMin attribute?" - id: TSTAT.S.A0038 + - label: + "Does the DUT(client) have access privileges for the ProductID + attribute implemented on server?" + id: BRBINFO.C.A0004 - - label: "Does the device implement the UnoccupiedSetbackMax attribute?" - id: TSTAT.S.A0039 + - label: + "Does the DUT(client) have access privileges for the NodeLabel + attribute implemented on server?" + id: BRBINFO.C.A0005 - - label: "Does the device implement the EmergencyHeatDelta attribute?" - id: TSTAT.S.A003a + - label: + "Does the DUT(client) have access privileges for the Location + attribute implemented on server?" + id: BRBINFO.C.A0006 - - label: "Does the device implement the ACType attribute?" - id: TSTAT.S.A0040 + - label: + "Does the DUT(client) have access privileges for the HardwareVersion + attribute implemented on server?" + id: BRBINFO.C.A0007 - - label: "Does the device implement the ACCapacity attribute?" - id: TSTAT.S.A0041 + - label: + "Does the DUT(client) have access privileges for the + HardwareVersionString attribute implemented on server?" + id: BRBINFO.C.A0008 - - label: "Does the device implement the ACRefrigerantType attribute?" - id: TSTAT.S.A0042 + - label: + "Does the DUT(client) have access privileges for the SoftwareVersion + attribute implemented on server?" + id: BRBINFO.C.A0009 - - label: "Does the device implement the ACCompressorType attribute?" - id: TSTAT.S.A0043 + - label: + "Does the DUT(client) have access privileges for the + SoftwareVersionString attribute implemented on server?" + id: BRBINFO.C.A000a - - label: "Does the device implement the ACErrorCode attribute?" - id: TSTAT.S.A0044 + - label: + "Does the DUT(client) have access privileges for the ManufacturingDate + attribute implemented on server?" + id: BRBINFO.C.A000b - - label: "Does the device implement the ACLouverPosition attribute?" - id: TSTAT.S.A0045 + - label: + "Does the DUT(client) have access privileges for the PartNumber + attribute implemented on server?" + id: BRBINFO.C.A000c - - label: "Does the device implement the ACCoilTemperature attribute?" - id: TSTAT.S.A0046 + - label: + "Does the DUT(client) have access privileges for the ProductURL + attribute implemented on server?" + id: BRBINFO.C.A000d - - label: "Does the device implement the ACCapacityFormat attribute?" - id: TSTAT.S.A0047 + - label: + "Does the DUT(client) have access privileges for the ProductLabel + attribute implemented on server?" + id: BRBINFO.C.A000e - - label: "Is the MinSetpointDeadBand attribute writeable?" - id: TSTAT.S.M.MinSetpointDeadBandWritable + - label: + "Does the DUT(client) have access privileges for the SerialNumber + attribute implemented on server?" + id: BRBINFO.C.A000f - #Thermostat commands - - label: "Does the device implement the SetpointRaiseLower command?" - id: TSTAT.S.C00.Rsp + - label: + "Does the DUT(client) have access privileges for the + LocalConfigDisabled attribute implemented on server?" + id: BRBINFO.C.A0010 - - label: "Does the device implement the SetWeeklySchedule command?" - id: TSTAT.S.C01.Rsp + - label: + "Does the DUT(client) have access privileges for the Reachable + attribute implemented on server?" + id: BRBINFO.C.A0011 - - label: "Does the device implement the GetWeeklySchedule command?" - id: TSTAT.S.C02.Rsp + - label: + "Does the DUT(client) have access privileges for the UniqueID + attribute implemented on server?" + id: BRBINFO.C.A0012 - - label: "Does the device implement the ClearWeeklySchedule command?" - id: TSTAT.S.C03.Rsp + - label: + "Does the DUT(client) have access privileges for the CapabilityMinima + attribute implemented on server?" + id: BRBINFO.C.A0013 - - label: "Does the device implement the GetRelayStatusLog command?" - id: TSTAT.S.C04.Rsp + # + # client / Events + # + - label: "Does the DUT(Client) support the StartUp event?" + id: BRBINFO.C.E00 - #Client Commands - - label: "Does the device implement sending the SetpointRaiseLower command?" - id: TSTAT.C.C00.Tx + - label: "Does the DUT(Client) support the ShutDown event?" + id: BRBINFO.C.E01 - - label: "Does the device implement sending the GetRelayStatusLog command?" - id: TSTAT.C.C04.Tx + - label: "Does the DUT(Client) support the Leave event?" + id: BRBINFO.C.E02 - # Window covering cluster - ## WC-Features - - label: "Does the device implement the Lift feature?" - id: WNCV.S.F00 + - label: "Does the DUT(Client) support the ReachableChanged event?" + id: BRBINFO.C.E03 - - label: "Does the device implement the Position Aware Lift feature?" - id: WNCV.S.F02 + # Color Control Cluster Test Plan + - label: "Does the device implement the Color Control cluster as a server?" + id: CC.S - - label: "Does the device implement the Lift feature?" - id: WNCV.S.F01 + - label: "Does the device implement the Color Control cluster as a client?" + id: CC.C - - label: "Does the device implement the Position Aware Lift feature?" - id: WNCV.S.F04 + # + # server / attributes + # + - label: "Does the device implement the CurrentHue attribute?" + id: CC.S.A0000 - - label: "Does the device implement the Absolute positioning feature ?" - id: WNCV.S.F03 + - label: "Does the device implement the CurrentSaturation attribute?" + id: CC.S.A0001 - ## WC-Attributes - - label: "Does the device implement the 65533 ClusterRevision attribute?" - id: WNCV.S.Afffd + - label: "Does the device implement the REMAININGTime attribute?" + id: CC.S.A0002 - - label: "Does the device implement the 65532 FeatureMap attribute?" - id: WNCV.S.Afffc + - label: "Does the device implement the CurrentX attribute?" + id: CC.S.A0003 - - label: "Does the device implement the 65531 AttributeList attribute?" - id: WNCV.S.Afffb + - label: "Does the device implement the CurrentY attribute?" + id: CC.S.A0004 - - label: "Does the device implement the 65530 EventList attribute ?" - id: WNCV.S.Afffa + - label: "Does the device implement the DriftCompensation attribute?" + id: CC.S.A0005 - - label: - "Does the device implement the 65529 AcceptedCommandList attribute?" - id: WNCV.S.Afff9 + - label: "Does the device implement the CompensationText attribute?" + id: CC.S.A0006 - - label: - "Does the device implement the 65528 GeneratedCommandList attribute?" - id: WNCV.S.Afff8 + - label: "Does the device implement the ColorTemperatureMireds attribute?" + id: CC.S.A0007 - - label: "Does the device implement the (65532) FeatureMap attribute ?" - id: WNCV.C.Afffc + - label: "Does the device implement the ColorMode attribute?" + id: CC.S.A0008 - - label: "Does the device implement the Type attribute ?" - id: WNCV.C.A0000 + - label: "Does the device implement the Options attribute?" + id: CC.S.A000f - - label: "Does the device implement the EndProductType attribute ?" - id: WNCV.C.A000d + - label: "Does the device implement the NumberOfPrimaries attribute?" + id: CC.S.A0010 - - label: "Does the device implement the Mode attribute ?" - id: WNCV.C.A0017 + - label: "Does the device implement the Primary1X attribute?" + id: CC.S.A0011 - - label: "Does the device implement the ConfigStatus attribute ?" - id: WNCV.C.A0007 + - label: "Does the device implement the Primary1Y attribute?" + id: CC.S.A0012 - - label: "Does the device implement the Type attribute?" - id: WNCV.S.A0000 + - label: "Does the device implement the Primary1Intensity attribute?" + id: CC.S.A0013 - - label: "Does the device implement the ConfigStatus attribute?" - id: WNCV.S.A0007 + - label: "Does the device implement the Primary2X attribute?" + id: CC.S.A0015 - - label: "Does the device implement the EndProductType attribute?" - id: WNCV.S.A000d + - label: "Does the device implement the Primary2Y attribute?" + id: CC.S.A0016 - - label: "Does the device implement the OperationalStatus attribute?" - id: WNCV.S.A000a + - label: "Does the device implement the Primary2Intensity attribute?" + id: CC.S.A0017 - - label: - "Does the device implement the TargetPositionLiftPercent100ths - attribute?" - id: WNCV.S.A000b + - label: "Does the device implement the Primary3X attribute?" + id: CC.S.A0019 - - label: - "Does the device implement the TargetPositionTiltPercent100ths - attribute?" - id: WNCV.S.A000c + - label: "Does the device implement the Primary3Y attribute?" + id: CC.S.A001a - - label: - "Does the device implement the CurrentPositionLiftPercent100ths - attribute?" - id: WNCV.S.A000e + - label: "Does the device implement the Primary3Intensity attribute?" + id: CC.S.A001b - - label: - "Does the device implement the CurrentPositionTiltPercent100ths - attribute?" - id: WNCV.S.A000f + - label: "Does the device implement the Primary4X attribute?" + id: CC.S.A0020 - - label: - "Does the device implement the CurrentPositionLiftPercentage - attribute?" - id: WNCV.S.A0008 + - label: "Does the device implement the Primary4Y attribute?" + id: CC.S.A0021 - - label: - "Does the device implement the CurrentPositionTiltPercentage - attribute?" - id: WNCV.S.A0009 + - label: "Does the device implement the PRIMAR41Intensity attribute?" + id: CC.S.A0022 - - label: "Does the device implement the CurrentPositionLift attribute?" - id: WNCV.S.A0003 + - label: "Does the device implement the Primary5X attribute?" + id: CC.S.A0024 - - label: "Does the device implement the CurrentPositionTilt attribute?" - id: WNCV.S.A0004 + - label: "Does the device implement the Primary5Y attribute?" + id: CC.S.A0025 - - label: "Does the device implement the NumberOfActuationsLift attribute?" - id: WNCV.S.A0005 + - label: "Does the device implement the Primary5Intensity attribute?" + id: CC.S.A0026 - - label: "Does the device implement the NumberOfActuationsTilt attribute?" - id: WNCV.S.A0006 + - label: "Does the device implement the Primary6X attribute?" + id: CC.S.A0028 - - label: "Does the device implement the PhysicalClosedLimitLift attribute?" - id: WNCV.S.A0001 + - label: "Does the device implement the Primary6Y attribute?" + id: CC.S.A0029 - - label: "Does the device implement the PhysicalClosedLimitTilt attribute?" - id: WNCV.S.A0002 + - label: "Does the device implement the Primary6Intensity attribute?" + id: CC.S.A002a - - label: "Does the device implement the InstalledOpenLimitLift attribute?" - id: WNCV.S.A0010 + - label: "Does the device implement the WhitePointX attribute?" + id: CC.S.A0030 - - label: "Does the device implement the InstalledOpenLimitTilt attribute?" - id: WNCV.S.A0012 + - label: "Does the device implement the WhitePointY attribute?" + id: CC.S.A0031 - - label: "Does the device implement the InstalledClosedLimitLift attribute?" - id: WNCV.S.A0011 + - label: "Does the device implement the ColorPointRX attribute?" + id: CC.S.A0032 - - label: "Does the device implement the InstalledClosedLimitTilt attribute?" - id: WNCV.S.A0013 + - label: "Does the device implement the ColorPointRY attribute?" + id: CC.S.A0033 - - label: "Does the device implement the Mode attribute ?" - id: WNCV.S.A0017 + - label: "Does the device implement the ColorPointRIntensity attribute?" + id: CC.S.A0034 - - label: "Does the device implement the SafetyStatus attribute?" - id: WNCV.S.A001a + - label: "Does the device implement the ColorPointGX attribute?" + id: CC.S.A0036 - ## WC-Commands received - - label: - "Does the device implement receiving the GoToLiftPercentage command?" - id: WNCV.S.C05.Rsp + - label: "Does the device implement the ColorPointGY attribute?" + id: CC.S.A0037 - - label: - "Does the device implement receiving the GoToTiltPercentage command?" - id: WNCV.S.C08.Rsp + - label: "Does the device implement the ColorPointGIntensity attribute?" + id: CC.S.A0038 - - label: "Does the device implement receiving the DownOrClose command ?" - id: WNCV.S.C01.Rsp + - label: "Does the device implement the ColorPointBX attribute?" + id: CC.S.A003a - - label: "Does the device implement receiving the UpOrOpen command ?" - id: WNCV.S.C00.Rsp + - label: "Does the device implement the ColorPointBY attribute?" + id: CC.S.A003b - - label: "Does the device implement receiving the StopMotion command ?" - id: WNCV.S.C02.Rsp + - label: "Does the device implement the ColorPointBIntensity attribute?" + id: CC.S.A003c - - label: "Does the device implement sending the StopMotion command ?" - id: WNCV.C.C02.Tx + - label: "Does the device implement the EnhancedCurrentHue attribute?" + id: CC.S.A4000 - - label: "Does the device implement sending the UpOrOpen command ?" - id: WNCV.C.C00.Tx + - label: "Does the device implement the EnhancedColorMode attribute?" + id: CC.S.A4001 - - label: "Does the device implement sending the DownOrClose command ?" - id: WNCV.C.C01.Tx + - label: "Does the device implement the ColorLoopActive attribute?" + id: CC.S.A4002 - - label: - "Does the device implement sending the GoToLiftPercentage command ?" - id: WNCV.C.C05.Tx + - label: "Does the device implement the ColorLoopDirection attribute?" + id: CC.S.A4003 + + - label: "Does the device implement the ColorLoopTime attribute?" + id: CC.S.A4004 - label: - "Does the device implement sending the GoToTiltPercentage command ?" - id: WNCV.C.C08.Tx + "Does the device implement the ColorLoopStartEnhancedHue attribute?" + id: CC.S.A4005 - ## WC-Other features - - label: "Does the device support reversal of lift movement?" - id: WNCV.S.M.Reversal + - label: + "Does the device implement the ColorLoopStoredEnhancedHue attribute?" + id: CC.S.A4006 - - label: "Does the device support a calibration mode?" - id: WNCV.S.M.Calibration + - label: "Does the device implement the ColorCapabilities attribute?" + id: CC.S.A400a - - label: "Does the device support a maintenance mode?" - id: WNCV.S.M.Maintenance + - label: + "Does the device implement the ColorTempPhysicalMinMireds attribute?" + id: CC.S.A400b - # On/Off Cluster - - label: "Does the device implement the OnOff attribute?" - id: OO.S.A0000 + - label: + "Does the device implement the ColorTempPhysicalMaxMireds attribute?" + id: CC.S.A400c - - label: "Does the device implement the GlobalSceneControl attribute?" - id: OO.S.A4000 + - label: + "Does the device implement the CoupleColorTempToLevelMinMireds + attribute?" + id: CC.S.A400d - - label: "Does the device implement the OnTime attribute?" - id: OO.S.A4001 + - label: + "Does the device implement the StartUpColorTemperatureMireds + attribute?" + id: CC.S.A4010 - - label: "Does the device implement the OffWaitTime attribute?" - id: OO.S.A4002 + # + # server / commandsReceived + # + - label: "Does the device implement receiving the MoveToHue command?" + id: CC.S.C00.Rsp - - label: "Does the device implement the StartUpOnOff attribute?" - id: OO.S.A4003 + - label: "Does the device implement receiving the MoveHue command?" + id: CC.S.C01.Rsp - - label: "Does the device implement receiving the Off command?" - id: OO.S.C00.Rsp + - label: "Does the device implement receiving the StepHue command?" + id: CC.S.C02.Rsp - - label: "Does the device implement receiving the On command?" - id: OO.S.C01.Rsp + - label: "Does the device implement receiving the MoveToSaturation command?" + id: CC.S.C03.Rsp - - label: "Does the device implement receiving the Toggle command?" - id: OO.S.C02.Rsp + - label: "Does the device implement receiving the MoveSaturation command?" + id: CC.S.C04.Rsp - - label: "Does the device implement receiving the OffWithEffect command?" - id: OO.S.C40.Rsp + - label: "Does the device implement receiving the StepSaturation command?" + id: CC.S.C05.Rsp - label: - "Does the device implement receiving the OnWithRecallGlobalScene + "Does the device implement receiving the MoveToHueAndSaturation command?" - id: OO.S.C41.Rsp + id: CC.S.C06.Rsp - - label: "Does the device implement receiving the OnWithTimedOff command?" - id: OO.S.C42.Rsp + - label: "Does the device implement receiving the MoveToColor command?" + id: CC.S.C07.Rsp + + - label: "Does the device implement receiving the MoveColor command?" + id: CC.S.C08.Rsp + + - label: "Does the device implement receiving the StepColor command?" + id: CC.S.C09.Rsp - label: - "Can the OnOff attribute changed by physical control at the device?" - id: OO.M.ManuallyControlled + "Does the device implement receiving the MoveToColorTemperature + command?" + id: CC.S.C0a.Rsp - - label: "Does the device implement sending the Off command?" - id: OO.C.C00.Tx + - label: + "Does the device implement receiving the EnhancedMoveToHue command?" + id: CC.S.C40.Rsp - - label: "Does the device implement sending the On command?" - id: OO.C.C01.Tx + - label: "Does the device implement receiving the EnhancedMoveHue command?" + id: CC.S.C41.Rsp - - label: "Does the device implement sending the Toggle command?" - id: OO.C.C02.Tx + - label: "Does the device implement receiving the EnhancedStepHue command?" + id: CC.S.C42.Rsp - - label: "Does the device implement sending the OffWithEffect command?" - id: OO.C.C40.Tx + - label: + "Does the device implement receiving the + EnhancedMoveToHueAndSaturation command?" + id: CC.S.C43.Rsp + + - label: "Does the device implement receiving the ColorLoopSet command?" + id: CC.S.C44.Rsp + + - label: "Does the device implement receiving the StopMoveStep command?" + id: CC.S.C47.Rsp - label: - "Does the device implement sending the OnWithRecallGlobalScene - command?" - id: OO.C.C41.Tx + "Does the device implement receiving the MoveColorTemperature command?" + id: CC.S.C4b.Rsp - - label: "Does the device implement sending the OnWithTimedOff command?" - id: OO.C.C42.Tx + - label: + "Does the device implement receiving the StepColorTemperature command?" + id: CC.S.C4c.Rsp - #Features - - label: "Level Control for Lighting" - id: OO.S.F00 + # + # server / features + # + - label: "Does the DUT(server) support the Hue/Saturation feature?" + id: CC.S.F00 + + - label: "Does the DUT(server) support the Enhanced Hue feature?" + id: CC.S.F01 + + - label: "Does the DUT(server) support the Color Loop feature?" + id: CC.S.F02 - - label: "Does Dnssd advertisment broadcast Vendor ID" - id: VENDOR_SUBTYPE + - label: "Does the DUT(server) support the Color XY feature?" + id: CC.S.F03 - - label: "Does Dnssd advertisment broadcast Device Type ID" - id: DEVTYPE_SUBTYPE + - label: "Does the DUT(server) support the Color Temperature feature?" + id: CC.S.F04 + # + # client / attributes + # - label: - "The optional key CRI indicates the MRP_RETRY_INTERVAL_IDLE of the - Node" - id: CRI_COMM_DISCOVERY_KEY + "Does the DUT(client) have access privileges for the CurrentHue + attribute implemented on server?" + id: CC.C.A0000 - label: - "The optional key CRA indicates the MRP_RETRY_INTERVAL_ACTIVE of the - Node" - id: CRA_COMM_DISCOVERY_KEY + "Does the DUT(client) have access privileges for the CurrentSaturation + attribute implemented on server?" + id: CC.C.A0001 - label: - "The optional key VP, if present, MAY provide Vendor ID and Product ID - information of the device" - id: VP_KEY + "Does the DUT(client) have access privileges for the RemainingTime + attribute implemented on server?" + id: CC.C.A0002 - label: - "The optional key DT MAY provide the publisher’s primary device type." - id: DT_KEY + "Does the DUT(client) have access privileges for the CurrentX + attribute implemented on server?" + id: CC.C.A0003 - - label: "The optional key DN MAY provide a device advertisement name." - id: DN_KEY + - label: + "Does the DUT(client) have access privileges for the CurrentY + attribute implemented on server?" + id: CC.C.A0004 - - label: "The optional key RI MAY provide a Rotating Device Identifier." - id: RI_KEY + - label: + "Does the DUT(client) have access privileges for the DriftCompensation + attribute implemented on server?" + id: CC.C.A0005 - - label: "The optional key PH MAY provide a pairing hint." - id: PH_KEY + - label: + "Does the DUT(client) have access privileges for the CompensationText + attribute implemented on server?" + id: CC.C.A0006 - label: - "The optional key PI MAY provide additional information for pairing." - id: PI_KEY + "Does the DUT(client) have access privileges for the + ColorTemperatureMireds attribute implemented on server?" + id: CC.C.A0007 - #Prompt - - label: "Prompts user for input. Unable to run in CI" - id: PICS_USER_PROMPT + - label: + "Does the DUT(client) have access privileges for the ColorMode + attribute implemented on server?" + id: CC.C.A0008 - - label: "Skip sample app" - id: PICS_SKIP_SAMPLE_APP + - label: + "Does the DUT(client) have access privileges for the Options attribute + implemented on server?" + id: CC.C.A000f - - label: "Run steps in SDK and CI only" - id: PICS_SDK_CI_ONLY + - label: + "Does the DUT(client) have access privileges for the NumberOfPrimaries + attribute implemented on server?" + id: CC.C.A0010 - - label: "Level Control for Lighting" - id: OO_LT + - label: + "Does the DUT(client) have access privileges for the Primary1X + attribute implemented on server?" + id: CC.C.A0011 - #Flow measurement - label: - "Can the MeasuredValue attribute changed by physical control at the - device?" - id: MANUAL_FLOW_CHANGE + "Does the DUT(client) have access privileges for the Primary1Y + attribute implemented on server?" + id: CC.C.A0012 - #Pressure Measurement - - label: "Does the device implement the MeasuredValue attribute?" - id: PRS.S.A0000 + - label: + "Does the DUT(client) have access privileges for the Primary1Intensity + attribute implemented on server?" + id: CC.C.A0013 - - label: "Does the device implement the MinMeasuredValue attribute?" - id: PRS.S.A0001 + - label: + "Does the DUT(client) have access privileges for the Primary2X + attribute implemented on server?" + id: CC.C.A0015 - - label: "Does the device implement the MaxMeasuredValue attribute?" - id: PRS.S.A0002 + - label: + "Does the DUT(client) have access privileges for the Primary2Y + attribute implemented on server?" + id: CC.C.A0016 - - label: "Does the device implement the Tolerance attribute?" - id: PRS.S.A0003 + - label: + "Does the DUT(client) have access privileges for the Primary2Intensity + attribute implemented on server?" + id: CC.C.A0017 - - label: "Does the device implement the ScaledValue attribute?" - id: PRS.S.A0010 + - label: + "Does the DUT(client) have access privileges for the Primary3X + attribute implemented on server?" + id: CC.C.A0019 - - label: "Does the device implement the MinScaledValue attribute?" - id: PRS.S.A0011 + - label: + "Does the DUT(client) have access privileges for the Primary3Y + attribute implemented on server?" + id: CC.C.A001a - - label: "Does the device implement the MaxScaledValue attribute?" - id: PRS.S.A0012 + - label: + "Does the DUT(client) have access privileges for the Primary3Intensity + attribute implemented on server?" + id: CC.C.A001b - - label: "Does the device implement the ScaledTolerance attribute?" - id: PRS.S.A0013 + - label: + "Does the DUT(client) have access privileges for the Primary4X + attribute implemented on server?" + id: CC.C.A0020 - - label: "Does the device implement the Scale attribute?" - id: PRS.S.A0014 + - label: + "Does the DUT(client) have access privileges for the Primary4Y + attribute implemented on server?" + id: CC.C.A0021 - - label: "Does the device support extended range and resolution?" - id: PRS.S.F00 + - label: + "Does the DUT(client) have access privileges for the Primary4Intensity + attribute implemented on server?" + id: CC.C.A0022 - label: - "Can the MeasuredValue attribute changed by physical control at the - device?" - id: PRS.M.PressureChange + "Does the DUT(client) have access privileges for the Primary5X + attribute implemented on server?" + id: CC.C.A0024 - # Occupency sensing cluster - - label: "Does the device implement the Occupancy attribute?" - id: OCC.S.A0000 + - label: + "Does the DUT(client) have access privileges for the Primary5Y + attribute implemented on server?" + id: CC.C.A0025 - - label: "Does the device implement the OccupancySensorType attribute?" - id: OCC.S.A0001 + - label: + "Does the DUT(client) have access privileges for the Primary5Intensity + attribute implemented on server?" + id: CC.C.A0026 - label: - "Does the device implement the OccupancySensorTypeBitmap attribute?" - id: OCC.S.A0002 + "Does the DUT(client) have access privileges for the Primary6X + attribute implemented on server?" + id: CC.C.A0028 - label: - "Does the device implement the PIROccupiedToUnoccupiedDelay attribute?" - id: OCC.S.A0010 + "Does the DUT(client) have access privileges for the Primary6Y + attribute implemented on server?" + id: CC.C.A0029 - label: - "Does the device implement the PIRUnoccupiedToOccupiedDelay attribute?" - id: OCC.S.A0011 + "Does the DUT(client) have access privileges for the Primary6Intensity + attribute implemented on server?" + id: CC.C.A002a - label: - "Does the device implement the PIRUnoccupiedToOccupiedThreshold - attribute?" - id: OCC.S.A0012 + "Does the DUT(client) have access privileges for the WhitePointX + attribute implemented on server?" + id: CC.C.A0030 - label: - "Does the device implement the UltrasonicOccupiedToUnoccupiedDelay - attribute?" - id: OCC.S.A0020 + "Does the DUT(client) have access privileges for the WhitePointY + attribute implemented on server?" + id: CC.C.A0031 - label: - "Does the device implement the UltrasonicUnoccupiedToOccupiedDelay - attribute?" - id: OCC.S.A0021 + "Does the DUT(client) have access privileges for the ColorPointRX + attribute implemented on server?" + id: CC.C.A0032 - label: - "Does the device implement the UltrasonicUnoccupiedToOccupiedThreshold - attribute?" - id: OCC.S.A0022 + "Does the DUT(client) have access privileges for the ColorPointRY + attribute implemented on server?" + id: CC.C.A0033 - label: - "Does the device implement the - PhysicalContactOccupiedToUnoccupiedDelay attribute?" - id: OCC.S.A0030 + "Does the DUT(client) have access privileges for the + ColorPointRIntensity attribute implemented on server?" + id: CC.C.A0034 - label: - "Does the device implement the - PhysicalContactUnoccupiedToOccupiedDelay attribute?" - id: OCC.S.A0031 + "Does the DUT(client) have access privileges for the ColorPointGX + attribute implemented on server?" + id: CC.C.A0036 - label: - "Does the device implement the - PhysicalContactUnoccupiedToOccupiedThreshold attribute?" - id: OCC.S.A0032 + "Does the DUT(client) have access privileges for the ColorPointGY + attribute implemented on server?" + id: CC.C.A0037 - label: - "Can the Occupancy attribute changed by physical control at the - device?" - id: OCC.M.OccupancyChange + "Does the DUT(client) have access privileges for the + ColorPointGIntensity attribute implemented on server?" + id: CC.C.A0038 - - label: "Does the device implement the Occupancy attribute?" - id: OCC.C.A0000 + - label: + "Does the DUT(client) have access privileges for the ColorPointBX + attribute implemented on server?" + id: CC.C.A003a - - label: "Does the device implement the OccupancySensorType attribute?" - id: OCC.C.A0001 + - label: + "Does the DUT(client) have access privileges for the ColorPointBY + attribute implemented on server?" + id: CC.C.A003b - label: - "Does the device implement the OccupancySensorTypeBitmap attribute?" - id: OCC.C.A0002 + "Does the DUT(client) have access privileges for the + ColorPointBIntensity attribute implemented on server?" + id: CC.C.A003c - label: - "Does the device implement the PIROccupiedToUnoccupiedDelay attribute?" - id: OCC.C.A0010 + "Does the DUT(client) have access privileges for the + EnhancedCurrentHue attribute implemented on server?" + id: CC.C.A4000 - label: - "Does the device implement the PIRUnoccupiedToOccupiedDelay attribute?" - id: OCC.C.A0011 + "Does the DUT(client) have access privileges for the EnhancedColorMode + attribute implemented on server?" + id: CC.C.A4001 - label: - "Does the device implement the PIRUnoccupiedToOccupiedThreshold - attribute?" - id: OCC.C.A0012 + "Does the DUT(client) have access privileges for the ColorLoopActive + attribute implemented on server?" + id: CC.C.A4002 - label: - "Does the device implement the UltrasonicOccupiedToUnoccupiedDelay - attribute?" - id: OCC.C.A0020 + "Does the DUT(client) have access privileges for the + ColorLoopDirection attribute implemented on server?" + id: CC.C.A4003 - label: - "Does the device implement the UltrasonicUnoccupiedToOccupiedDelay - attribute?" - id: OCC.C.A0021 + "Does the DUT(client) have access privileges for the ColorLoopTime + attribute implemented on server?" + id: CC.C.A4004 - label: - "Does the device implement the UltrasonicUnoccupiedToOccupiedThreshold - attribute?" - id: OCC.C.A0022 + "Does the DUT(client) have access privileges for the + ColorLoopStartEnhancedHue attribute implemented on server?" + id: CC.C.A4005 - label: - "Does the device implement the - PhysicalContactOccupiedToUnoccupiedDelay attribute?" - id: OCC.C.A0030 + "Does the DUT(client) have access privileges for the + ColorLoopStoredEnhancedHue attribute implemented on server?" + id: CC.C.A4006 - label: - "Does the device implement the - PhysicalContactUnoccupiedToOccupiedDelay attribute?" - id: OCC.C.A0031 + "Does the DUT(client) have access privileges for the ColorCapabilities + attribute implemented on server?" + id: CC.C.A400a - label: - "Does the device implement the - PhysicalContactUnoccupiedToOccupiedThreshold attribute?" - id: OCC.C.A0032 + "Does the DUT(client) have access privileges for the + ColorTempPhysicalMinMireds attribute implemented on server?" + id: CC.C.A400b - #Level Control Cluster - label: - "Does the DUT(server) support the Behavior that supports lighting - applications feature?" - id: LVL.S.F01 + "Does the DUT(client) have access privileges for the + ColorTempPhysicalMaxMireds attribute implemented on server?" + id: CC.C.A400c - label: - "Does the DUT(server) support the Frequency attributes and behavior - feature?" - id: LVL.S.F02 + "Does the DUT(client) have access privileges for the + CoupleColorTempToLevelMinMireds attribute implemented on server?" + id: CC.C.A400d - label: - "Does the DUT(server) support the Dependency with the On/Off cluster - feature?" - id: LVL.S.F00 + "Does the DUT(client) have access privileges for the + StartUpColorTemperatureMireds attribute implemented on server?" + id: CC.C.A4010 - - label: "Does the DUT(server) support the CurrentLevel attribute?" - id: LVL.S.A0000 - - - label: "Does the DUT(server) support the RemainingTime attribute?" - id: LVL.S.A0001 - - - label: "Does the DUT(server) support the MinLevel attribute?" - id: LVL.S.A0002 + # + # client / commandsGenerated + # + - label: "Does the device implement sending the MoveToHue command?" + id: CC.C.C00.Tx - - label: "Does the DUT(server) support the MaxLevel attribute?" - id: LVL.S.A0003 + - label: "Does the device implement sending the MoveHue command?" + id: CC.C.C01.Tx - - label: "Does the DUT(server) support the CurrentFrequency attribute?" - id: LVL.S.A0004 + - label: "Does the device implement sending the StepHue command?" + id: CC.C.C02.Tx - - label: "Does the DUT(server) support the MinFrequency attribute?" - id: LVL.S.A0005 + - label: "Does the device implement sending the MoveToSaturation command?" + id: CC.C.C03.Tx - - label: "Does the DUT(server) support the MaxFrequency attribute?" - id: LVL.S.A0006 + - label: "Does the device implement sending the MoveSaturation command?" + id: CC.C.C04.Tx - - label: "Does the DUT(server) support the Options attribute?" - id: LVL.S.A000f + - label: "Does the device implement sending the StepSaturation command?" + id: CC.C.C05.Tx - - label: "Does the DUT(server) support the OnOffTransitionTime attribute?" - id: LVL.S.A0010 + - label: + "Does the device implement sending the MoveToHueAndSaturation command?" + id: CC.C.C06.Tx - - label: "Does the DUT(server) support the OnLevel attribute?" - id: LVL.S.A0011 + - label: "Does the device implement sending the MoveToColor command?" + id: CC.C.C07.Tx - - label: "Does the DUT(server) support the OnTransitionTime attribute?" - id: LVL.S.A0012 + - label: "Does the device implement sending the MoveColor command?" + id: CC.C.C08.Tx - - label: "Does the DUT(server) support the OffTransitionTime attribute?" - id: LVL.S.A0013 + - label: "Does the device implement sending the StepColor command?" + id: CC.C.C09.Tx - - label: "Does the DUT(server) support the DefaultMoveRate attribute?" - id: LVL.S.A0014 + - label: + "Does the device implement sending the MoveToColorTemperature command?" + id: CC.C.C0a.Tx - - label: "Does the DUT(server) support the StartUpCurrentLevel attribute?" - id: LVL.S.A4000 + - label: "Does the device implement sending the EnhancedMoveToHue command?" + id: CC.C.C40.Tx - - label: "Does the DUT(server) support the MoveToLevel command?" - id: LVL.S.C00.Rsp + - label: "Does the device implement sending the EnhancedMoveHue command?" + id: CC.C.C41.Tx - - label: "Does the DUT(server) support the Move command?" - id: LVL.S.C01.Rsp + - label: "Does the device implement sending the EnhancedStepHue command?" + id: CC.C.C42.Tx - - label: "Does the DUT(server) support the Step command?" - id: LVL.S.C02.Rsp + - label: + "Does the device implement sending the EnhancedMoveToHueAndSaturation + command?" + id: CC.C.C43.Tx - - label: "Does the DUT(server) support the Stop command?" - id: LVL.S.C03.Rsp + - label: "Does the device implement sending the ColorLoopSet command?" + id: CC.C.C44.Tx - - label: "Does the DUT(server) support the MoveToLevel with On/Off command?" - id: LVL.S.C04.Rsp + - label: "Does the device implement sending the StopMoveStep command?" + id: CC.C.C47.Tx - - label: "Does the DUT(server) support the Move with On/Off command?" - id: LVL.S.C05.Rsp + - label: + "Does the device implement sending the MoveColorTemperature command?" + id: CC.C.C4b.Tx - - label: "Does the DUT(server) support the Step with On/Off command?" - id: LVL.S.C06.Rsp + - label: + "Does the device implement sending the StepColorTemperature command?" + id: CC.C.C4c.Tx - - label: "Does the DUT(server) support the Stop with On/Off command?" - id: LVL.S.C07.Rsp + # + # client / features + # + - label: "Does the DUT(client) support the Hue/Saturation feature?" + id: CC.C.F00 - - label: "Does the DUT(server) support the MoveToClosestFrequency command?" - id: LVL.S.C08.Rsp + - label: "Does the DUT(client) support the Enhanced Hue feature?" + id: CC.C.F01 - - label: "Is the DUT(server) able to move at a variable rate feature?" - id: LVL.S.M.VarRate + - label: "Does the DUT(client) support the Color Loop feature?" + id: CC.C.F02 - #Groups Cluster - - label: "Does the DUT(Server) support Group Names feature?" - id: G.S.F00 + - label: "Does the DUT(client) support the Color XY feature?" + id: CC.C.F03 - - label: "Does the DUT(Server) support NameSupport attribute?" - id: G.S.A0000 + - label: "Does the DUT(client) support the Color Temperature feature?" + id: CC.C.F04 - - label: "Does the DUT(Server) support GroupTable attribute?" - id: GRPKEY.S.A0001 + # Descriptor Cluster TestPlan + - label: "Does the device implement the Descriptor cluster as a server?" + id: DESC.S - - label: "Does the DUT(server) implement receiving AddGroup Command?" - id: G.S.C00.Rsp + - label: "Does the device implement the Descriptor cluster as a client?" + id: DESC.C - - label: "Does the DUT(server) implement receiving ViewGroup Command?" - id: G.S.C01.Rsp + # + # server / attributes + # + - label: "Does the DUT(server) support the DEVICETYPELIST attribute?" + id: DESC.S.A0000 - - label: - "Does the DUT(server) implement receiving GetGroupMembership Command?" - id: G.S.C02.Rsp + - label: "Does the DUT(server) support the SERVERLIST attribute?" + id: DESC.S.A0001 - - label: "Does the DUT(server) implement receiving RemoveGroup Command?" - id: G.S.C03.Rsp + - label: "Does the DUT(server) support the CLIENTLIST attribute?" + id: DESC.S.A0002 - - label: "Does the DUT(server) implement receiving RemoveAllGroups Command?" - id: G.S.C04.Rsp + - label: "Does the DUT(server) support the PARTSLIST attribute?" + id: DESC.S.A0003 + # + # client / attributes + # - label: - "Does the DUT(server) implement receiving AddGroupIfIdentifying - Command?" - id: G.S.C05.Rsp + "Does the DUT(client) have access privileges for the DEVICETYPELIST + attribute implemented on server?" + id: DESC.C.A0000 - label: - "Does the DUT(server) invoking/generating AddGroupResponse Command?" - id: G.S.C00.Tx + "Does the DUT(client) have access privileges for the SERVERLIST + attribute implemented on server?" + id: DESC.C.A0001 - label: - "Does the DUT(server) invoking/generating ViewGroupResponse Command?" - id: G.S.C01.Tx + "Does the DUT(client) have access privileges for the CLIENTLIST + attribute implemented on server?" + id: DESC.C.A0002 - label: - "Does the DUT(server) invoking/generating GetGroupMembershipResponse - Command?" - id: G.S.C02.Tx + "Does the DUT(client) have access privileges for the PARTSLIST + attribute implemented on server?" + id: DESC.C.A0003 + # Device Management Test Plan - label: - "Does the DUT(server) invoking/generating RemoveGroupResponse Command?" - id: G.S.C03.Tx - - - label: "Does the DUT(client) support NameSupport attribute?" - id: G.C.A0000 - - - label: "Does the DUT(client) implement receiving AddGroup Command?" - id: G.C.C00.Tx - - - label: "Does the DUT(client) implement receiving ViewGroup Command?" - id: G.C.C01.Tx + "Does the device implement the Basic Information Cluster as a server?" + id: BINFO.S - label: - "Does the DUT(client) implement receiving GetGroupMembership Command?" - id: G.C.C02.Tx + "Does the device implement the Basic Information Cluster as a client?" + id: BINFO.C - - label: "Does the DUT(client) implement receiving RemoveGroup Command?" - id: G.C.C03.Tx + - label: + "Does the device implement the Node Operational Credentials Cluster as + a server?" + id: OPCREDS.S - - label: "Does the DUT(client) implement receiving RemoveAllGroups Command?" - id: G.C.C04.Tx + - label: + "Does the device implement the Node Operational Credentials Cluster as + a client?" + id: OPCREDS.C - label: - "Does the DUT(client) implement receiving AddGroupIfIdentifying - Command?" - id: G.C.C05.Tx + "Does the device implement the NetworkCommissioning Cluster cluster as + a server?" + id: CNET.S - #Identify Cluster - - label: "Does the device implement the IdentifyTime attribute?" - id: I.S.A0000 + - label: + "Does the device implement the NetworkCommissioning Cluster cluster as + a client?" + id: CNET.C - - label: "Does the device implement the IdentifyType attribute?" - id: I.S.A0001 + # + # server / attributes + # + - label: "Does the DUT(server) support the DataModelRevision attribute?" + id: BINFO.S.A0000 - - label: "Does the device implement receiving the Identify command?" - id: I.S.C00.Rsp + - label: "Does the DUT(server) support the VendorName attribute?" + id: BINFO.S.A0001 - - label: "Does the device implement receiving the IdentifyQuery command?" - id: I.S.C01.Rsp + - label: "Does the DUT(server) support the VendorID attribute?" + id: BINFO.S.A0002 - - label: "Does the device implement receiving the TriggerEffect command?" - id: I.S.C40.Rsp + - label: "Does the DUT(server) support the ProductName attribute?" + id: BINFO.S.A0003 - - label: - "Does the device implement sending the IdentifyQueryResponse command?" - id: I.S.C00.Tx + - label: "Does the DUT(server) support the ProductID attribute?" + id: BINFO.S.A0004 - - label: "Does the device implement sending the Identify command?" - id: I.C.C00.Tx + - label: "Does the DUT(server) support the NodeLabel attribute?" + id: BINFO.S.A0005 - - label: "Does the device implement sending the IdentifyQuery command?" - id: I.C.C01.Tx + - label: "Does the DUT(server) support the Location attribute?" + id: BINFO.S.A0006 - - label: "Does the device implement sending the TriggerEffect command?" - id: I.C.C40.Tx + - label: "Does the DUT(server) support the HardwareVersion attribute?" + id: BINFO.S.A0007 - - label: - "Does the device implement receiving the IdentifyQueryResponse - command?" - id: I.C.C00.Rsp + - label: "Does the DUT(server) support the HardwareVersionString attribute?" + id: BINFO.S.A0008 - - label: "Supports multicast query for identification state" - id: I.S.F00 + - label: "Does the DUT(server) support the SoftwareVersion attribute?" + id: BINFO.S.A0009 - #Scenes Cluster - - label: "Does the device implement the SceneCount attribute?" - id: S.S.A0000 + - label: "Does the DUT(server) support the SoftwareVersionString attribute?" + id: BINFO.S.A000a - - label: "Does the device implement the CurrentScene attribute?" - id: S.S.A0001 + - label: "Does the DUT(server) support the ManufacturingDate attribute?" + id: BINFO.S.A000b - - label: "Does the device implement the CurrentGroup attribute?" - id: S.S.A0002 + - label: "Does the DUT(server) support the PartNumber attribute?" + id: BINFO.S.A000c - - label: "Does the device implement the SceneValid attribute?" - id: S.S.A0003 + - label: "Does the DUT(server) support the ProductURL attribute?" + id: BINFO.S.A000d - - label: "Does the device implement the NameSupport attribute?" - id: S.S.A0004 + - label: "Does the DUT(server) support the ProductLabel attribute?" + id: BINFO.S.A000e - - label: "Does the device implement the LastConfiguredBy attribute?" - id: S.S.A0005 + - label: "Does the DUT(server) support the SerialNumber attribute?" + id: BINFO.S.A000f - - label: "Does the device implement receiving the AddScene command?" - id: S.S.C00.Rsp + - label: "Does the DUT(server) support the LocalConfigDisabled attribute?" + id: BINFO.S.A0010 - - label: "Does the device implement receiving the ViewScene command?" - id: S.S.C01.Rsp + - label: "Does the DUT(server) support the Reachable attribute?" + id: BINFO.S.A0011 - - label: "Does the device implement receiving the RemoveScene command?" - id: S.S.C02.Rsp + - label: "Does the DUT(server) support the UniqueID attribute?" + id: BINFO.S.A0012 - - label: "Does the device implement receiving the RemoveAllScenes command?" - id: S.S.C03.Rsp + - label: "Does the DUT(server) support the CapabilityMinima attribute?" + id: BINFO.S.A0013 - - label: "Does the device implement receiving the StoreScene command?" - id: S.S.C04.Rsp + - label: "Does the DUT(server) support the NOC list attribute?" + id: OPCREDS.S.A0000 - - label: "Does the device implement receiving the RecallScene command?" - id: S.S.C05.Rsp + - label: "Does the DUT(server) support the Fabrics list attribute?" + id: OPCREDS.S.A0001 - - label: - "Does the device implement receiving the GetSceneMembership command?" - id: S.S.C06.Rsp + - label: "Does the DUT(server) support the SupportedFabrics attribute?" + id: OPCREDS.S.A0002 - - label: "Does the device implement receiving the EnhancedAddScene command?" - id: S.S.C40.Rsp + - label: "Does the DUT(server) support the CommissionedFabrics attribute?" + id: OPCREDS.S.A0003 - label: - "Does the device implement receiving the EnhancedViewScene command?" - id: S.S.C41.Rsp - - - label: "Does the device implement receiving the CopyScene command?" - id: S.S.C42.Rsp + "Does the DUT(server) support the TrustedRootCertificates attribute?" + id: OPCREDS.S.A0004 - - label: - "Does the device process the TransitionTime parameter of the - RecallScene command?" - id: S.S.C05.Rsp + - label: "Does the DUT(server) support the CurrentFabricIndex attribute?" + id: OPCREDS.S.A0005 - - label: "Does the device receive the AddGroup Command?" - id: G.S.C00.Rsp + - label: "Does the DUT(Server) support MaxNetworks attribute?" + id: CNET.S.A0000 - - label: "Does the device receive the RemoveAllGroups Command?" - id: G.S.C04.Rsp + - label: "Does the DUT(Server) support Networks attribute?" + id: CNET.S.A0001 - - label: "Does the device implement sending the AddScene command?" - id: S.C.C00.Tx + - label: "Does the DUT(Server) support ScanMaxTimeSeconds attribute?" + id: CNET.S.A0002 - - label: "Does the device implement sending the ViewScene command?" - id: S.C.C01.Tx + - label: "Does the DUT(Server) support ConnectMaxTimeSeconds attribute?" + id: CNET.S.A0003 - - label: "Does the device implement sending the RemoveScene command?" - id: S.C.C02.Tx - - - label: "Does the device implement sending the RemoveAllScenes command?" - id: S.C.C03.Tx - - - label: "Does the device implement sending the StoreScene command?" - id: S.C.C04.Tx - - - label: "Does the device implement sending the RecallScene command?" - id: S.C.C05.Tx - - - label: "Does the device implement sending the GetSceneMembership command?" - id: S.C.C06.Tx + - label: "Does the DUT(Server) support InterfaceEnabled attribute?" + id: CNET.S.A0004 - - label: "Does the device implement sending the EnhancedAddScene command?" - id: S.C.C40.Tx + - label: "Does the DUT(Server) support LastNetworkingStatus attribute?" + id: CNET.S.A0005 - - label: "Does the device implement sending the EnhancedViewScene command?" - id: S.C.C41.Tx + - label: "Does the DUT(Server) support LastNetworkID attribute?" + id: CNET.S.A0006 - - label: "Does the device implement sending the CopyScene command?" - id: S.C.C42.Tx + - label: "Does the DUT(Server) support LastConnectErrorValue attribute?" + id: CNET.S.A0007 - #Switch Cluster - - label: "Does the device represent a Latching Switch?" - id: SWTCH.S.F00 + # + # server / commandsReceived + # + - label: + "Does the Device(Server) implement receiving the AttestationRequest + command?" + id: OPCREDS.S.C00.Rsp - - label: "Does the device represent a Latching Switch?" - id: SWTCH.C.F00 + - label: + "Does the Device(Server) implement receiving the + CertificateChainRequest command?" + id: OPCREDS.S.C02.Rsp - - label: "Does the device implement the CurrentScene attribute?" - id: SWTCH.S.F01 + - label: + "Does the Device(Server) implement receiving the CSRRequest command?" + id: OPCREDS.S.C04.Rsp - - label: "Does the MS device support Momentary Switch Release?" - id: SWTCH.S.F02 + - label: "Does the Device(Server) implement receiving the AddNOC command?" + id: OPCREDS.S.C06.Rsp - - label: "Does the MS device support Momentary Switch LongPress?" - id: SWTCH.S.F03 + - label: + "Does the Device(Server) implement receiving the UpdateNOC command?" + id: OPCREDS.S.C07.Rsp - - label: "Does the MS device support Momentary Switch MultiPress?" - id: SWTCH.S.F04 + - label: + "Does the Device(Server) implement receiving the UpdateFabricLabel + command?" + id: OPCREDS.S.C09.Rsp - label: - "Does the DUT support reading attribute to get switch state (polling)?" - id: SWTCH.C.M.RA + "Does the Device(Server) implement receiving the RemoveFabric command?" + id: OPCREDS.S.C0a.Rsp - - label: "Does the DUT support eventing to get switch state changes?" - id: SWTCH.C.M.EV + - label: + "Does the Device(Server) implement receiving the + AddTrustedRootCertificate command?" + id: OPCREDS.S.C0b.Rsp - - label: "Does the device implement the CurrentScene attribute?" - id: SWTCH.C.F01 + - label: + "Does the Device(Server) implement receiving the ScanNetworks command?" + id: CNET.S.C00.Rsp - - label: "Does the MS device support Momentary Switch Release?" - id: SWTCH.C.F02 + - label: + "Does the Device(Server) implement receiving the + AddOrUpdateWiFiNetwork command?" + id: CNET.S.C02.Rsp - - label: "Does the MS device support Momentary Switch LongPress?" - id: SWTCH.C.F03 + - label: + "Does the Device(Server) implement receiving the + AddOrUpdateThreadNetwork command?" + id: CNET.S.C03.Rsp - - label: "Does the MS device support Momentary Switch MultiPress?" - id: SWTCH.C.F04 + - label: + "Does the Device(Server) implement receiving the RemoveNetwork + command?" + id: CNET.S.C04.Rsp - #General Commissioning Cluster - - label: "Does the device(Server) support Breadcrumb attribute?" - id: CGEN.S.A0000 + - label: + "Does the Device(Server) implement receiving the ConnectNetwork + command?" + id: CNET.S.C06.Rsp - - label: "Does the device(Server) support BasicCommissioningInfo attribute?" - id: CGEN.S.A0001 + - label: + "Does the Device(Server) implement receiving the ReorderNetwork + command?" + id: CNET.S.C08.Rsp - - label: "Does the device(Server) support RegulatoryConfig attribute?" - id: CGEN.S.A0002 + # + # server / commandsGenerated + # + - label: + "Does the Device(Server) invoking/generating the AttestationResponse + command?" + id: OPCREDS.S.C01.Tx - - label: "Does the device(Server) support LocationCapability attribute?" - id: CGEN.S.A0003 + - label: + "Does the Device(Server) invoking/generating the + CertificateChainResponse command?" + id: OPCREDS.S.C03.Tx - label: - "Does the device(Server) support SupportsConcurrentConnection - attribute?" - id: CGEN.S.A0004 + "Does the Device(Server) invoking/generating the CSRResponse command?" + id: OPCREDS.S.C05.Tx - label: - "Does the Device(Server) implement receiving the ArmFailSafe command?" - id: CGEN.S.C00.Rsp + "Does the Device(Server) invoking/generating the NOCResponse command?" + id: OPCREDS.S.C08.Tx - label: - "Does the Device(Server) invoking/generating the ArmFailSafeResponse + "Does the Device(Server) invoking/generating the ScanNetworksResponse command?" - id: CGEN.S.C01.Tx + id: CNET.S.C01.Tx - label: - "Does the Device(Server) implement receiving the SetRegulatoryConfig + "Does the Device(Server) invoking/generating the NetworkConfigResponse command?" - id: CGEN.S.C02.Rsp + id: CNET.S.C05.Tx - label: "Does the Device(Server) invoking/generating the - SetRegulatoryConfigResponse command?" - id: CGEN.S.C03.Tx + ConnectNetworkResponse command?" + id: CNET.S.C07.Tx - - label: - "Does the Device(Server) implement receiving the CommissioningComplete - command?" - id: CGEN.S.C04.Rsp + # + # server / Events + # + - label: "Does the DUT(server) support the StartUp event?" + id: BINFO.S.E00 - - label: - "Does the Device(Server) invoking/generating the - CommissioningCompleteResponse command?" - id: CGEN.S.C05.Tx + - label: "Does the DUT(server) support the ShutDown event?" + id: BINFO.S.E01 - #OTA Software Update - - label: "Does the DUT implement the OTA Requestor Device Type?" - id: MCORE.OTA.Requestor + - label: "Does the DUT(server) support the Leave event?" + id: BINFO.S.E02 - - label: "Does the DUT implement the OTA Provider Device Type?" - id: MCORE.OTA.Provider + - label: "Does the DUT(server) support the ReachableChanged event?" + id: BINFO.S.E03 - - label: "Does the DUT support the HTTPS Protocol for OTA image download?" - id: MCORE.OTA.HTTPS + # + # server / features + # + - label: "Does the device implement the Wi-Fi related features ?" + id: CNET.S.F00 - - label: - "Does the DUT support obtaining user consent for OTA application by - virtue of built-in user interface capabilities?" - id: MCORE.OTA.RequestorConsent + - label: "Does the device implement the Thread related features" + id: CNET.S.F01 - - label: "Does the DUT support resumption of a transfer previously aborted?" - id: MCORE.OTA.Resume + - label: "Does the device implement the Ethernet related features ?" + id: CNET.S.F02 - - label: "Does the DUT support Vendor specific OTA implementation?" - id: MCORE.OTA.VendorSpecific + # + # client / attributes + # + - label: + "Does the DUT(client) have access privileges for the DataModelRevision + attribute implemented on the server?" + id: BINFO.C.A0000 - label: - "Does the Requestor DUT support querying a different Provider in its - OTA Provider List when it hits error conditions in invoking the - QueryImage command?" - id: MCORE.OTA.Retry + "Does the DUT(client) have access privileges for the VendorName + attribute implemented on the server?" + id: BINFO.C.A0001 - label: - "Does the DUT have Administer privilege over the Access Control of - another node?" - id: MCORE.ACL.Administrator + "Does the DUT(client) have access privileges for the VendorID + attribute implemented on the server?" + id: BINFO.C.A0002 - label: - "Does the DUT support sending the DelayedActionTime field in - QueryImageResponse Command?" - id: OTAS.S.M.DelayedActionTime + "Does the DUT(client) have access privileges for the ProductName + attribute implemented on the server?" + id: BINFO.C.A0003 - label: - "Does the DUT support sending the UserConsentNeeded field in - QueryImageResponse Command?" - id: OTAP.S.M.UserConsentNeeded + "Does the DUT(client) have access privileges for the ProductID + attribute implemented on the server?" + id: BINFO.C.A0004 - label: - "Does the DUT support sending the DelayedActionTime field in - QueryImageResponse Command?" - id: OTAP.S.M.DelayedActionTime + "Does the DUT(client) have access privileges for the NodeLabel + attribute implemented on the server?" + id: BINFO.C.A0005 - - label: "Does the DUT support sending the AnnounceOTAProvider Command?" - id: OTAR.C.M.AnnounceOTAProvider + - label: + "Does the DUT(client) have access privileges for the Location + attribute implemented on the server?" + id: BINFO.C.A0006 - - label: "Does the DUT support sending the NotifyUpdateApplied Command?" - id: OTAR.C.M.NotifyUpdateApplied + - label: + "Does the DUT(client) have access privileges for the HardwareVersion + attribute implemented on the server?" + id: BINFO.C.A0007 - #Time Format Localization Cluster - - label: "Does the DUT (Server) support HourFormat attribute?" - id: LTIME.S.A0000 + - label: + "Does the DUT(client) have access privileges for the + HardwareVersionString attribute implemented on the server?" + id: BINFO.C.A0008 - - label: "Does the DUT (Server) support ActiveCalendarType attribute?" - id: LTIME.S.A0001 + - label: + "Does the DUT(client) have access privileges for the SoftwareVersion + attribute implemented on the server?" + id: BINFO.C.A0009 - - label: "Does the DUT (Server) support SupportedCalendarTypes attribute?" - id: LTIME.S.A0002 + - label: + "Does the DUT(client) have access privileges for the + SoftwareVersionString attribute implemented on the server?" + id: BINFO.C.A000a - label: - "Does the device implement the (0xFFF8) GeneratedCommandList attribute - ?" - id: LTIME.S.Afff8 + "Does the DUT(client) have access privileges for the ManufacturingDate + attribute implemented on the server?" + id: BINFO.C.A000b - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute - ?" - id: LTIME.S.Afff9 + "Does the DUT(client) have access privileges for the PartNumber + attribute implemented on the server?" + id: BINFO.C.A000c - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: LTIME.S.Afffa + - label: + "Does the DUT(client) have access privileges for the ProductURL + attribute implemented on the server?" + id: BINFO.C.A000d - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: LTIME.S.Afffb + - label: + "Does the DUT(client) have access privileges for the ProductLabel + attribute implemented on the server?" + id: BINFO.C.A000e - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: LTIME.S.Afffc + - label: + "Does the DUT(client) have access privileges for the SerialNumber + attribute implemented on the server?" + id: BINFO.C.A000f - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: LTIME.S.Afffd + "Does the DUT(client) have access privileges for the + LocalConfigDisabled attribute implemented on the server?" + id: BINFO.C.A0010 - - label: "PIXIT of the list of DUT SupportedCalendarTypes" - id: LTIME.S.A0002.SCT + - label: + "Does the DUT(client) have access privileges for the Reachable + attribute implemented on the server?" + id: BINFO.C.A0011 - - label: "Does the DUT (Server) support 12 Hr Hour Format" - id: LTIME.S.A0000.12HR - - - label: "Does the DUT (Server) support 24 Hr Hour Format" - id: LTIME.S.A0000.24HR - - - label: "Does the DUT (Client) support HourFormat attribute?" - id: LTIME.C.A0000 + - label: + "Does the DUT(client) have access privileges for the UniqueID + attribute implemented on the server?" + id: BINFO.C.A0012 - - label: "Does the DUT (Client) supportActiveCalendarType attribute?" - id: LTIME.C.A0001 + - label: + "Does the DUT(client) have access privileges for the CapabilityMinima + attribute implemented on the server?" + id: BINFO.C.A0013 - - label: "Does the DUT (Client) support SupportedCalendarTypes attribute?" - id: LTIME.C.A0002 + - label: + "Does the DUT(client) have access privileges for the NOC list + attribute implemented on the server?" + id: OPCREDS.C.A0000 - label: - "Does the device implement the (0xFFF8) GeneratedCommandList attribute - ?" - id: LTIME.C.Afff8 + "Does the DUT(client) have access privileges for the SupportedFabrics + attribute implemented on the server?" + id: OPCREDS.C.A0002 - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute - ?" - id: LTIME.C.Afff9 + "Does the DUT(client) have access privileges for the + CommissionedFabrics attribute implemented on the server?" + id: OPCREDS.C.A0003 - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: LTIME.C.Afffa + - label: + "Does the DUT(client) have access privileges for the + TrustedRootCertificates attribute implemented on the server?" + id: OPCREDS.C.A0004 - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: LTIME.C.Afffb + - label: + "Does the DUT(client) have access privileges for the + CurrentFabricIndex attribute implemented on the server?" + id: OPCREDS.C.A0005 - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: LTIME.C.Afffc + - label: + "Does the DUT(client) have access privileges for the MaxNetworks + attribute implemented on the server?" + id: CNET.C.A0000 - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: LTIME.C.Afffd + "Does the DUT(client) have access privileges for the Networks + attribute implemented on the server?" + id: CNET.C.A0001 - - label: "PIXIT of the list of DUT SupportedCalendarTypes" - id: LTIME.C.A0002.SCT + - label: + "Does the DUT(client) have access privileges for the + ScanMaxTimeSeconds attribute implemented on the server?" + id: CNET.C.A0002 - - label: "Does the DUT (Client) support 12 Hr Hour Format" - id: LTIME.C.A0000.12HR + - label: + "Does the DUT(client) have access privileges for the + ConnectMaxTimeSeconds attribute implemented on the server?" + id: CNET.C.A0003 - - label: "Does the DUT (Client) support 24 Hr Hour Format" - id: LTIME.C.A0000.24HR + - label: + "Does the DUT(client) have access privileges for the InterfaceEnabled + attribute implemented on the server?" + id: CNET.C.A0004 - #Unit Localization Cluster - - label: "Does the device implement different units of temperature ?" - id: LUNIT.S.F00 + - label: + "Does the DUT(client) have access privileges for the + LastNetworkingStatus attribute implemented on the server?" + id: CNET.C.A0005 - - label: "Does the DUT (Server) support TemperatureUnit attribute?" - id: LUNIT.S.A0000 + - label: + "Does the DUT(client) have access privileges for the LastNetworkID + attribute implemented on the server?" + id: CNET.C.A0006 - label: - "Does the device implement the (0xFFF8) GeneratedCommandList attribute - ?" - id: LUNIT.S.Afff8 + "Does the DUT(client) have access privileges for the + LastConnectErrorValue attribute implemented on the server?" + id: CNET.C.A0007 + # + # client / commandsReceived + # - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute - ?" - id: LUNIT.S.Afff9 + "Does the Device(Client) invoking/generating the AttestationResponse + command?" + id: OPCREDS.C.C01.Rsp - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: LUNIT.S.Afffa + - label: + "Does the Device(Client) invoking/generating the + CertificateChainResponse command?" + id: OPCREDS.C.C03.Rsp - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: LUNIT.S.Afffb + - label: + "Does the Device(Client) invoking/generating the CSRResponse command?" + id: OPCREDS.C.C05.Rsp - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: LUNIT.S.Afffc + - label: + "Does the Device(Client) invoking/generating the NOCResponse command?" + id: OPCREDS.C.C08.Rsp + # + # client / commandsGenerated + # - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: LUNIT.S.Afffd + "Does the Device(Client) implement receiving the AttestationRequest + command?" + id: OPCREDS.C.C00.Tx - - label: "Does the DUT (Server) support Fahrenheit TemperatureUnit?" - id: LUNIT.TempUnit.Fahrenheit + - label: + "Does the Device(Client) implement receiving the + CertificateChainRequest command?" + id: OPCREDS.C.C02.Tx - - label: "Does the DUT (Server) support Celsius TemperatureUnit?" - id: LUNIT.TempUnit.Celsius + - label: + "Does the Device(Client) implement receiving the CSRRequest command?" + id: OPCREDS.C.C04.Tx - - label: "Does the DUT (Server) support Kelvin TemperatureUnit?" - id: LUNIT.TempUnit.Kelvin + - label: "Does the Device(Client) implement receiving the AddNOC command?" + id: OPCREDS.C.C06.Tx - - label: "Does the DUT (Client) support TemperatureUnit attribute?" - id: LUNIT.C.A0000 + - label: + "Does the Device(Client) implement receiving the UpdateNOC command?" + id: OPCREDS.C.C07.Tx - label: - "Does the device implement the (0xFFF8) GeneratedCommandList attribute - ?" - id: LUNIT.C.Afff8 + "Does the Device(Client) implement receiving the UpdateFabricLabel + command?" + id: OPCREDS.C.C09.Tx - label: - "Does the device implement the (0xFFF9) AcceptedCommandList attribute - ?" - id: LUNIT.C.Afff9 + "Does the Device(Client) implement receiving the RemoveFabric command?" + id: OPCREDS.C.C0a.Tx - - label: "Does the device implement the (0xFFFA) EventList attribute ?" - id: LUNIT.C.Afffa + - label: + "Does the Device(Client) implement receiving the + AddTrustedRootCertificate command?" + id: OPCREDS.C.C0b.Tx - - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" - id: LUNIT.C.Afffb + - label: + "Does the Device(Client) invoking/generating the ScanNetworks command?" + id: CNET.C.C00.Tx - - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" - id: LUNIT.C.Afffc + - label: + "Does the Device(Client) invoking/generating the + AddOrUpdateWiFiNetwork command?" + id: CNET.C.C02.Tx - label: - "Does the device implement the (0xFFFD) ClusterRevision attribute ?" - id: LUNIT.C.Afffd + "Does the Device(Client) invoking/generating the + AddOrUpdateThreadNetwork command?" + id: CNET.C.C03.Tx - - label: "Does the DUT (Client) support Fahrenheit TemperatureUnit?" - id: LUNIT.C.A0000.Fahrenheit + - label: + "Does the Device(Client) invoking/generating the RemoveNetwork + command?" + id: CNET.C.C04.Tx - - label: "Does the DUT (Client) support Celsius TemperatureUnit?" - id: LUNIT.C.A0000.Celsius + - label: + "Does the Device(Client) invoking/generating the ConnectNetwork + command?" + id: CNET.C.C06.Tx - - label: "Does the DUT (Client) support Kelvin TemperatureUnit?" - id: LUNIT.C.A0000.Kelvin + - label: + "Does the Device(Client) invoking/generating the ReorderNetwork + command?" + id: CNET.C.C08.Tx - #Multiple Fabrics - - label: "Does the DUT support Multiple Fabrics?" - id: PICS_MF + # + # client / Events + # + - label: "Does the DUT(Client) support receiving the StartUp event?" + id: BINFO.C.E00 - - label: "Does the DUT support Basic Commissioning Method (BCM)?" - id: PICS_MF_BCM + - label: "Does the DUT(Client) support receiving the ShutDown event?" + id: BINFO.C.E01 - - label: "Does the Device support User Interface Display" - id: CADMIN.UserInterfaceDisplay + - label: "Does the DUT(Client) support receiving the Leave event?" + id: BINFO.C.E02 - - label: "Does the Device support Audio Interface" - id: CADMIN.AudioInterface - #server - - label: "Does the Device support Enhanced Commissioning Method (ECM)?" - id: CADMIN.S.C00.Rsp + - label: + "Does the DUT(Client) support receiving the ReachableChanged event?" + id: BINFO.C.E03 - - label: "Does the Device support Basic Commissioning Method (BCM)?" - id: CADMIN.S.C01.Rsp + # + # client / features + # + - label: "Does the device implement the Wi-Fi related features ?" + id: CNET.C.F00 - - label: "Does the Device support revoking commissioning window?" - id: CADMIN.S.C02.Rsp + - label: "Does the device implement the Thread related features" + id: CNET.C.F01 - - label: "Does the Device implement receiving the RemoveFabric command?" - id: OPCREDS.S.C0a.Rsp - #attributes - - label: "Does the Device support Fabrics attribute?" - id: OPCREDS.S.A0001 + - label: "Does the device implement the Ethernet related features ?" + id: CNET.C.F02 - - label: "Does the Device support NodeLabel attribute?" - id: BINFO.S.A0005 + # Diagnostics Logs Cluster Test Plan + - label: + "Does the device implement the Diagnostic Logs cluster as a server?" + id: DLOG.S - - label: "Does the Device support WindowStatus attribute?" - id: CADMIN.S.A0000 + - label: + "Does the device implement the Diagnostic Logs cluster as a client?" + id: DLOG.C - - label: "Does the Device support AdminFabricIndex attribute?" - id: CADMIN.S.A0001 + # + # server / commandsReceived + # + - label: + "Does the Device(Server) implement receiving the RetrieveLogsRequest + command?" + id: DLOG.S.C00.Rsp - - label: "Does the Device support AdminVendorId attribute?" - id: CADMIN.S.A0002 + # + # server / commandsGenerated + # + - label: + "Does the Device(Server) invoking/generating the RetrieveLogsResponse + command?" + id: DLOG.S.C01.Tx - #client - - label: "Does the Device support Enhanced Commissioning Method (ECM)?" - id: CADMIN.C.C00.Tx + # + # client / commandsReceived + # + - label: + "Does the Device(client) implement receiving the RetrieveLogsResponse + command?" + id: DLOG.C.C01.Rsp - - label: "Does the Device support Basic Commissioning Method (BCM)?" - id: CADMIN.C.C01.Tx + # + # client / commandsGenerated + # + - label: + "Does the Device(client) invoking/generating the RetrieveLogsRequeste + command?" + id: DLOG.C.C00.Tx - - label: "Does the Device support revoking commissioning window?" - id: CADMIN.C.C02.Tx + # Door lock Test Plan + - label: "Does the device implement the DoorLock cluster as a server?" + id: DRLK.S - - label: "Does the Device implement receiving the RemoveFabric command?" - id: OPCREDS.C.C0a.Tx - #attributes - - label: "Does the Device support Fabrics attribute?" - id: OPCREDS.C.A0001 + - label: "Does the device implement the DoorLock cluster as a client?" + id: DRLK.C - - label: "Does the Device support NodeLabel attribute?" - id: BINFO.C.A0005 + # + # server / attributes + # + - label: "Does the DUT(server) support the LockState attribute?" + id: DRLK.S.A0000 - - label: "Does the Device support WindowStatus attribute?" - id: CADMIN.C.A0000 + - label: "Does the DUT(server) support the LockType attribute?" + id: DRLK.S.A0001 - - label: "Does the Device support AdminFabricIndex attribute?" - id: CADMIN.C.A0001 + - label: "Does the DUT(server) support the ActuatorEnabled attribute?" + id: DRLK.S.A0002 - - label: "Does the Device support AdminVendorId attribute?" - id: CADMIN.C.A0002 + - label: "Does the DUT(server) support the DoorState attribute?" + id: DRLK.S.A0003 - - label: "Does the Device implement the Multi Fabric cluster as a server?" - id: CADMIN.S + - label: "Does the DUT(server) support the DoorOpen Events attribute?" + id: DRLK.S.A0004 - - label: "Does the Device implement the Multi Fabric cluster as a client?" - id: CADMIN.C + - label: "Does the DUT(server) support the DoorClosedEvents attribute?" + id: DRLK.S.A0005 - #User Label cluster - - label: "Does the DUT Server support LabelList attribute?" - id: ULABEL.S.A0000 + - label: "Does the DUT(server) support the OpenPeriod attribute?" + id: DRLK.S.A0006 - label: - "DUT sends a write request to the TH, to write to an entry in the - LabelList" - id: ULABEL.C.A0000 - - #Fixed Label cluster - - label: "Does the DUT Server support LabelList attribute?" - id: FLABEL.S.A0000 - - - label: "Does the DUT Server support LabelList attribute?" - id: FLABEL.C.A0000 + "Does the DUT(server) support the NumberOf TotalUsersSupported + attribute?" + id: DRLK.S.A0011 - #Media clusters - label: - "Does the DUT support the Keypad Input server cluster Navigation Keys?" - id: KEYPADINPUT.S.NV + "Does the DUT(server) support the NumberofPINUsersSupported attribute?" + id: DRLK.S.A0012 - label: - "Does the DUT support the Keypad Input server cluster Location Keys?" - id: KEYPADINPUT.S.LK - - - label: "Does the DUT support the Keypad Input server cluster Number Keys?" - id: KEYPADINPUT.S.NK + "Does the DUT(server) support the NumberofRFIDUsersSupported + attribute?" + id: DRLK.S.A0013 - label: - "Does the DUT support the Keypad Input server cluster, SendKey - command?" - id: KEYPADINPUT.S.C00.Rsp + "Does the DUT(server) support the NumberofWeekDaysSchedulesSupported + attribute?" + id: DRLK.S.A0014 - label: - "Does the DUT support the Keypad Input client cluster, SendKey - command?" - id: KEYPADINPUT.C.C00.Tx + "Does the DUT(server) support the NumberofYearDaysSchedulesSupported + attribute?" + id: DRLK.S.A0015 - label: - "Does the DUT support the Application Launcher server cluster - Application Platform feature?" - id: APPLAUNCHER.S.AP + "Does the DUT(server) support the NumberofHolidaySchedulesSupported + attribute?" + id: DRLK.S.A0016 - - label: - "Does the DUT support the Application Launcher server cluster - CatalogList attribute?" - id: APPLAUNCHER.S.A0000 + - label: "Does the DUT(server) support the MaxPINCodedLength attribute?" + id: DRLK.S.A0017 - - label: - "Does the DUT support the Application Launcher server cluster - CurrentApp attribute?" - id: APPLAUNCHER.S.A0001 + - label: "Does the DUT(server) support the MinPINCodedLength attribute?" + id: DRLK.S.A0018 - - label: - "Does the DUT support the Media Input server cluster InputList - attribute?" - id: MEDIAINPUT.S.A0000 + - label: "Does the DUT(server) support the MaxRFIDCodedLength attribute?" + id: DRLK.S.A0019 - - label: - "Does the DUT support the Media Input server cluster CurrentInput - attribute?" - id: MEDIAINPUT.S.A0001 + - label: "Does the DUT(server) support the MinRFIDCodedLength attribute?" + id: DRLK.S.A001a - label: - "Does the DUT support the Media Input server cluster Name Updates - feature?" - id: MEDIAINPUT.S.NU + "Does the DUT(server) support the CredentialRulesSupport attribute?" + id: DRLK.S.A001b - label: - "Does the DUT support the Audio Ouput server cluster, Name Updates - feature?" - id: AUDIOOUTPUT.S.NU + "Does the DUT(server) support the NumberOfCredentialsSupportedPerUser + attribute?" + id: DRLK.S.A001c - - label: - "Does the DUT support the Channel server cluster Channel List feature?" - id: CHANNEL.S.CL + - label: "Does the DUT(server) support the Language attribute?" + id: DRLK.S.A0021 - - label: - "Does the DUT support the Channel server cluster Lineup Info feature?" - id: CHANNEL.S.LI + - label: "Does the DUT(server) support the LEDSettings attribute?" + id: DRLK.S.A0022 - - label: - "Does the DUT support the Channel server cluster ChannelList - attribute?" - id: CHANNEL.S.A0000 + - label: "Does the DUT(server) support the AutoRelockTime attribute?" + id: DRLK.S.A0023 - - label: "Does the DUT support the Channel server cluster Lineup attribute?" - id: CHANNEL.S.A0001 + - label: "Does the DUT(server) support the SoundVolume attribute?" + id: DRLK.S.A0024 - - label: - "Does the DUT support the Channel server cluster CurrentChannel - attribute?" - id: CHANNEL.S.A0002 + - label: "Does the DUT(server) support the OperatingMode attribute?" + id: DRLK.S.A0025 - label: - "Does the DUT support the Channel server cluster ChangeChannel - command?" - id: CHANNEL.S.C00.Rsp + "Does the DUT(server) support the SupportedOperatingModes attribute?" + id: DRLK.S.A0026 - label: - "Does the DUT support the Channel server cluster ChangeChannelByNumber - command?" - id: CHANNEL.S.C02.Rsp + "Does the DUT(server) support the DefaultConfigurationRegister + attribute?" + id: DRLK.S.A0027 - label: - "Does the DUT support the Channel server cluster SkipChannel command?" - id: CHANNEL.S.C03.Rsp + "Does the DUT(server) support the EnableLocalProgramming attribute?" + id: DRLK.S.A0028 - - label: - "Does the DUT support the Media Playback server cluster Advanced Seek - feature?" - id: MEDIAPLAYBACK.S.AS + - label: "Does the DUT(server) support the EnableOneTouchLocking attribute?" + id: DRLK.S.A0029 - - label: - "Does the DUT support the Media Playback server cluster Variable Speed - feature?" - id: MEDIAPLAYBACK.S.VS + - label: "Does the DUT(server) support the EnableInsideStatusLED attribute?" + id: DRLK.S.A002a - label: - "Does the DUT support the Target Navigator server cluster - CurrentTarget attribute?" - id: TGTNAV.S.A0001 + "Does the DUT(server) support the EnablePrivacyModeButton attribute?" + id: DRLK.S.A002b - label: - "Does the device implement the Application Basic cluster as a server?" - id: APBSC.S + "Does the DUT(server) support the LocalProgrammingFeatures attribute?" + id: DRLK.S.A002c - - label: - "Does the DUT support the Application Basic server cluster VendorName - attribute?" - id: APBSC.S.A0000 + - label: "Does the DUT(server) support the WrongCodeEntryLimit attribute?" + id: DRLK.S.A0030 - label: - "Does the DUT support the Application Basic server cluster VendorID + "Does the DUT(server) support the UserCodedTemporaryDisableTime attribute?" - id: APBSC.S.A0001 + id: DRLK.S.A0031 + + - label: "Does the DUT(server) support the SendPINOverTheAir attribute?" + id: DRLK.S.A0032 - label: - "Does the DUT support the Application Basic server cluster ProductID + "Does the DUT(server) support the RequirePINForRemoteOperation attribute?" - id: APBSC.S.A0003 + id: DRLK.S.A0033 - - label: - "Does the DUT support the Content Launcher server cluster Content - Search feature?" - id: CONTENTLAUNCHER.S.CS + - label: "Does the DUT(server) support the ExpiringUserTimeOut attribute?" + id: DRLK.S.A0035 - - label: - "Does the DUT support the Content Launcher server cluster Content - Search feature?" - id: CONTENTLAUNCHER.S.UP + # + # server / commandsReceived + # + - label: "Does the DUT(server) support the Lock Door command?" + id: DRLK.S.C00.Rsp - - label: - "Does the DUT support the Content Launcher server cluster AcceptHeader - attribute?" - id: CONTENTLAUNCHER.S.A0000 + - label: "Does the DUT(server) support the Unlock Door command?" + id: DRLK.S.C01.Rsp - - label: - "Does the DUT support the Content Launcher server cluster - SupportedStreamingProtocols attribute?" - id: CONTENTLAUNCHER.S.A0001 + - label: "Does the DUT(server) support the Unlock with Timeout command?" + id: DRLK.S.C03.Rsp - - label: "Does the device implement the Low Power cluster as a server?" - id: LOWPOWER.S + - label: "Does the DUT(server) support the Set Week Day Schedule command?" + id: DRLK.S.C0b.Rsp - - label: "Does the device implement the Low Power cluster as a client?" - id: LOWPOWER.C + - label: "Does the DUT(server) support the Get Week Day Schedule command?" + id: DRLK.S.C0c.Rsp - - label: "Does the DUT support the Low Power server cluster, Sleep command?" - id: LOWPOWER.S.C00.Rsp + - label: "Does the DUT(server) support the Clear Week Day Schedul command?" + id: DRLK.S.C0d.Rsp - - label: "Does the DUT support the Low Power client cluster, Sleep command?" - id: LOWPOWER.C.C00.Tx + - label: "Does the DUT(server) support the Set Year Day Schedule command?" + id: DRLK.S.C0e.Rsp - - label: - "Does the DUT support the Media Input server cluster SelectInput - command?" - id: MEDIAINPUT.S.C00.Rsp + - label: "Does the DUT(server) support the Get Year Day Schedule command?" + id: DRLK.S.C0f.Rsp - - label: - "Does the DUT support the Media Input server cluster ShowStatus - command?" - id: MEDIAINPUT.S.C01.Rsp + - label: "Does the DUT(server) support the Clear Year Day Schedule command?" + id: DRLK.S.C10.Rsp - - label: - "Does the DUT support the Media Input server cluster HideStatus - command" - id: MEDIAINPUT.S.C02.Rsp + - label: "Does the DUT(server) support the Set Holiday Schedule command?" + id: DRLK.S.C11.Rsp - - label: - "Does the DUT support the Media Input server cluster Rename command?" - id: MEDIAINPUT.S.C03.Rsp + - label: "Does the DUT(server) support the Get Holiday Schedule command?" + id: DRLK.S.C12.Rsp + + - label: "Does the DUT(server) support the Clear Holiday Schedule command?" + id: DRLK.S.C13.Rsp + + - label: "Does the DUT(server) support the Set User command?" + id: DRLK.S.C1a.Rsp + + - label: "Does the DUT(server) support the Get User command?" + id: DRLK.S.C1b.Rsp + + - label: "Does the DUT(server) support the Clear User command?" + id: DRLK.S.C1d.Rsp + + - label: "Does the DUT(server) support the Set Credential command?" + id: DRLK.S.C22.Rsp + + - label: "Does the DUT(server) support the Get Credential command?" + id: DRLK.S.C24.Rsp + + - label: "Does the DUT(server) support the Clear Credential command?" + id: DRLK.S.C26.Rsp + # + # server / commandsGenerated + # - label: - "Does the DUT support the Media Input client cluster SelectInput + "Does the DUT(server) support the Get Week Day Schedule Response command?" - id: MEDIAINPUT.C.C0000 + id: DRLK.S.C0c.Tx - label: - "Does the DUT support the Media Input client cluster ShowStatus + "Does the DUT(server) support the Get Year Day Response Schedule command?" - id: MEDIAINPUT.C.C0001 + id: DRLK.S.C0f.Tx - label: - "Does the DUT support the Media Input client cluster HideStatus + "Does the DUT(server) support the Get Holiday Schedule Response command?" - id: MEDIAINPUT.C.C0002 + id: DRLK.S.C12.Tx - - label: - "Does the DUT support the Media Input server cluster Rename command?" - id: MEDIAINPUT.C.C0003 + - label: "Does the DUT(server) support the Get User Response command?" + id: DRLK.S.C1c.Tx - - label: - "Does the DUT support the Media Input client cluster SelectInput - command?" - id: MEDIAINPUT.C.C00.Tx + - label: "Does the DUT(server) support the Set Credential Response command?" + id: DRLK.S.C23.Tx + + - label: "Does the DUT(server) support the Get Credential Response command?" + id: DRLK.S.C25.Tx + + # + # server / Events + # + - label: "Does the DUT(server) support the DoorLockAlarm event?" + id: DRLK.S.E00 + - label: "Does the DUT(server) support the DoorStateChange event?" + id: DRLK.S.E01 + + - label: "Does the DUT(server) support the LockOperation event?" + id: DRLK.S.E02 + + - label: "Does the DUT(server) support the LockOperationError event?" + id: DRLK.S.E03 + + - label: "Does the DUT(server) support the LockUserChange event?" + id: DRLK.S.E04 + + # + # server / features + # - label: - "Does the DUT support the Media Input client cluster ShowStatus - command?" - id: MEDIAINPUT.C.C01.Tx + "Does the DUT(server) support the Lock supports PIN credentials (via + keypad, or over the-air) feature?" + id: DRLK.S.F00 - label: - "Does the DUT support the Media Input client cluster HideStatus - command?" - id: MEDIAINPUT.C.C02.Tx + "Does the DUT(server) support the Lock supports RFID credentials + feature?" + id: DRLK.S.F01 - label: - "Does the DUT support the Media Input server cluster Rename command?" - id: MEDIAINPUT.C.C03.Tx + "Does the DUT(server) support the Lock supports finger related + credentials(fingerprint, fingervein) feature?" + id: DRLK.S.F02 - label: - "Does the DUT support the Application Launcher client cluster - LaunchApp command?" - id: APPLAUNCHER.C.C0000 + "Does the DUT(server) support the Lock supports weekday access + schedules feature?" + id: DRLK.S.F04 - label: - "Does the DUT support the Application Launcher client cluster StopApp - command?" - id: APPLAUNCHER.C.C0001 + "Does the DUT(server) support the Lock supports a door position sensor + that indicates door’s state feature?" + id: DRLK.S.F05 - label: - "Does the DUT support the Application Launcher client cluster HideApp - command?" - id: APPLAUNCHER.C.C0002 + "Does the DUT(server) support the Lock supports face related + credentials (face, iris, retina) feature?" + id: DRLK.S.F06 - label: - "Does the DUT support the Application Launcher client cluster - LaunchApp command?" - id: APPLAUNCHER.C.C00.Tx + "Does the DUT(server) support the PIN codes over the-air supported for + lock/unlock operations feature?" + id: DRLK.S.F07 - label: - "Does the DUT support the Application Launcher client cluster StopApp - command?" - id: APPLAUNCHER.C.C01.Tx + "Does the DUT(server) support the Lock supports the user commands and + database feature?" + id: DRLK.S.F08 - label: - "Does the DUT support the Application Launcher client cluster HideApp - command?" - id: APPLAUNCHER.C.C02.Tx + "Does the DUT(server) support the Lock supports yearday access + schedules feature?" + id: DRLK.S.F0a - label: - "Does the DUT support the Wake On LAN server cluster MACAddress - attribute?" - id: WAKEONLAN.S.A0000 + "Does the DUT(server) support the Lock supports holiday access + schedules feature?" + id: DRLK.S.F0b - - label: "Does the device implement the Wake On LAN cluster as a server?" - id: WAKEONLAN.S + # + # server / manually + # + - label: "Does the DUT(server) support simulating a Not Fully Locked State?" + id: DRLK.S.Simulate.NotFullyLocked + + - label: "Does the DUT(server) detect a LockJammed State?" + id: DRLK.S.DetectLockJammed + # + # client / attributes + # - label: - "Does the DUT support the Channel server cluster Channel List feature?" - id: CHANNEL.S.CL + "Does the DUT(client) have access privileges for the LockState + attribute implemented on server?" + id: DRLK.C.A0000 - label: - "Does the DUT support the Channel server cluster ChannelList - attribute?" - id: CHANNEL.S.A0000 + "Does the DUT(client) have access privileges for the LockType + attribute implemented on server?" + id: DRLK.C.A0001 - - label: "Does the DUT support the Channel server cluster Lineup attribute?" - id: CHANNEL.S.A0001 + - label: + "Does the DUT(client) have access privileges for the ActuatorEnabled + attribute implemented on server?" + id: DRLK.C.A0002 - label: - "Does the DUT support the Channel server cluster CurrentChannel - attribute?" - id: CHANNEL.S.A0002 + "Does the DUT(client) have access privileges for the DoorState + attribute implemented on server?" + id: DRLK.C.A0003 - label: - "Does the DUT support the Channel server cluster ChangeChannelResponse - command?" - id: CHANNEL.S.C01.Tx + "Does the DUT(client) have access privileges for the DoorOpenEvents + attribute implemented on server?" + id: DRLK.C.A0004 - label: - "Does the DUT support the Media Playback server cluster Advanced Seek - feature?" - id: MEDIAPLAYBACK.S.AS + "Does the DUT(client) have access privileges for the DoorClosedEvents + attribute implemented on server?" + id: DRLK.C.A0005 - label: - "Does the DUT support the Media Playback server cluster Variable Speed - feature?" - id: MEDIAPLAYBACK.S.VS + "Does the DUT(client) have access privileges for the OpenPeriod + attribute implemented on server?" + id: DRLK.C.A0006 - label: - "Does the DUT support the Media Playback server cluster CurrentState - attribute?" - id: MEDIAPLAYBACK.S.A0000 + "Does the DUT(client) have access privileges for the + NumberOfTotalUsersSupported attribute implemented on server?" + id: DRLK.C.A0011 - label: - "Does the DUT support the Media Playback server cluster StartTime - attribute?" - id: MEDIAPLAYBACK.S.A0001 + "Does the DUT(client) have access privileges for the + NumberofPINUsersSupported attribute implemented on server?" + id: DRLK.C.A0012 - label: - "Does the DUT support the Media Playback server cluster Duration - attribute?" - id: MEDIAPLAYBACK.S.A0002 + "Does the DUT(client) have access privileges for the + NumberofRFIDUsersSupported attribute implemented on server?" + id: DRLK.C.A0013 - label: - "Does the DUT support the Media Playback server cluster - SampledPosition attribute?" - id: MEDIAPLAYBACK.S.A0003 + "Does the DUT(client) have access privileges for the + NumberofWeekDaysSchedulesSupported attribute implemented on server?" + id: DRLK.C.A0014 - label: - "Does the DUT support the Media Playback server cluster PlaybackSpeed - attribute?" - id: MEDIAPLAYBACK.S.A0004 + "Does the DUT(client) have access privileges for the + NumberofYearDaysSchedulesSupported attribute implemented on server?" + id: DRLK.C.A0015 - label: - "Does the DUT support the Media Playback server cluster SeekRangeEnd - attribute?" - id: MEDIAPLAYBACK.S.A0005 + "Does the DUT(client) have access privileges for the + NumberofHolidaySchedulesSupported attribute implemented on server?" + id: DRLK.C.A0016 - label: - "Does the DUT support the Media Playback server cluster SeekRangeStart - attribute?" - id: MEDIAPLAYBACK.S.A0006 + "Does the DUT(client) have access privileges for the MaxPINCodedLength + attribute implemented on server?" + id: DRLK.C.A0017 - label: - "Does the DUT support the Media Playback server cluster Play command?" - id: MEDIAPLAYBACK.S.C00.Rsp + "Does the DUT(client) have access privileges for the MinPINCodedLength + attribute implemented on server?" + id: DRLK.C.A0018 - label: - "Does the DUT support the Media Playback server cluster Pause command?" - id: MEDIAPLAYBACK.S.C01.Rsp + "Does the DUT(client) have access privileges for the + MaxRFIDCodedLength attribute implemented on server?" + id: DRLK.C.A0019 - label: - "Does the DUT support the Media Playback server cluster Stop command?" - id: MEDIAPLAYBACK.S.C02.Rsp + "Does the DUT(client) have access privileges for the + MinRFIDCodedLength attribute implemented on server?" + id: DRLK.C.A001a - label: - "Does the DUT support the Media Playback server cluster StartOver - command?" - id: MEDIAPLAYBACK.S.C03.Rsp + "Does the DUT(client) have access privileges for the + CredentialRulesSupport attribute implemented on server?" + id: DRLK.C.A001b - label: - "Does the DUT support the Media Playback server cluster Previous - command?" - id: MEDIAPLAYBACK.S.C04.Rsp + "Does the DUT(client) have access privileges for the + NumberOfCredentialsSupportedPerUser attribute implemented on server?" + id: DRLK.C.A001c - label: - "Does the DUT support the Media Playback server cluster Next command?" - id: MEDIAPLAYBACK.S.C05.Rsp + "Does the DUT(client) have access privileges for the Language + attribute implemented on server?" + id: DRLK.C.A0021 - label: - "Does the DUT support the Media Playback server cluster Rewind - command?" - id: MEDIAPLAYBACK.S.C06.Rsp + "Does the DUT(client) have access privileges for the LEDSettings + attribute implemented on server?" + id: DRLK.C.A0022 - label: - "Does the DUT support the Media Playback server cluster FastForward - command?" - id: MEDIAPLAYBACK.S.C07.Rsp + "Does the DUT(client) have access privileges for the AutoRelockTime + attribute implemented on server?" + id: DRLK.C.A0023 - label: - "Does the DUT support the Media Playback server cluster SkipForward - command?" - id: MEDIAPLAYBACK.S.C08.Rsp + "Does the DUT(client) have access privileges for the SoundVolume + attribute implemented on server?" + id: DRLK.C.A0024 - label: - "Does the DUT support the Media Playback server cluster SkipBackward - command?" - id: MEDIAPLAYBACK.S.C09.Rsp + "Does the DUT(client) have access privileges for the OperatingMode + attribute implemented on server?" + id: DRLK.C.A0025 - label: - "Does the DUT support the Media Playback server cluster Seek command?" - id: MEDIAPLAYBACK.S.C0B.Rsp + "Does the DUT(client) have access privileges for the + SupportedOperatingModes attribute implemented on server?" + id: DRLK.C.A0026 - label: - "Does the DUT support the Media Playback client cluster, Play command?" - id: MEDIAPLAYBACK.C.C00.Tx + "Does the DUT(client) have access privileges for the + DefaultConfigurationRegister attribute implemented on server?" + id: DRLK.C.A0027 - label: - "Does the DUT support the Media Playback client cluster, Pause - command?" - id: MEDIAPLAYBACK.C.C01.Tx + "Does the DUT(client) have access privileges for the + EnableLocalProgramming attribute implemented on server?" + id: DRLK.C.A0028 - label: - "Does the DUT support the Media Playback client cluster, Stop command?" - id: MEDIAPLAYBACK.C.C02.Tx + "Does the DUT(client) have access privileges for the + EnableOneTouchLocking attribute implemented on server?" + id: DRLK.C.A0029 - label: - "Does the DUT support the Media Playback client cluster, StartOver - command?" - id: MEDIAPLAYBACK.C.C03.Tx + "Does the DUT(client) have access privileges for the + EnableInsideStatusLED attribute implemented on server?" + id: DRLK.C.A002a - label: - "Does the DUT support the Media Playback client cluster, Previous - command?" - id: MEDIAPLAYBACK.C.C04.Tx + "Does the DUT(client) have access privileges for the + EnablePrivacyModeButton attribute implemented on server?" + id: DRLK.C.A002b - label: - "Does the DUT support the Media Playback client cluster, Next command?" - id: MEDIAPLAYBACK.C.C05.Tx + "Does the DUT(client) have access privileges for the + LocalProgrammingFeatures attribute implemented on server?" + id: DRLK.C.A002c - label: - "Does the DUT support the Media Playback client cluster, SkipForward - command?" - id: MEDIAPLAYBACK.C.C08.Tx + "Does the DUT(client) have access privileges for the + WrongCodeEntryLimit attribute implemented on server?" + id: DRLK.C.A0030 - label: - "Does the DUT support the Media Playback client cluster, SkipBackward - command?" - id: MEDIAPLAYBACK.C.C09.Tx - - - label: "Does the device implement the Audio Output cluster as a server?" - id: AUDIOOUTPUT.S + "Does the DUT(client) have access privileges for the + UserCodedTemporaryDisableTime attribute implemented on server?" + id: DRLK.C.A0031 - label: - "Does the DUT support the Audio Output server cluster OutputList - attribute?" - id: AUDIOOUTPUT.S.A0000 + "Does the DUT(client) have access privileges for the SendPINOverTheAir + attribute implemented on server?" + id: DRLK.C.A0032 - label: - "Does the DUT support the Audio Output server cluster CurrentOutput - attribute?" - id: AUDIOOUTPUT.S.A0001 + "Does the DUT(client) have access privileges for the + RequirePINForRemoteOperation attribute implemented on server?" + id: DRLK.C.A0033 - label: - "Does the DUT support the Audio Output server cluster SelectOutput - command?" - id: AUDIOOUTPUT.S.C00.Rsp + "Does the DUT(client) have access privileges for the + ExpiringUserTimeOut attribute implemented on server?" + id: DRLK.C.A0035 + # + # client / commandsReceived + # - label: - "Does the DUT support the Audio Output server cluster RenameOutput + "Does the DUT(Client) support the Get Week Day Schedule Response command?" - id: AUDIOOUTPUT.S.C01.Rsp - - - label: "Does the device implement the Audio Output cluster as a client?" - id: AUDIOOUTPUT.C - - - label: - "Does the DUT support the Audio Ouput server cluster Name Updates - feature?" - id: AUDIOOUTPUT.S.NU + id: DRLK.C.C0c.Rsp - label: - "Does the DUT support the Audio Output client cluster, SelectOutput + "Does the DUT(Client) support the Get Year Day Schedule Response command?" - id: AUDIOOUTPUT.C.C00.Tx + id: DRLK.C.C0f.Rsp - label: - "Does the DUT support the Audio Output client cluster, RenameOutput + "Does the DUT(Client) support the Get Holiday Schedule Response command?" - id: AUDIOOUTPUT.C.C01.Tx + id: DRLK.C.C12.Rsp - - label: - "Does the DUT support the Target Navigator server cluster TargetList - attribute?" - id: TGTNAV.S.A0000 + - label: "Does the DUT(Client) support the Get User Response?" + id: DRLK.C.C1c.Rsp - - label: - "Does the DUT support the Target Navigator server cluster - CurrentTarget attribute?" - id: TGTNAV.S.A0001 + - label: "Does the DUT(Client) support the Set Credential Response command?" + id: DRLK.C.C23.Rsp - - label: - "Does the DUT support the Target Navigator server cluster - NavigateTarget command?" - id: TGTNAV.S.C00.Rsp + - label: "Does the DUT(Client) support the Get Credential Response command?" + id: DRLK.C.C25.Rsp - - label: - "Does the DUT support the Target Navigator client cluster, - NavigateTarget command?" - id: TGTNAV.C.C00.Tx + # + # client / commandsGenerated + # + - label: "Does the DUT(Client) support the Lock Door command?" + id: DRLK.C.C00.Tx - - label: - "Does the DUT support the Application Basic server cluster VendorName - attribute?" - id: APBSC.S.A0000 + - label: "Does the DUT(Client) support the Unlock Door command?" + id: DRLK.C.C01.Tx - - label: - "Does the DUT support the Application Basic server cluster VendorID - attribute?" - id: APBSC.S.A0001 + - label: "Does the DUT(Client) support the Unlock with Timeout command?" + id: DRLK.C.C03.Tx - - label: - "Does the DUT support the Application Basic server cluster - ApplicationName attribute?" - id: APBSC.S.A0002 + - label: "Does the DUT(Client) support the Set Week Day Schedule command?" + id: DRLK.C.C0b.Tx - - label: - "Does the DUT support the Application Basic server cluster ProductID - attribute?" - id: APBSC.S.A0003 + - label: "Does the DUT(Client) support the Get Week Day Schedule command?" + id: DRLK.C.C0c.Tx - - label: - "Does the DUT support the Application Basic server cluster Application - attribute?" - id: APBSC.S.A0004 + - label: "Does the DUT(Client) support the Clear Week Day Schedule command?" + id: DRLK.C.C0d.Tx - - label: - "Does the DUT support the Application Basic server cluster Status - attribute?" - id: APBSC.S.A0005 + - label: "Does the DUT(Client) support the Set Year Day Schedule command?" + id: DRLK.C.C0e.Tx - - label: - "Does the DUT support the Application Basic server cluster - ApplicationVersion attribute?" - id: APBSC.S.A0006 + - label: "Does the DUT(Client) support the Get Year Day Schedule command?" + id: DRLK.C.C0f.Tx - - label: - "Does the DUT support the Application Basic server cluster - AllowedVendorList attribute?" - id: APBSC.S.A0007 + - label: "Does the DUT(Client) support the Clear Year Day Schedule command?" + id: DRLK.C.C10.Tx - - label: - "Does the DUT support the Content Launcher server cluster Content - Search feature?" - id: CONTENTLAUNCHER.S.CS + - label: "Does the DUT(Client) support the Set Holiday Schedule command?" + id: DRLK.C.C11.Tx - - label: - "Does the DUT support the Content Launcher server cluster URL Playback - feature?" - id: CONTENTLAUNCHER.S.UP + - label: "Does the DUT(Client) support the Get Holiday Schedule command?" + id: DRLK.C.C12.Tx - - label: - "Does the DUT support the Content Launcher server cluster AcceptHeader - attribute?" - id: CONTENTLAUNCHER.S.A0000 + - label: "Does the DUT(Client) support the Clear Holiday Schedule command?" + id: DRLK.C.C13.Tx - - label: - "Does the DUT support the Content Launcher server cluster - SupportedStreamingProtocols attribute?" - id: CONTENTLAUNCHER.S.A0001 + - label: "Does the DUT(Client) support the Set User command?" + id: DRLK.C.C1a.Tx - - label: - "Does the DUT support the Content Launcher server cluster - LaunchContent command?" - id: CONTENTLAUNCHER.C.C0000 + - label: "Does the DUT(Client) support the Get User?" + id: DRLK.C.C1b.Tx - - label: - "Does the DUT support the Content Launcher server cluster LaunchURL - command?" - id: CONTENTLAUNCHER.C.C0001 + - label: "Does the DUT(Client) support the Clear User command?" + id: DRLK.C.C1d.Tx - - label: - "Does the DUT support the Content Launcher client cluster, - LaunchContent command?" - id: CONTENTLAUNCHER.C.C00.Tx + - label: "Does the DUT(Client) support the Set Credential command?" + id: DRLK.C.C22.Tx - - label: - "Does the DUT support the Content Launcher client cluster, LaunchURL - command?" - id: CONTENTLAUNCHER.C.C01.Tx + - label: "Does the DUT(Client) support the Get Credential command?" + id: DRLK.C.C24.Tx - - label: - "Does the DUT support the Content Launcher server cluster, - LaunchContent command?" - id: CONTENTLAUNCHER.S.C00.Rsp + - label: "Does the DUT(Client) support the Clear Credential command?" + id: DRLK.C.C26.Tx - - label: - "Does the DUT support the Content Launcher server cluster, LaunchURL - command?" - id: CONTENTLAUNCHER.S.C01.Rsp + # + # client / Events + # + - label: "Does the DUT(client) support the DoorLockAlarm event?" + id: DRLK.C.E00 - - label: - "Does the DUT support the Content Launcher server cluster and is - Commissionable?" - id: ALOGIN.S.COMMISSIONABLE + - label: "Does the DUT(client) support the DoorStateChange event?" + id: DRLK.C.E01 - - label: - "Does the DUT support the Account Login server cluster GetSetupPIN - command?" - id: ALOGIN.S.C0000 + - label: "Does the DUT(client) support the LockOperation event?" + id: DRLK.C.E02 - - label: - "Does the DUT support the Account Login server cluster, GetSetupPIN - command?" - id: ALOGIN.S.C00.Rsp + - label: "Does the DUT(client) support the LockOperationError event?" + id: DRLK.C.E03 - - label: - "Does the DUT support the Account Login server cluster, Login command?" - id: ALOGIN.S.C02.Rsp + - label: "Does the DUT(client) support the LockUserChange event?" + id: DRLK.C.E04 + # + # client / features + # - label: - "Does the DUT support the Account Login server cluster, Logout - command?" - id: ALOGIN.S.C03.Rsp + "Does the DUT(client) support the Lock supports PIN credentials (via + keypad, or over the-air) feature?" + id: DRLK.C.F00 - label: - "Does the DUT support the Account Login client cluster GetSetupPIN - command?" - id: ALOGIN.C.C0000 + "Does the DUT(client) support the Lock supports RFID credentials + feature?" + id: DRLK.C.F01 - label: - "Does the DUT support the Account Login Client cluster, GetSetupPIN - command?" - id: ALOGIN.C.C00.Tx + "Does the DUT(client) support the Lock supports finger related + credentials(fingerprint, fingervein) feature?" + id: DRLK.C.F02 - label: - "Does the DUT support the Account Login Client cluster, Login - command?" - id: ALOGIN.C.C02.Tx + "Does the DUT(client) support the Lock supports weekday access + schedules feature?" + id: DRLK.C.F04 - label: - "Does the DUT support the Account Login Client cluster, Logout - command?" - id: ALOGIN.C.C03.Tx - - - label: "Does the device implement the Keypad Input cluster as a client?" - id: KEYPADINPUT.C + "Does the DUT(client) support the Lock supports a door position sensor + that indicates door’s state feature?" + id: DRLK.C.F05 - label: - "Does the DUT support the Target Navigator server cluster TargetList - attribute?" - id: TGTNAV.S.A0000 + "Does the DUT(client) support the Lock supports face related + credentials (face, iris, retina) feature?" + id: DRLK.C.F06 - label: - "Does the DUT support the Target Navigator server cluster - CurrentTarget attribute?" - id: TGTNAV.S.A0001 + "Does the DUT(client) support the PIN codes over the-air supported for + lock/unlock operations feature?" + id: DRLK.C.F07 - label: - "Does the DUT support the commissioning procedure initiated by a - commissionee using User Directed Commissioning?" - id: MC.S.UDC + "Does the DUT(client) support the Lock supports the user commands and + database feature?" + id: DRLK.C.F08 - label: - "Does the DUT support the commissioning procedure initiated by a - commissionee using User Directed Commissioning without PIN code entry?" - id: MC.S.UDCLOGIN - - - label: "Does the DUT support the Low Power cluster" - id: PICS_LP + "Does the DUT(client) support the Lock supports yearday access + schedules feature?" + id: DRLK.C.F0a - label: - "Does the DUT support the Channel client cluster, ChangeChannel - command?" - id: CHANNEL.C.C0000 + "Does the DUT(client) support the Lock supports holiday access + schedules feature?" + id: DRLK.C.F0b + # Ethernet Network Diagnostics Cluster Test Plan - label: - "Does the DUT support the Channel client cluster, - ChangeChannelByNumber command?" - id: CHANNEL.C.C0002 + "Does the device implement the Ethernet Network Diagnostics cluster as + a server?" + id: DGETH.S - label: - "Does the DUT support the Channel client cluster, SkipChannel command?" - id: CHANNEL.C.C0003 + "Does the device implement the Ethernet Network Diagnostics cluster as + a client?" + id: DGETH.C - - label: - "Does the DUT support the Channel client cluster, ChangeChannel - command?" - id: CHANNEL.C.C00.Tx + # + # server / attributes + # + - label: "Does the device implement the PHYRate attribute?" + id: DGETH.S.A0000 - - label: - "Does the DUT support the Channel client cluster, - ChangeChannelByNumber command?" - id: CHANNEL.C.C02.Tx + - label: "Does the device implement the FullDuplex attribute?" + id: DGETH.S.A0001 - - label: - "Does the DUT support the Channel client cluster, SkipChannel command?" - id: CHANNEL.C.C03.Tx + - label: "Does the device implement the PacketRxCount attribute?" + id: DGETH.S.A0002 - - label: - "Does the DUT support the Application Launcher server cluster, - LaunchApp command?" - id: APPLAUNCHER.S.C00.Rsp + - label: "Does the device implement the PacketTxCount attribute?" + id: DGETH.S.A0003 - - label: - "Does the DUT support the Application Launcher server cluster, StopApp - command?" - id: APPLAUNCHER.S.C01.Rsp + - label: "Does the device implement the TxErrCount attribute?" + id: DGETH.S.A0004 + + - label: "Does the device implement the CollisionCount attribute?" + id: DGETH.S.A0005 + + - label: "Does the device implement the OverrunCount attribute?" + id: DGETH.S.A0006 + + - label: "Does the device implement the CarrierDetect attribute?" + id: DGETH.S.A0007 + + - label: "Does the device implement the TimeSinceReset attribute?" + id: DGETH.S.A0008 + # + # server / commandsReceived + # + - label: "Does the device implement the ResetCounts command?" + id: DGETH.S.C00.Rsp + + # + # server / features + # - label: - "Does the DUT support the Application Launcher server cluster, HideApp - command?" - id: APPLAUNCHER.S.C02.Rsp - #Bridge - - label: "Does the DUT implement a Bridge" - id: MCORE.BRIDGE + "Counts for the number of received and transmitted packets on the + ethernet interface." + id: DGETH.S.F00 - label: - "Does the DUT have information on battery level of (at least some of) - of its bridged devices" - id: MCORE.BRIDGE.BatInfo + "Counts for the number of errors during the reception and transmission + of packets on the ethernet interface." + id: DGETH.S.F01 + # + # client / attributes + # - label: - "Does the DUT have means to change the state of (at least some of) of - its bridged devices, e.g. through a manufacturer-provided app" - id: MCORE.BRIDGE.OtherControl + "Does the DUT(client) have access privileges for the PHYRate attribute + implemented on server?" + id: DGETH.C.A0000 - label: - "Does the DUT have means to change the name of (at least some of) of - its bridged devices, e.g. through a manufacturer-provided app" - id: MCORE.BRIDGE.AllowDeviceRename + "Does the DUT(client) have access privileges for the FullDuplex + attribute implemented on server?" + id: DGETH.C.A0001 - - label: "Does the DUT support to maintain a list of connected devices" - id: MCORE.DEVLIST.UseDevices + - label: + "Does the DUT(client) have access privileges for the PacketRxCount + attribute implemented on server?" + id: DGETH.C.A0002 - - label: "Does the DUT support to maintain the names of connected devices" - id: MCORE.DEVLIST.UseDeviceNames + - label: + "Does the DUT(client) have access privileges for the PacketTxCount + attribute implemented on server?" + id: DGETH.C.A0003 - - label: "Does the DUT support to maintain the state of connected devices" - id: MCORE.DEVLIST.UseDeviceState + - label: + "Does the DUT(client) have access privileges for the TxErrCount + attribute implemented on server?" + id: DGETH.C.A0004 - label: - "Does the DUT support maintaining information on battery level of - connected devices" - id: MCORE.DEVLIST.UseBatInfo + "Does the DUT(client) have access privileges for the CollisionCount + attribute implemented on server?" + id: DGETH.C.A0005 - #Bulk Data Exchange Protocol - - label: "Does the DUT control the rate of the BDX transfer ?" - id: MCORE.BDX.Driver + - label: + "Does the DUT(client) have access privileges for the OverrunCount + attribute implemented on server?" + id: DGETH.C.A0006 - - label: "Does the DUT support sending the BlockQueryWithSkip message?" - id: MCORE.BDX.BlockQueryWithSkip + - label: + "Does the DUT(client) have access privileges for the CarrierDetect + attribute implemented on server?" + id: DGETH.C.A0007 + + - label: + "Does the DUT(client) have access privileges for the TimeSinceReset + attribute implemented on server?" + id: DGETH.C.A0008 + + # + # client / commandsGenerated + # + - label: "Does the device implement the ResetCounts command?" + id: DGETH.C.C00.Tx + + # Fixed Label Cluster Test Plan + - label: "Does the device implement the Fixed Label cluster as a server?" + id: FLABEL.S + + - label: "Does the device implement the Fixed Label cluster as a client?" + id: FLABEL.C + + # + # server / attributes + # + - label: "Does the DUT(Server) support LabelList attribute?" + id: FLABEL.S.A0000 + + # + # client / attributes + # + - label: + "Does the DUT(client) have access privileges for the LabelList + attribute implemented on server?" + id: FLABEL.C.A0000 + + # Flow Measurement Cluster Test Plan + - label: + "Does the device implement the Flow Measurement cluster as a server?" + id: FLW.S + + - label: + "Does the device implement the Flow Measurement cluster as a client?" + id: FLW.C + + # + # server / attributes + # + - label: "Does the device implement the MeasuredValue attribute?" + id: FLW.S.A0000 + + - label: "Does the device implement the MinMeasuredValue attribute?" + id: FLW.S.A0001 + + - label: "Does the device implement the MaxMeasuredValue attribute?" + id: FLW.S.A0002 + + - label: "Does the device implement the Tolerance attribute?" + id: FLW.S.A0003 + + # + # server / manually + # + - label: + "Can the MeasuredValue attribute changed by physical control at the + device?" + id: FLW.M.FlowChange + + # + # client / manually + # + - label: "Read all supported optional attributes" + id: FLW.C.AO-READ + + - label: "Read all supported mandatory attribute" + id: FLW.C.AM-READ + + - label: "Write all supported mandatory attribute" + id: FLW.C.AM-WRITE + + - label: "Write all supported optional attributes" + id: FLW.C.AO-WRITE + + # General Commissioning Cluster Test Plan + - label: + "Does the device implement the General Commissioning Cluster cluster + as a server?" + id: CGEN.S + + - label: + "Does the device implement the General Commissioning Cluster cluster + as a client?" + id: CGEN.C + + # + # server / attributes + # + - label: "Does the device(Server) support Breadcrumb attribute?" + id: CGEN.S.A0000 + + - label: "Does the device(Server) support BasicCommissioningInfo attribute?" + id: CGEN.S.A0001 + + - label: "Does the device(Server) support RegulatoryConfig attribute?" + id: CGEN.S.A0002 + + - label: "Does the device(Server) support LocationCapability attribute?" + id: CGEN.S.A0003 + + - label: + "Does the device(Server) support SupportsConcurrentConnection + attribute?" + id: CGEN.S.A0004 + + # + # server / commandsReceived + # + - label: + "Does the Device(Server) implement receiving the ArmFailSafe command?" + id: CGEN.S.C00.Rsp + + - label: + "Does the Device(Server) implement receiving the SetRegulatoryConfig + command?" + id: CGEN.S.C02.Rsp + + - label: + "Does the Device(Server) implement receiving the CommissioningComplete + command?" + id: CGEN.S.C04.Rsp + + # + # server / commandsGenerated + # + - label: + "Does the Device(Server) invoking/generating the ArmFailSafeResponse + command?" + id: CGEN.S.C01.Tx + + - label: + "Does the Device(Server) invoking/generating the + SetRegulatoryConfigResponse command?" + id: CGEN.S.C03.Tx + + - label: + "Does the Device(Server) invoking/generating the + CommissioningCompleteResponse command?" + id: CGEN.S.C05.Tx - #General Diagnostics Cluster + # General Diagnostics Cluster Test Plan + - label: + "Does the device implement the General Diagnostics cluster as a + server?" + id: DGGEN.S + + - label: + "Does the device implement the General Diagnostics cluster as a + client?" + id: DGGEN.C + + # + # server / attributes + # - label: "Provides a node network interface information via NetworkInterface structure." @@ -2702,12 +3291,18 @@ PICS: - label: "Indicates a set of network fault detected by the node." id: DGGEN.S.A0007 - - label: "Does the device implement the TimeSinceReset attribute?" + - label: "Indicates that node is configured for test event triggers." id: DGGEN.S.A0008 + # + # server / commandsReceived + # - label: "Indicates that node is configured for test event triggers." id: DGGEN.S.C00.Rsp + # + # server / Events + # - label: "Indicates a change in the set of hardware faults currently detected by the Node." @@ -2726,2967 +3321,3969 @@ PICS: - label: "Indicates the reason that caused the device to reboot start-up." id: DGGEN.S.E03 - #Client + # + # client / attributes + # - label: - "Provides a node network interface information via NetworkInterface - structure." + "Does the DUT(client) have access privileges for the NetworkInterfaces + attribute implemented on server?" id: DGGEN.C.A0000 - label: - "The number of times that the node has rebooted. Node low power or - sleep state shall not be counted and the count shall be reset by the - factory reset." + "Does the DUT(client) have access privileges for the RebootCount + attribute implemented on server?" id: DGGEN.C.A0001 - label: - "The best effort assessment of the length of the time, in seconds, - since node’s last reboot. The UpTime should be incremented during - low-power or sleep state of the node. The UpTime shall be reset only - by a device reboot. The Uptime should not be subscribed." + "Does the DUT(client) have access privileges for the Uptime attribute + implemented on server?" id: DGGEN.C.A0002 - label: - "The best effort attempt to track the opeartional hours of node since - the node is operational. The operational hour should be incremented - during low-power or sleep state of the node. The TotalOperationalHours - shall be reset by the node factory reset." + "Does the DUT(client) have access privileges for the + TotalOperationalHours attribute implemented on server?" id: DGGEN.C.A0003 - - label: "Indicates the reason for the most recent node reboot." + - label: + "Does the DUT(client) have access privileges for the BootReason + attribute implemented on server?" id: DGGEN.C.A0004 - - label: "Indicates a set of hardware fault detected by the node." + - label: + "Does the DUT(client) have access privileges for the + ctiveHardwareFaults attribute implemented on server?" id: DGGEN.C.A0005 - - label: "Indicates a set of radio fault detected by the node." + - label: + "Does the DUT(client) have access privileges for the ActiveRadioFaults + attribute implemented on server?" id: DGGEN.C.A0006 - - label: "Indicates a set of network fault detected by the node." + - label: + "Does the DUT(client) have access privileges for the + ActiveNetworkFaults attribute implemented on server?" id: DGGEN.C.A0007 - - label: "Does the device implement the TimeSinceReset attribute?" + - label: + "Does the DUT(client) have access privileges for the + TestEventTriggersEnabled attribute implemented on server?" id: DGGEN.C.A0008 - - label: "Does the device implement the ResetCounts command?" + # + # client / commandsGenerated + # + - label: "Indicates that node is configured for test event triggers." id: DGGEN.C.C00.Tx + # Group Communication - label: - "Indicates a change in the set of hardware faults currently detected - by the Node." - id: DGGEN.C.E00 + "Does the device implement the Group Key Management cluster as a + server?" + id: GRPKEY.S - label: - "Indicates a change in the set of radio faults currently detected by - the Node." - id: DGGEN.C.E01 + "Does the device implement the Group Key Management cluster as a + client?" + id: GRPKEY.C + # + # client / attributes + # - label: - "Indicates a change in the set of network faults currently detected by - the Node." - id: DGGEN.C.E02 + "Does the DUT(client) have access privileges for the GroupKeyMap + attribute implemented on the server?" + id: GRPKEY.C.A0000 - - label: "Indicates the reason that caused the device to reboot start-up." - id: DGGEN.C.E03 + - label: + "Does the DUT(client) have access privileges for the GroupKeyTable + attribute implemented on the server?" + id: GRPKEY.C.A0001 - #Flow Measurement Cluster - - label: "Does the device implement the MeasuredValue attribute?" - id: FLW.S.A0000 + # + # client / commandsGenerated + # + - label: "Does the DUT(Client) implement sending Keysetwrite Command?" + id: GRPKEY.C.C00.Tx - - label: "Does the device implement the MinMeasuredValue attribute?" - id: FLW.S.A0001 + - label: "Does the DUT(Client) implement sending Keysetread Command?" + id: GRPKEY.C.C01.Tx - - label: "Does the device implement the MaxMeasuredValue attribute?" - id: FLW.S.A0002 + # Groups Cluster Test Plan + - label: "Does the device implement the Groups cluster as a server?" + id: G.S - - label: "Does the device implement the Tolerance attribute?" - id: FLW.S.A0003 + - label: "Does the device implement the Groups cluster as a client?" + id: G.C - - label: - "Can the MeasuredValue attribute changed by physical control at the - device?" - id: FLW.M.FlowChange + # + # server / attributes + # + - label: "Does the DUT(Server) support NameSupport attribute?" + id: G.S.A0000 - # Pump Configuration and Control cluster - - label: "Supports operating in constant pressure mode" - id: PCC.S.F00 + - label: "Does the DUT(Server) support GroupTable attribute?" + id: GRPKEY.S.A0001 - - label: "Supports operating in compensated pressure mode" - id: PCC.S.F01 + # + # server / commandsReceived + # + - label: "Does the DUT(server) implement receiving AddGroup Command?" + id: G.S.C00.Rsp - - label: "Supports operating in constant flow mode" - id: PCC.S.F02 + - label: "Does the DUT(server) implement receiving ViewGroup Command?" + id: G.S.C01.Rsp - - label: "Supports operating in constant speed mode" - id: PCC.S.F03 + - label: + "Does the DUT(server) implement receiving GetGroupMembership Command?" + id: G.S.C02.Rsp - - label: "Supports operating in constant temperature mode" - id: PCC.S.F04 + - label: "Does the DUT(server) implement receiving RemoveGroup Command?" + id: G.S.C03.Rsp - - label: "Supports operating in automatic mode" - id: PCC.S.F05 + - label: "Does the DUT(server) implement receiving RemoveAllGroups Command?" + id: G.S.C04.Rsp - - label: "Supports operating using local settings" - id: PCC.S.F06 + - label: + "Does the DUT(server) implement receiving AddGroupIfIdentifying + Command?" + id: G.S.C05.Rsp - - label: "Does the device implement the MaxPressure attribute?" - id: PCC.S.A0000 + # + # server / commandsGenerated + # + - label: + "Does the DUT(server) invoking/generating AddGroupResponse Command?" + id: G.S.C00.Tx - - label: "Does the device implement the MaxSpeed attribute?" - id: PCC.S.A0001 + - label: + "Does the DUT(server) invoking/generating ViewGroupResponse Command?" + id: G.S.C01.Tx - - label: "Does the device implement the MaxFlow attribute?" - id: PCC.S.A0002 + - label: + "Does the DUT(server) invoking/generating GetGroupMembershipResponse + Command?" + id: G.S.C02.Tx - - label: "Does the device implement the MinConstPressure attribute?" - id: PCC.S.A0003 + - label: + "Does the DUT(server) invoking/generating RemoveGroupResponse Command?" + id: G.S.C03.Tx - - label: "Does the device implement the MaxConstPressure attribute?" - id: PCC.S.A0004 + # + # server / features + # + - label: "Does the DUT(Server) support Group Names feature?" + id: G.S.F00 - - label: "Does the device implement the MinCompPressure attribute?" - id: PCC.S.A0005 + # + # client / attributes + # + - label: + "Does the DUT(client) have access privileges for the NameSupport + attribute implemented on server?" + id: G.C.A0000 - - label: "Does the device implement the MaxCompPressure attribute?" - id: PCC.S.A0006 + # + # client / commandsGenerated + # + - label: + "Does the DUT(client) implement invoking/generating AddGroup Command?" + id: G.C.C00.Tx - - label: "Does the device implement the MinConstSpeed attribute?" - id: PCC.S.A0007 + - label: + "Does the DUT(client) implement invoking/generating ViewGroup Command?" + id: G.C.C01.Tx - - label: "Does the device implement the MaxConstSpeed attribute?" - id: PCC.S.A0008 + - label: + "Does the DUT(client) implement invoking/generating GetGroupMembership + Command?" + id: G.C.C02.Tx - - label: "Does the device implement the MinConstFlow attribute?" - id: PCC.S.A0009 + - label: + "Does the DUT(client) implement invoking/generating RemoveGroup + Command?" + id: G.C.C03.Tx - - label: "Does the device implement the MaxConstFlow attribute?" - id: PCC.S.A000a + - label: + "Does the DUT(client) implement invoking/generating RemoveAllGroups + Command?" + id: G.C.C04.Tx - - label: "Does the device implement the MinConstTemp attribute?" - id: PCC.S.A000b + - label: + "Does the DUT(client) implement invoking/generating + AddGroupIfIdentifying Command?" + id: G.C.C05.Tx - - label: "Does the device implement the MaxConstTemp attribute?" - id: PCC.S.A000c + # Identify Cluster Test Plan + - label: "Does the device implement the Identify cluster as a server?" + id: I.S - - label: "Does the device implement the PumpStatus attribute?" - id: PCC.S.A0010 + - label: "Does the device implement the Identify cluster as a client?" + id: I.C - - label: "Does the device implement the EffectiveOperationMode attribute?" - id: PCC.S.A0011 + # + # server / attributes + # + - label: "Does the device implement the IdentifyTime attribute?" + id: I.S.A0000 - - label: "Does the device implement the EffectiveControlMode attribute?" - id: PCC.S.A0012 + - label: "Does the device implement the IdentifyType attribute?" + id: I.S.A0001 - - label: "Does the device implement the Capacity attribute?" - id: PCC.S.A0013 + # + # server / commandsReceived + # + - label: "Does the device implement receiving the Identify command?" + id: I.S.C00.Rsp - - label: "Does the device implement the Speed attribute?" - id: PCC.S.A0014 + - label: "Does the device implement receiving the IdentifyQuery command?" + id: I.S.C01.Rsp - - label: "Does the device implement the LifetimeRunningHours attribute?" - id: PCC.S.A0015 + - label: "Does the device implement receiving the TriggerEffect command?" + id: I.S.C40.Rsp - - label: "Does the device implement the Power attribute?" - id: PCC.S.A0016 + # + # server / commandsGenerated + # + - label: + "Does the device implement sending the IdentifyQueryResponse command?" + id: I.S.C00.Tx - - label: "Does the device implement the LifetimeEnergyConsumed attribute?" - id: PCC.S.A0017 + # + # server / features + # + - label: "Supports multicast query for identification state" + id: I.S.F00 - - label: "Does the device implement the OperationMode attribute?" - id: PCC.S.A0020 + # + # client / commandsReceived + # + - label: + "Does the device implement receiving the IdentifyQueryResponse + command?" + id: I.C.C00.Rsp - - label: "Does the device implement the LifetimeEnergyConsumed attribute?" - id: PCC.S.A0021 + # + # client / commandsGenerated + # + - label: "Does the device implement sending the Identify command?" + id: I.C.C00.Tx - #Power Source Cluster - - label: "Does the device implement the Status attribute?" - id: PS.S.A0000 + - label: "Does the device implement sending the IdentifyQuery command?" + id: I.C.C01.Tx - - label: "Does the device implement the Order attribute?" - id: PS.S.A0001 + - label: "Does the device implement sending the TriggerEffect command?" + id: I.C.C40.Tx - - label: "Does the device implement the Description attribute?" - id: PS.S.A0002 + # + # client / manually + # + - label: "Write all supported optional attributes" + id: I.C.AO-WRITE + + - label: "Write all supported mandatory attribute" + id: I.C.AM-WRITE + - label: "Read all supported optional attributes" + id: I.C.AO-READ + + - label: "Read all supported mandatory attribute" + id: I.C.AM-READ + + # Illuminance Measurement Cluster Test Plan - label: - "Does the device implement the WiredAssessedInputVoltage attribute?" - id: PS.S.A0003 + "Does the device implement the Illuminance Measurement cluster as a + server?" + id: ILL.S - label: - "Does the device implement the WiredAssessedInputFrequency attribute?" - id: PS.S.A0004 + "Does the device implement the Illuminance Measurement cluster as a + client?" + id: ILL.C - - label: "Does the device implement the WiredCurrentType attribute?" - id: PS.S.A0005 + # + # server / attributes + # + - label: "Does the device implement the MeasuredValue attribute?" + id: ILL.S.A0000 - - label: "Does the device implement the WiredAssessedCurrent attribute?" - id: PS.S.A0006 + - label: "Does the device implement the MinMeasuredValue attribute?" + id: ILL.S.A0001 - - label: "Does the device implement the WiredNominalVoltage attribute?" - id: PS.S.A0007 + - label: "Does the device implement the MaxMeasuredValue attribute?" + id: ILL.S.A0002 - - label: "Does the device implement the WiredMaximumCurrent attribute?" - id: PS.S.A0008 + - label: "Does the device implement the Tolerance attribute?" + id: ILL.S.A0003 - - label: "Does the device implement the WiredPresent attribute?" - id: PS.S.A0009 + - label: "Does the device implement the LightSensorType attribute?" + id: ILL.S.A0004 - - label: "Does the device implement the ActiveWiredFaults attribute?" - id: PS.S.A000a + # + # client / manually + # + - label: "Write all supported optional attributes" + id: ILL.C.AO-WRITE - - label: "Does the device implement the BatVoltage attribute?" - id: PS.S.A000b + - label: "Write all supported mandatory attribute" + id: ILL.C.AM-WRITE - - label: "Does the device implement the BatPercentRemaining attribute?" - id: PS.S.A000c + - label: "Read all supported mandatory attribute" + id: ILL.C.AM-READ - - label: "Does the device implement the BatTimeRemaining attribute?" - id: PS.S.A000d + - label: "Read all supported optional attributes" + id: ILL.C.AO-READ - - label: "Does the device implement the BatChargeLevel attribute?" - id: PS.S.A000e + # Level Control Cluster Test Plan + - label: "Does the device implement the Level Control cluster as a server?" + id: LVL.S - - label: "Does the device implement the BatReplacementNeeded attribute?" - id: PS.S.A000f + - label: "Does the device implement the Level Control cluster as a client?" + id: LVL.C - - label: "Does the device implement the BatReplaceability attribute?" - id: PS.S.A0010 + # + # server / attributes + # + - label: "Does the DUT(server) support the CurrentLevel attribute?" + id: LVL.S.A0000 - - label: "Does the device implement the BatPresent attribute?" - id: PS.S.A0011 + - label: "Does the DUT(server) support the RemainingTime attribute?" + id: LVL.S.A0001 - - label: "Does the device implement the ActiveBatFaults attribute?" - id: PS.S.A0012 + - label: "Does the DUT(server) support the MinLevel attribute?" + id: LVL.S.A0002 - - label: - "Does the device implement the BatReplacementDescription attribute?" - id: PS.S.A0013 + - label: "Does the DUT(server) support the MaxLevel attribute?" + id: LVL.S.A0003 - - label: "Does the device implement the BatCommonDesignation attribute?" - id: PS.S.A0014 + - label: "Does the DUT(server) support the CurrentFrequency attribute?" + id: LVL.S.A0004 - - label: "Does the device implement the BatANSIDesignation attribute?" - id: PS.S.A0015 + - label: "Does the DUT(server) support the MinFrequency attribute?" + id: LVL.S.A0005 - - label: "Does the device implement the BatIECDesignation attribute?" - id: PS.S.A0016 + - label: "Does the DUT(server) support the MaxFrequency attribute?" + id: LVL.S.A0006 - - label: "Does the device implement the BatApprovedChemistry attribute?" - id: PS.S.A0017 + - label: "Does the DUT(server) support the Options attribute?" + id: LVL.S.A000f - - label: "Does the device implement the BatCapacity attribute?" - id: PS.S.A0018 + - label: "Does the DUT(server) support the OnOffTransitionTime attribute?" + id: LVL.S.A0010 - - label: "Does the device implement the BatQuantity attribute?" - id: PS.S.A0019 + - label: "Does the DUT(server) support the OnLevel attribute?" + id: LVL.S.A0011 - - label: "Does the device implement the BatChargeState attribute?" - id: PS.S.A001a + - label: "Does the DUT(server) support the OnTransitionTime attribute?" + id: LVL.S.A0012 - - label: "Does the device implement the BatTimeToFullCharge attribute?" - id: PS.S.A001b + - label: "Does the DUT(server) support the OffTransitionTime attribute?" + id: LVL.S.A0013 - - label: - "Does the device implement the BatFunctionalWhileCharging attribute?" - id: PS.S.A001c + - label: "Does the DUT(server) support the DefaultMoveRate attribute?" + id: LVL.S.A0014 - - label: "Does the device implement the BatChargingCurrent attribute?" - id: PS.S.A001d + - label: "Does the DUT(server) support the StartUpCurrentLevel attribute?" + id: LVL.S.A4000 - - label: "Does the device implement the ActiveBatChargeFaults attribute?" - id: PS.S.A001e + # + # server / commandsReceived + # + - label: "Does the DUT(server) support the MoveToLevel command?" + id: LVL.S.C00.Rsp - - label: "Does the device implement the WiredFaultChange event?" - id: PS.S.E00 + - label: "Does the DUT(server) support the Move command?" + id: LVL.S.C01.Rsp - - label: "Does the device implement the BatFaultChange event?" - id: PS.S.E01 + - label: "Does the DUT(server) support the Step command?" + id: LVL.S.C02.Rsp - - label: "Does the device implement the BatChargeFaultChange event?" - id: PS.S.E02 + - label: "Does the DUT(server) support the Stop command?" + id: LVL.S.C03.Rsp - - label: "A wired power source" - id: PS.S.F00 + - label: "Does the DUT(server) support the MoveToLevel with On/Off command?" + id: LVL.S.C04.Rsp - - label: "A battery power source" - id: PS.S.F01 + - label: "Does the DUT(server) support the Move with On/Off command?" + id: LVL.S.C05.Rsp - - label: "A rechargeable battery power source (requires Battery feature)" - id: PS.S.F02 + - label: "Does the DUT(server) support the Step with On/Off command?" + id: LVL.S.C06.Rsp - - label: "A replaceable battery power source (requires Battery feature)" - id: PS.S.F03 + - label: "Does the DUT(server) support the Stop with On/Off command?" + id: LVL.S.C07.Rsp - - label: "Can the DUT be brought into a Wired Fault state?" - id: PS.M.ManualWiredFault + - label: "Does the DUT(server) support the MoveToClosestFrequency command?" + id: LVL.S.C08.Rsp - - label: "Can the DUT be brought into a Battery Fault state?" - id: PS.M.ManualBatFault + # + # server / features + # + - label: + "Does the DUT(server) support the Dependency with the On/Off cluster + feature?" + id: LVL.S.F00 - - label: "Can the DUT be brought into a Battery Charge Fault state?" - id: PS.M.ManualBatChargeFault + - label: + "Does the DUT(server) support the Behavior that supports lighting + applications feature?" + id: LVL.S.F01 + + - label: + "Does the DUT(server) support the Frequency attributes and behavior + feature?" + id: LVL.S.F02 + + # + # server / manually + # + - label: "Is the DUT(server) able to move at a variable rate feature?" + id: LVL.S.M.VarRate + + # + # client / manually + # + - label: "Write all supported mandatory attribute" + id: LVL.C.AM-WRITE + + - label: "Read all supported mandatory attribute" + id: LVL.C.AM-READ + + - label: "Read all supported optional attributes" + id: LVL.C.AO-READ + + - label: "Write all supported optional attributes" + id: LVL.C.AO-WRITE + + # Localization Configuration Cluster Test Plan + - label: + "Does the device implement the Localization Configuration cluster as a + server?" + id: LCFG.S + + - label: + "Does the device implement the Localization Configuration cluster as a + client?" + id: LCFG.C + + # + # server / attributes + # + - label: "Does the DUT(server) support the ActiveLocale attribute?" + id: LCFG.S.A0000 + + - label: "Does the DUT(server) support the SupportedLocales attribute?" + id: LCFG.S.A0001 + + # + # client / attributes + # + - label: + "Does the DUT(client) have access privileges for the ActiveLocale + attribute implemented on server?" + id: LCFG.C.A0000 + + - label: + "Does the DUT(client) have access privileges for the SupportedLocales + attribute implemented on server?" + id: LCFG.C.A0001 + + # Media Cluster Test Plan + - label: "Does the device implement the casting video player as a server?" + id: MC.S + + - label: "Does the device implement the casting video player as a client?" + id: MC.C + + - label: "Does the device implement the Low Power cluster as a server?" + id: LOWPOWER.S + + - label: "Does the device implement the Low Power cluster as a client?" + id: LOWPOWER.C + + - label: "Does the device implement the Wake On LAN cluster as a server?" + id: WAKEONLAN.S + + - label: "Does the device implement the Wake On LAN cluster as a client?" + id: WAKEONLAN.C + + - label: "Does the device implement the Keypad Input cluster as a server?" + id: KEYPADINPUT.S + + - label: "Does the device implement the Keypad Input cluster as a client?" + id: KEYPADINPUT.C + + - label: + "Does the device implement the Application Launcher cluster as a + server?" + id: APPLAUNCHER.S + + - label: + "Does the device implement the Application Launcher cluster as a + client?" + id: APPLAUNCHER.C + + - label: "Does the device implement the Media Input cluster as a server?" + id: MEDIAINPUT.S + + - label: "Does the device implement the Media Input cluster as a client?" + id: MEDIAINPUT.C + + - label: "Does the device implement the Channel cluster as a server?" + id: CHANNEL.S + + - label: "Does the device implement the Channel cluster as a client?" + id: CHANNEL.C + + - label: "Does the device implement the Media Playback cluster as a server?" + id: MEDIAPLAYBACK.S + + - label: "Does the device implement the Media Playback cluster as a client?" + id: MEDIAPLAYBACK.C + + - label: "Does the device implement the Audio Output cluster as a server?" + id: AUDIOOUTPUT.S + + - label: "Does the device implement the Audio Output cluster as a client?" + id: AUDIOOUTPUT.C + + - label: + "Does the device implement the Target Navigator cluster as a server?" + id: TGTNAV.S + + - label: + "Does the device implement the Target Navigator cluster as a client?" + id: TGTNAV.C + + - label: + "Does the device implement the Application Basic cluster as a server?" + id: APBSC.S + + - label: + "Does the device implement the Application Basic cluster as a client?" + id: APBSC.C + + - label: + "Does the device implement the Content Launcher cluster as a server?" + id: CONTENTLAUNCHER.S + + - label: + "Does the device implement the Content Launcher cluster as a client?" + id: CONTENTLAUNCHER.C + + - label: "Does the device implement the Account Login cluster as a server?" + id: ALOGIN.S + + - label: "Does the device implement the Account Login cluster as a client?" + id: ALOGIN.C + + - label: + "Does the DUT support the Content Launcher server cluster, Content + Search feature?" + id: CONTENTLAUNCHER.S.CS + + # + # server / attributes + # + - label: + "Does the DUT support the Application Launcher server cluster, + Application Platform feature?" + id: APPLAUNCHER.S.AP + + - label: + "Does the DUT support the Media Playback server cluster, Advanced Seek + feature?" + id: MEDIAPLAYBACK.S.AS + + - label: + "Does the DUT support the Wake On LAN server cluster, MACAddress + attribute?" + id: WAKEONLAN.S.A0000 + + - label: + "Does the DUT support the Application Launcher server cluster, + CatalogList attribute?" + id: APPLAUNCHER.S.A0000 + + - label: + "Does the DUT support the Application Launcher server cluster, + CurrentApp attribute?" + id: APPLAUNCHER.S.A0001 + + - label: + "Does the DUT support the Media Input server cluster, InputList + attribute?" + id: MEDIAINPUT.S.A0000 + + - label: + "Does the DUT support the Media Input server cluster, CurrentInput + attribute?" + id: MEDIAINPUT.S.A0001 + + - label: + "Does the DUT support the Channel server cluster, ChannelList + attribute?" + id: CHANNEL.S.A0000 + + - label: + "Does the DUT support the Channel server cluster, Lineup attribute?" + id: CHANNEL.S.A0001 + + - label: + "Does the DUT support the Channel server cluster, CurrentChannel + attribute?" + id: CHANNEL.S.A0002 + + - label: + "Does the DUT support the Media Playback server cluster, _ + CurrentState_ attribute?" + id: MEDIAPLAYBACK.S.A0000 + + - label: + "Does the DUT support the Media Playback server cluster, StartTime + attribute?" + id: MEDIAPLAYBACK.S.A0001 + + - label: + "Does the DUT support the Media Playback server cluster, Duration + attribute?" + id: MEDIAPLAYBACK.S.A0002 + + - label: + "Does the DUT support the Media Playback server cluster, + SampledPosition attribute?" + id: MEDIAPLAYBACK.S.A0003 + + - label: + "Does the DUT support the Media Playback server cluster, PlaybackSpeed + attribute?" + id: MEDIAPLAYBACK.S.A0004 + + - label: + "Does the DUT support the Media Playback server cluster, SeekRangeEnd + attribute?" + id: MEDIAPLAYBACK.S.A0005 + + - label: + "Does the DUT support the Media Playback server cluster, + SeekRangeStart attribute?" + id: MEDIAPLAYBACK.S.A0006 + + - label: + "Does the DUT support the Audio Output server cluster, OutputList + attribute?" + id: AUDIOOUTPUT.S.A0000 + + - label: + "Does the DUT support the Audio Output server cluster, CurrentOutput + attribute?" + id: AUDIOOUTPUT.S.A0001 + + - label: + "Does the DUT support the Target Navigator server cluster, TargetList + attribute?" + id: TGTNAV.S.A0000 + + - label: + "Does the DUT support the Target Navigator server cluster, + CurrentTarget attribute?" + id: TGTNAV.S.A0001 + + - label: + "Does the DUT support the Application Basic server cluster, VendorName + attribute?" + id: APBSC.S.A0000 + + - label: + "Does the DUT support the Application Basic server cluster, VendorID + attribute?" + id: APBSC.S.A0001 + + - label: + "Does the DUT support the Application Basic server cluster, + ApplicationName attribute?" + id: APBSC.S.A0002 + + - label: + "Does the DUT support the Application Basic server cluster, ProductID + attribute?" + id: APBSC.S.A0003 + + - label: + "Does the DUT support the Application Basic server cluster, + Application attribute?" + id: APBSC.S.A0004 + + - label: + "Does the DUT support the Application Basic server cluster, Status + attribute?" + id: APBSC.S.A0005 + + - label: + "Does the DUT support the Application Basic server cluster, + ApplicationVersion attribute?" + id: APBSC.S.A0006 + + - label: + "Does the DUT support the Application Basic server cluster, + AllowedVendorList attribute?" + id: APBSC.S.A0007 + + - label: + "Does the DUT support the Content Launcher server cluster, + AcceptHeader attribute?" + id: CONTENTLAUNCHER.S.A0000 + + - label: + "Does the DUT support the Content Launcher server cluster, + SupportedStreamingProtocols attribute?" + id: CONTENTLAUNCHER.S.A0001 + + # + # server / commandsReceived + # + - label: "Does the DUT support the Low Power server cluster, Sleep command?" + id: LOWPOWER.S.C00.Rsp + + - label: + "Does the DUT support the Keypad Input server cluster, SendKey + command?" + id: KEYPADINPUT.S.C00.Rsp + + - label: + "Does the DUT support the Application Launcher server cluster, + LaunchApp command?" + id: APPLAUNCHER.S.C00.Rsp + + - label: + "Does the DUT support the Application Launcher server cluster, StopApp + command?" + id: APPLAUNCHER.S.C01.Rsp + + - label: + "Does the DUT support the Application Launcher server cluster, HideApp + command?" + id: APPLAUNCHER.S.C02.Rsp + + - label: + "Does the DUT support the Media Input server cluster, SelectInput + command?" + id: MEDIAINPUT.S.C00.Rsp + + - label: + "Does the DUT support the Media Input server cluster, ShowStatus + command?" + id: MEDIAINPUT.S.C01.Rsp + + - label: + "Does the DUT support the Media Input server cluster, HideStatus + command?" + id: MEDIAINPUT.S.C02.Rsp + + - label: + "Does the DUT support the Media Input server cluster, Rename command?" + id: MEDIAINPUT.S.C03.Rsp + + - label: + "Does the DUT support the Channel server cluster, ChangeChannel + command?" + id: CHANNEL.S.C00.Rsp + + - label: + "Does the DUT support the Channel server cluster, + ChangeChannelByNumber command?" + id: CHANNEL.S.C02.Rsp + + - label: + "Does the DUT support the Channel server cluster, SkipChannel command?" + id: CHANNEL.S.C03.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, Play command?" + id: MEDIAPLAYBACK.S.C00.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, Pause + command?" + id: MEDIAPLAYBACK.S.C01.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, Stop command?" + id: MEDIAPLAYBACK.S.C02.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, StartOver + command?" + id: MEDIAPLAYBACK.S.C03.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, Previous + command?" + id: MEDIAPLAYBACK.S.C04.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, Next command?" + id: MEDIAPLAYBACK.S.C05.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, Rewind + command?" + id: MEDIAPLAYBACK.S.C06.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, FastForward + command?" + id: MEDIAPLAYBACK.S.C07.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, SkipForward + command?" + id: MEDIAPLAYBACK.S.C08.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, SkipBackward + command?" + id: MEDIAPLAYBACK.S.C09.Rsp + + - label: + "Does the DUT support the Media Playback server cluster, Seek command?" + id: MEDIAPLAYBACK.S.C0b.Rsp + + - label: + "Does the DUT support the Audio Output server cluster, SelectOutput + command?" + id: AUDIOOUTPUT.S.C00.Rsp + + - label: + "Does the DUT support the Audio Output server cluster, RenameOutput + command?" + id: AUDIOOUTPUT.S.C01.Rsp + + - label: + "Does the DUT support the Target Navigator server cluster, + NavigateTarget command?" + id: TGTNAV.S.C00.Rsp + + - label: + "Does the DUT support the Content Launcher server cluster, + LaunchContent command?" + id: CONTENTLAUNCHER.S.C00.Rsp + + - label: + "Does the DUT support the Content Launcher server cluster, LaunchURL + command?" + id: CONTENTLAUNCHER.S.C01.Rsp + + - label: + "Does the DUT support the Account Login server cluster, GetSetupPIN + command?" + id: ALOGIN.S.C00.Rsp + + - label: + "Does the DUT support the Account Login server cluster, Login command?" + id: ALOGIN.S.C02.Rsp + + - label: + "Does the DUT support the Account Login server cluster, Logout + command?" + id: ALOGIN.S.C03.Rsp + + # + # server / features + # + - label: + "Does the DUT support the Keypad Input server cluster, Navigation + Keys?" + id: KEYPADINPUT.S.NV + + - label: + "Does the DUT support the Keypad Input server cluster, Location Keys?" + id: KEYPADINPUT.S.LK + + - label: + "Does the DUT support the Keypad Input server cluster, Number Keys?" + id: KEYPADINPUT.S.NK + + - label: + "Does the DUT support the Media Input server cluster, Name Updates + feature?" + id: MEDIAINPUT.S.NU + + - label: + "Does the DUT support the Channel server cluster, Channel List + feature?" + id: CHANNEL.S.CL + + - label: + "Does the DUT support the Channel server cluster, Lineup Info feature?" + id: CHANNEL.S.LI + + - label: + "Does the DUT support the Media Playback server cluster, Variable + Speed feature?" + id: MEDIAPLAYBACK.S.VS + + - label: + "Does the DUT support the Audio Ouput server cluster, Name Updates + feature?" + id: AUDIOOUTPUT.S.NU + + - label: + "Does the DUT support the Content Launcher server cluster, URL + Playback feature?" + id: CONTENTLAUNCHER.S.UP + + - label: + "Does the DUT support the Content Launcher server cluster and is + Commissionable?" + id: ALOGIN.S.COMMISSIONABLE + + - label: + "Does the DUT support the commissioning procedure initiated by a + commissionee using User Directed Commissioning?" + id: MC.S.UDC + + - label: + "Does the DUT support the commissioning procedure initiated by a + commissionee using User Directed Commissioning without PIN code entry?" + id: MC.S.UDCLOGIN + + # + # client / commandsGenerated + # + - label: "Does the DUT support the Low Power client cluster, Sleep command?" + id: LOWPOWER.C.C00.Tx - #Thermostat User Configuration Cluster - - label: "Does the device implement the TemperatureDisplayMode attribute?" - id: TSUIC.S.A0000 + - label: + "Does the DUT support the Keypad Input client cluster, SendKey + command?" + id: KEYPADINPUT.C.C00.Tx - - label: "Does the device implement the KeypadLockout attribute?" - id: TSUIC.S.A0001 + - label: + "Does the DUT support the Application Launcher client cluster, + LaunchApp command?" + id: APPLAUNCHER.C.C00.Tx - label: - "Does the device implement the ScheduleProgrammingVisibility - attribute?" - id: TSUIC.S.A0002 - #Binding Cluster - - label: "Does the DUT(server) support the Binding attribute?" - id: BIND.S.A0000 + "Does the DUT support the Application Launcher client cluster, StopApp + command?" + id: APPLAUNCHER.C.C01.Tx - - label: "Does the DUT(client) implement the GroupKeyMap attribute?" - id: GRPKEY.C.A0000 + - label: + "Does the DUT support the Application Launcher client cluster, HideApp + command?" + id: APPLAUNCHER.C.C02.Tx - - label: "Does the DUT(client) implement sending the Off command?" - id: OO.C.C00.Tx + - label: + "Does the DUT support the Media Input client cluster, SelectInput + command?" + id: MEDIAINPUT.C.C00.Tx - - label: "Does the DUT(client) implement sending the On command?" - id: OO.C.C01.Tx + - label: + "Does the DUT support the Media Input client cluster, ShowStatus + command?" + id: MEDIAINPUT.C.C01.Tx - - label: "Does the DUT(Client) implement sending Keysetwrite command?" - id: GRPKEY.C.C00.Tx + - label: + "Does the DUT support the Media Input client cluster, HideStatus + command?" + id: MEDIAINPUT.C.C02.Tx - - label: "Does the DUT(Client) implement sending Keysetread Command?" - id: GRPKEY.C.C01.Tx + - label: + "Does the DUT support the Media Input server cluster, Rename command?" + id: MEDIAINPUT.C.C03.Tx - - label: "Does the DUT(Client) implement sending AddGroup command?" - id: G.C.C00.Tx + - label: + "Does the DUT support the Channel client cluster, ChangeChannel + command?" + id: CHANNEL.C.C00.Tx - #Device Discovery - label: - "Does the device support discovery over Bluetooth Low Energy (BLE)?" - id: MCORE.DD.BLE + "Does the DUT support the Channel client cluster, + ChangeChannelByNumber command?" + id: CHANNEL.C.C02.Tx - - label: "Does the device support discovery over WiFi?" - id: MCORE.DD.WIFI + - label: + "Does the DUT support the Channel client cluster, SkipChannel command?" + id: CHANNEL.C.C03.Tx - - label: "Does the device only function within a Matter network?" - id: MCORE.DD.CHIP_DEV + - label: + "Does the DUT support the Media Playback client cluster, Play command?" + id: MEDIAPLAYBACK.C.C00.Tx - - label: "Is the device a lock device?" - id: MCORE.DD.DEV_LOCK + - label: + "Does the DUT support the Media Playback client cluster, Pause + command?" + id: MEDIAPLAYBACK.C.C01.Tx - - label: "Is the device a barrier access device?" - id: MCORE.DD.DEV_BARRIER + - label: + "Does the DUT support the Media Playback client cluster, Stop command?" + id: MEDIAPLAYBACK.C.C02.Tx - label: - "Does the device or device packaging have a QR code based onboarding - payload?" - id: MCORE.DD.QR + "Does the DUT support the Media Playback client cluster, StartOver + command?" + id: MEDIAPLAYBACK.C.C03.Tx - - label: "Does the device or device packaging have a Manual Pairing Code?" - id: MCORE.DD.MANUAL_PC + - label: + "Does the DUT support the Media Playback client cluster, Previous + command?" + id: MEDIAPLAYBACK.C.C04.Tx - - label: "Does the packed binary data structure contain encoded TLV Data?" - id: MCORE.DD.TLV + - label: + "Does the DUT support the Media Playback client cluster, Next command?" + id: MEDIAPLAYBACK.C.C05.Tx - label: - "Does the QR code contain multiple concatenated onboarding payloads?" - id: MCORE.DD.CONCAT + "Does the DUT support the Media Playback client cluster, Rewind + command?" + id: MEDIAPLAYBACK.C.C06.Tx - - label: "Does the device have a NFC tag containing the onboarding payload?" - id: MCORE.DD.NFC + - label: + "Does the DUT support the Media Playback client cluster, FastForward + command?" + id: MEDIAPLAYBACK.C.C07.Tx - - label: "Does the device support dynamic passcodes?" - id: MCORE.DD.PASSCODE + - label: + "Does the DUT support the Media Playback client cluster, SkipForward + command?" + id: MEDIAPLAYBACK.C.C08.Tx - - label: "Does the device support user interface?" - id: MCORE.DD.UI + - label: + "Does the DUT support the Media Playback client cluster, SkipBackward + command?" + id: MEDIAPLAYBACK.C.C09.Tx - - label: "Does the device support Commissioner Discovery?" - id: MCORE.DD.COMM_DISCOVERY + - label: + "Does the DUT support the Media Playback client cluster, Seek command?" + id: MEDIAPLAYBACK.C.C0b.Tx - - label: "Is the DUT a Controller?" - id: MCORE.DD.CONTROLLER + - label: + "Does the DUT support the Audio Output client cluster, SelectOutput + command?" + id: AUDIOOUTPUT.C.C00.Tx - label: - "Does the commissioner support processing devices in the order as - indicated in the concatenated QR codes?" - id: MCORE.DD.CTRL_CONCATENATED_QR_CODE_1_INORDER + "Does the DUT support the Audio Output client cluster, RenameOutput + command?" + id: AUDIOOUTPUT.C.C01.Tx - - label: "Does the DUT support scanning concatenated QR codes?" - id: MCORE.DD.CTRL_CONCATENATED_QR_CODE_1 + - label: + "Does the DUT support the Target Navigator client cluster, + NavigateTarget command?" + id: TGTNAV.C.C00.Tx - label: - "Does the DUT support indicating to user the need to commission device - one by one for concatenated QR codes?" - id: MCORE.DD.CTRL_CONCATENATED_QR_CODE_2 + "Does the DUT support the Content Launcher client cluster, + LaunchContent command?" + id: CONTENTLAUNCHER.C.C00.Tx - - label: "Is the DUT a Commissioner?" - id: MCORE.DD.COMMISSIONER + - label: + "Does the DUT support the Content Launcher client cluster, LaunchURL + command?" + id: CONTENTLAUNCHER.C.C01.Tx - - label: "Does the DUT require a custom commissioning flow?" - id: MCORE.DD.CUSTOM_COMM_FLOW + - label: + "Does the DUT support the Account Login client cluster, GetSetupPIN + command?" + id: ALOGIN.C.C00.Tx - - label: "Does the DUT support Discovery Capability over BLE?" - id: MCORE.DD.DT_BLE + # Mode Select Cluster Test Plan + - label: "Does the device implement the Actions cluster as a server?" + id: MOD.S - - label: "Is the DUT a Controller?" - id: MCORE.DD.CONTROLLER + - label: "Does the device implement the Actions cluster as a client?" + id: MOD.C - - label: "Does the DUT support Discovery Capability over IP Network?" - id: MCORE.DD.DISCOVERY_IP + # + # server / attributes + # + - label: "Does the DUT support the Description attribute?" + id: MOD.S.A0000 - - label: "Does the DUT support Discovery Capability over SoftAP?" - id: MCORE.DD.DISCOVERY_SOFTAP + - label: "Does the DUT support the StandardNamespace attribute?" + id: MOD.S.A0001 - - label: "Does the DUT support Standard Commissioning Flow?" - id: MCORE.DD.STANDARD_COMM_FLOW + - label: "Does the DUT support the SupportedModes attribute?" + id: MOD.S.A0002 - - label: "Does the DUT support User-Intent Commissioning Flow?" - id: MCORE.DD.USER_INTENT_COMM_FLOW + - label: "Does the DUT support the CurrentMode attribute?" + id: MOD.S.A0003 - - label: "Does the DUT support Custom Commissioning Flow?" - id: MCORE.DD.CUSTOM_COMM_FLOW + - label: "Does the DUT support the StartUpMode attribute?" + id: MOD.S.A0004 - - label: - "Does the DUT commissioner support accepting an 11-digit Manual - Pairing Code for commissioning?" - id: MCORE.DD.11_MANUAL_PC + - label: "Does the DUT support the OnMode attribute?" + id: MOD.S.A0005 - - label: - "Does the DUT commissioner support accepting a 21-digit Manual Pairing - Code for commissioning?" - id: MCORE.DD.21_MANUAL_PC + # + # server / commandsReceived + # + - label: "Does the DUT support receiving the ChangeToMode command?" + id: MOD.S.C00.Rsp + # + # server / features + # - label: - "Does the device is subject to physical tampering (doorbell, camera, - door lock, designed for outdoor usage)?" - id: MCORE.DD.PHYSICAL_TAMPERING + "Does the Mode Select Cluster depend on an On/Off cluster implemented + on the same DUT?" + id: MOD.S.F00 + # + # client / attributes + # - label: - "Does the device support scanning NFC tags containing the onboarding - payload?" - id: MCORE.DD.SCAN_NFC + "Does the DUT(client) have access privileges for the SupportedModes + attribute implemented on server?" + id: MOD.C.A0002 - - label: - "Does the DUT support scanning QR codes containing the onboarding - payload?" - id: MCORE.DD.SCAN_QR_CODE + # + # client / commandsGenerated + # + - label: "Does the DUT support sending the ChangeToMode command?" + id: MOD.C.C00.Tx - - label: "Does the device support Thread interface?" - id: MCORE.DD.THREAD + # + # client / manually + # + - label: "Read all supported mandatory attribute" + id: MOD.C.AM-READ - - label: "Does the device support Wifi or Thread interfaces?" - id: MCORE.DD.WIRELESS + - label: "Write all supported optional attributes" + id: MOD.C.AO-WRITE - - label: - "Does the device support Wi-Fi or Thread interfaces communication ?" - id: MCORE.COM.WIRELESS + - label: "Write all supported mandatory attribute" + id: MOD.C.AM-WRITE - - label: - "Does the device support communication over Bluetooth Low Energy (BLE) - ?" - id: MCORE.COM.BLE + - label: "Read all supported optional attributes" + id: MOD.C.AO-READ - - label: "Does the device support communication over Wi-Fi ?" - id: MCORE.COM.WIFI + # Multiple Fabrics Test Plan + - label: "Does the Device implement the Multi Fabric cluster as a server?" + id: CADMIN.S - - label: "Does the device support communication over Ethernet ?" - id: MCORE.COM.ETH + - label: "Does the Device implement the Multi Fabric cluster as a client?" + id: CADMIN.C - - label: "Does the device support communication over Thread ?" - id: MCORE.COM.THR + # + # server / attributes + # + - label: "Does the Device support WindowStatus attribute?" + id: CADMIN.S.A0000 - - label: - "Does the device support TXT Key 'VP' (Vendor ID / Product ID) in it’s - DNS-SD TXT Records for Commissionable Node Discovery?" - id: MCORE.DD.TXT_KEY_VP + - label: "Does the Device support AdminFabricIndex attribute?" + id: CADMIN.S.A0001 - - label: - "Does the device support TXT Key 'DT' (Device Type) in it’s DNS-SD TXT - Records for Commissionable Node Discovery?" - id: MCORE.DD.TXT_KEY_DT + - label: "Does the Device support AdminVendorId attribute?" + id: CADMIN.S.A0002 - - label: "Does the Commissioner support Discovery Capability over BLE?" - id: MCORE.DD.DISCOVERY_BLE + # + # server / commandsReceived + # + - label: "Does the Device support Enhanced Commissioning Method (ECM)?" + id: CADMIN.S.C00.Rsp - - label: "Does the device support discovery over Wi-Fi?" - id: MCORE.DD.WIFI + - label: "Does the Device support Basic Commissioning Method (BCM)?" + id: CADMIN.S.C01.Rsp - - label: "Does the device have a vendor specific information element (IE)?" - id: MCORE.DD.IE + - label: "Does the Device support revoking commissioning window?" + id: CADMIN.S.C02.Rsp - - label: - "Does the device support TXT Key 'DN' (Device Name) in it’s DNS-SD TXT - Records for Commissionable Node Discovery?" - id: MCORE.DD.TXT_KEY_DN + # + # server / features + # + - label: "Does the Device support Basic Commissioning Method" + id: CADMIN.S.F00 - - label: - "Does the device support TXT Key 'RI' (Rotating Identifier) in it’s - DNS-SD TXT Records for Commissionable Node Discovery?" - id: MCORE.DD.TXT_KEY_RI + # + # server / manually + # + - label: "Does the Device support User Interface Display" + id: CADMIN.UserInterfaceDisplay - - label: - "Does the device support TXT Key 'PH' (Pairing Hint) in it’s DNS-SD - TXT Records for Commissionable Node Discovery?" - id: MCORE.DD.TXT_KEY_PH + - label: "Does the Device support Audio Interface" + id: CADMIN.AudioInterface + # + # client / attributes + # - label: - "Does the device support TXT Key 'PI' (Pairing Instruction) in it’s - DNS-SD TXT Records for Commissionable Node Discovery?" - id: MCORE.DD.TXT_KEY_PI + "Does the DUT(client) have access privileges for the Fabrics attribut + implemented on the server?" + id: OPCREDS.C.A0001 - label: - "Does the device support Extended Discovery through DNS-SD - advertisements when device is not in commissioning mode?" - id: MCORE.DD.EXTENDED_DISCOVERY + "Does the DUT(client) have access privileges for the WindowStatus + attribute implemented on the server?" + id: CADMIN.C.A0000 - label: - "Does the device support advertising the Vendor ID Commissioning - Subtype in Commissionable Node Discovery through DNS-SD - advertisements?" - id: MCORE.DD.COMMISSIONING_SUBTYPE_V + "Does the DUT(client) have access privileges for the AdminFabricIndex + attribute implemented on the server?" + id: CADMIN.C.A0001 - label: - "Does the device support advertising the Device Type Commissioning - Subtype in Commissionable Node Discovery through DNS-SD - advertisements?" - id: MCORE.DD.COMMISSIONING_SUBTYPE_T + "Does the DUT(client) have access privileges for the AdminVendorId + attribute implemented on the server?" + id: CADMIN.C.A0002 + # + # client / commandsGenerated + # - label: - "Does the commissioner support fetching DCL data from a device being - commissioned?" - id: MCORE.DD.FETCH_DCL - - #Ethernet Network Diagnostics Cluster - - label: "Does the device implement the ResetCounts command?" - id: DGETH.S.C00.Rsp - - #Server - - label: "Does the device implement the PHYRate attribute?" - id: DGETH.S.A0000 - - - label: "Does the device implement the FullDuplex attribute?" - id: DGETH.S.A0001 - - - label: "Does the device implement the PacketRxCount attribute?" - id: DGETH.S.A0002 - - - label: "Does the device implement the PacketTxCount attribute?" - id: DGETH.S.A0003 + "Does the Device support through Enhanced Commissioning Method (ECM) ?" + id: CADMIN.C.C00.Tx - - label: "Does the device implement the TxErrCount attribute?" - id: DGETH.S.A0004 + - label: "Does the Device support Basic Commissioning Method (BCM) ?" + id: CADMIN.C.C01.Tx - - label: "Does the device implement the CollisionCount attribute?" - id: DGETH.S.A0005 + - label: "Does the Device support revoking commissioning window?" + id: CADMIN.C.C02.Tx - - label: "Does the device implement the OverrunCount attribute?" - id: DGETH.S.A0006 + # OTA Software Update Test Plan + # + # server / manually + # + - label: + "Does the DUT support sending the DelayedActionTime field in + QueryImageResponse Command?" + id: OTAP.S.M.DelayedActionTime - - label: "Does the device implement the CarrierDetect attribute?" - id: DGETH.S.A0007 + - label: + "Does the DUT support sending the UserConsentNeeded field in + QueryImageResponse Command?" + id: OTAP.S.M.UserConsentNeeded - - label: "Does the device implement the CarrierDetect attribute?" - id: DGETH.S.A0008 + # + # client / manually + # + - label: "Does the DUT support sending the AnnounceOTAProvider Command?" + id: OTAR.C.M.AnnounceOTAProvider - #Client - - label: "Does the device implement the ResetCounts command?" - id: DGETH.C.C00.Tx + - label: "Does the DUT support sending the NotifyUpdateApplied Command?" + id: OTAR.C.M.NotifyUpdateApplied + # Occupancy Sensing Cluster Test Plan - label: - "Does the DUT(client) have access privileges for the PHYRate attribute - implemented on server" - id: DGETH.C.A0000 + "Does the device implement the Occupancy Sensing cluster as a server?" + id: OCC.S - label: - "Does the DUT(client) have access privileges for the FullDuplex - attribute implemented on server" - id: DGETH.C.A0001 + "Does the device implement the Occupancy Sensing cluster as a client?" + id: OCC.C - - label: - "Does the DUT(client) have access privileges for the PacketRxCount - attribute implemented on server" - id: DGETH.C.A0002 + # + # server / attributes + # + - label: "Does the device implement the Occupancy attribute?" + id: OCC.S.A0000 + + - label: "Does the device implement the OccupancySensorType attribute?" + id: OCC.S.A0001 - label: - "Does the DUT(client) have access privileges for the PacketTxCount - attribute implemented on server" - id: DGETH.C.A0003 + "Does the device implement the OccupancySensorTypeBitmap attribute?" + id: OCC.S.A0002 - label: - "Does the DUT(client) have access privileges for the TxErrCount - attribute implemented on server" - id: DGETH.C.A0004 + "Does the device implement the PIROccupiedToUnoccupiedDelay attribute?" + id: OCC.S.A0010 - label: - "Does the DUT(client) have access privileges for the CollisionCount - attribute implemented on server" - id: DGETH.C.A0005 + "Does the device implement the PIRUnoccupiedToOccupiedDelay attribute?" + id: OCC.S.A0011 - label: - "Does the DUT(client) have access privileges for the OverrunCount - attribute implemented on server" - id: DGETH.C.A0006 + "Does the device implement the PIRUnoccupiedToOccupiedThreshold + attribute?" + id: OCC.S.A0012 - label: - "Does the DUT(client) have access privileges for the CarrierDetect - attribute implemented on server" - id: DGETH.C.A0007 + "Does the device implement the UltrasonicOccupiedToUnoccupiedDelay + attribute?" + id: OCC.S.A0020 - label: - "Does the DUT(client) have access privileges for the CarrierDetect - attribute implemented on server" - id: DGETH.C.A0008 + "Does the device implement the UltrasonicUnoccupiedToOccupiedDelay + attribute?" + id: OCC.S.A0021 - #Features - label: - "Counts for the number of received and transmitted packets on the - ethernet interface" - id: DGETH.S.F00 + "Does the device implement the UltrasonicUnoccupiedToOccupiedThreshold + attribute?" + id: OCC.S.A0022 - label: - "Counts for the number of errors during the reception and transmission - of packets on the ethernet interface." - id: DGETH.S.F01 + "Does the device implement the + PhysicalContactOccupiedToUnoccupiedDelay attribute?" + id: OCC.S.A0030 - #Wi-Fi Network Diagnostics Cluster - label: - "Counts for the number of received and transmitted packets on the - ethernet interface." - id: DGWIFI.S.F00 + "Does the device implement the + PhysicalContactUnoccupiedToOccupiedDelay attribute?" + id: OCC.S.A0031 - label: - "Counts for the number of errors during the reception and transmission - of packets on the ethernet interface." - id: DGWIFI.S.F01 + "Does the device implement the + PhysicalContactUnoccupiedToOccupiedThreshold attribute?" + id: OCC.S.A0032 - #Server + # + # server / manually + # - label: - "Indicates the BSSID for which the Wi-Fi network the Node is currently - connected. If the interface not configured, a NULL value should be - presented." - id: DGWIFI.S.A0000 + "Can the Occupancy attribute changed by physical control at the + device?" + id: OCC.M.OccupancyChange - - label: "The current type of WiFi security being used." - id: DGWIFI.S.A0001 + # + # client / attributes + # + - label: "Does the device implement the Occupancy attribute?" + id: OCC.C.A0000 - - label: "Indicates the current 802.11 standard version in use by the Node." - id: DGWIFI.S.A0002 + - label: "Does the device implement the OccupancySensorType attribute?" + id: OCC.C.A0001 - label: - "Indicate the channel that Wi-Fi communication is currently operating - on. If the interface not configured, a NULL value should be presented" - id: DGWIFI.S.A0003 + "Does the device implement the OccupancySensorTypeBitmap attribute?" + id: OCC.C.A0002 - label: - "Indicates the current RSSI of the Node 's Wi-Fi radio in dB. If the - interface not configured or operational, a NULL value should be - presented. This value should not be subscribed." - id: DGWIFI.S.A0004 + "Does the device implement the PIROccupiedToUnoccupiedDelay attribute?" + id: OCC.C.A0010 - label: - "Indicates the count of the number of received beacons. This value - should not be subscribed." - id: DGWIFI.S.A0005 + "Does the device implement the PIRUnoccupiedToOccupiedDelay attribute?" + id: OCC.C.A0011 - label: - "Indicates the count of the number of received beacons. This value - should not be subscribed." - id: DGWIFI.S.A0006 + "Does the device implement the PIRUnoccupiedToOccupiedThreshold + attribute?" + id: OCC.C.A0012 - label: - "Indicates the number of multicast packets received by the Node. This - value should not be subscribed." - id: DGWIFI.S.A0007 + "Does the device implement the UltrasonicOccupiedToUnoccupiedDelay + attribute?" + id: OCC.C.A0020 - label: - "Indicates the number of mul5icast packets transmitted by the Node. - This value should not be subscribed." - id: DGWIFI.S.A0008 + "Does the device implement the UltrasonicUnoccupiedToOccupiedDelay + attribute?" + id: OCC.C.A0021 - label: - "Indicates the number of uicast packets received by the Node. This - value should not be subscribed." - id: DGWIFI.S.A0009 + "Does the device implement the UltrasonicUnoccupiedToOccupiedThreshold + attribute?" + id: OCC.C.A0022 - label: - "Indicates the number of unicast packets transmitted by the Node. This - value should not be subscribed." - id: DGWIFI.S.A000a + "Does the device implement the + PhysicalContactOccupiedToUnoccupiedDelay attribute?" + id: OCC.C.A0030 - label: - "Indicates the current maximum PHY rate of transfer of data in - bytes-per-second." - id: DGWIFI.S.A000b + "Does the device implement the + PhysicalContactUnoccupiedToOccupiedDelay attribute?" + id: OCC.C.A0031 - label: - "Indicates the number of packets dropped either at ingress or egress, - due to lack of buffer memory to retain all packets on the ethernet - network interface. This attribute SHALL be reset to 0 upon a reboot of - the Node. This value should not be subscribed." - id: DGWIFI.S.A000c + "Does the device implement the + PhysicalContactUnoccupiedToOccupiedThreshold attribute?" + id: OCC.C.A0032 - #Events - - label: - "Indicates Node’s Wi-Fi connection has been disconnected as a result - of de-authenticated or dis-association and indicates the reason." - id: DGWIFI.S.E00 + # On/Off Cluster Test Plan + - label: "Does the device implement the on/off cluster as a server?" + id: OO.S - - label: - "Indicates unsuccessful connection and reconnection to WiFi access - point after exhaustive retries. AssociationFailure fields are to - indicate the cause and status. Each field set values are described in - 11.14.6.2" - id: DGWIFI.S.E01 + - label: "Does the device implement the on/off cluster as a client?" + id: OO.C - - label: - "Indicates that a Node’s connection status to a Wi-Fi network has - changed." - id: DGWIFI.S.E02 + # + # server / attributes + # + - label: "Does the device implement the OnOff attribute?" + id: OO.S.A0000 - - label: - "Reset the following attributes to 0; BeaconLostCount, BeaconRxCount, - PacketMulticastRxCount, PacketMulticastTxCount, PacketUnicastRxCount, - PacketUnicastTxCount" - id: DGWIFI.S.C00.Rsp + - label: "Does the device implement the GlobalSceneControl attribute?" + id: OO.S.A4000 - #Client - - label: - "Does the DUT(client) have access privileges for the BSSID attribute - implemented on the server?" - id: DGWIFI.C.A0000 + - label: "Does the device implement the OnTime attribute?" + id: OO.S.A4001 - - label: - "Does the DUT(client) have access privileges for the SecurityType - attribute implemented on the server?" - id: DGWIFI.C.A0001 + - label: "Does the device implement the OffWaitTime attribute?" + id: OO.S.A4002 - - label: - "Does the DUT(client) have access privileges for the WiFiVersion - attribute implemented on the server?" - id: DGWIFI.C.A0002 + - label: "Does the device implement the StartUpOnOff attribute?" + id: OO.S.A4003 - - label: - "Does the DUT(client) have access privileges for the ChannelNumber - attribute implemented on the server?" - id: DGWIFI.C.A0003 + # + # server / commandsReceived + # + - label: "Does the device implement receiving the Off command?" + id: OO.S.C00.Rsp - - label: - "Does the DUT(client) have access privileges for the RSSI attribute - implemented on the server?" - id: DGWIFI.C.A0004 + - label: "Does the device implement receiving the On command?" + id: OO.S.C01.Rsp - - label: - "Does the DUT(client) have access privileges for the BeaconLostCount - attribute implemented on the server?" - id: DGWIFI.C.A0005 + - label: "Does the device implement receiving the Toggle command?" + id: OO.S.C02.Rsp - - label: - "Does the DUT(client) have access privileges for the BeaconRxCount - attribute implemented on the server?" - id: DGWIFI.C.A0006 + - label: "Does the device implement receiving the OffWithEffect command?" + id: OO.S.C40.Rsp - label: - "Does the DUT(client) have access privileges for the - PacketMulticastRxCount attribute implemented on the server?" - id: DGWIFI.C.A0007 + "Does the device implement receiving the OnWithRecallGlobalScene + command?" + id: OO.S.C41.Rsp - - label: - "Does the DUT(client) have access privileges for the - PacketMulticastTxCount attribute implemented on the server?" - id: DGWIFI.C.A0008 + - label: "Does the device implement receiving the OnWithTimedOff command?" + id: OO.S.C42.Rsp - - label: - "Does the DUT(client) have access privileges for the - PacketUnicastRxCount attribute implemented on the server?" - id: DGWIFI.C.A0009 + # + # server / features + # + - label: "Level Control for Lighting" + id: OO.S.F00 + # + # server / manually + # - label: - "Does the DUT(client) have access privileges for the - PacketUnicastTxCount attribute implemented on the server?" - id: DGWIFI.C.A000a + "Can the OnOff attribute changed by physical control at the device?" + id: OO.M.ManuallyControlled - - label: - "Does the DUT(client) have access privileges for the CurrentMaxRate - attribute implemented on the server?" - id: DGWIFI.C.A000b + # + # client / commandsGenerated + # + - label: "Does the device implement sending the Off command?" + id: OO.C.C00.Tx + + - label: "Does the device implement sending the On command?" + id: OO.C.C01.Tx + + - label: "Does the device implement sending the Toggle command?" + id: OO.C.C02.Tx + + - label: "Does the device implement sending the OffWithEffect command?" + id: OO.C.C40.Tx - label: - "Does the DUT(client) have access privileges for the OverrunCount - attribute implemented on the server?" - id: DGWIFI.C.A000c + "Does the device implement sending the OnWithRecallGlobalScene + command?" + id: OO.C.C41.Tx + + - label: "Does the device implement sending the OnWithTimedOff command?" + id: OO.C.C42.Tx + + # + # client / manually + # + - label: "Read all supported mandatory attribute" + id: OO.C.AM-READ + + - label: "Write all supported mandatory attribute" + id: OO.C.AM-WRITE + + - label: "Write all supported optional attributes" + id: OO.C.AO-WRITE - #Actions Cluster - - label: "Does the device implement the ActionList attribute?" - id: ACT.S.A0000 + - label: "Read all supported optional attributes" + id: OO.C.AO-READ - - label: "Does the device implement the EndpointLists attribute?" - id: ACT.S.A0001 + # Power Source Cluster Test Plan + - label: "Does the device implement the Power Source cluster as a server?" + id: PS.S - - label: "Does the device implement the SetupURL attribute?" - id: ACT.S.A0002 + - label: "Does the device implement the Power Source cluster as a client?" + id: PS.C - - label: "Can the ActionList attribute be changed by some means?" - id: ACT.S.M.FillActionList + # + # server / attributes + # + - label: "Does the device implement the Status attribute?" + id: PS.S.A0000 - - label: "Can the EndpointLists attribute be changed by some means?" - id: ACT.S.M.FillEndpointLists + - label: "Does the device implement the Order attribute?" + id: PS.S.A0001 - - label: "Can a suffix be used on SetupURL" - id: ACT.S.M.SetupURLWithSuffix + - label: "Does the device implement the Description attribute?" + id: PS.S.A0002 - label: - "Does the DUT support exposing an Endpoint in multiple - EndpointListStructs" - id: ACT.S.M.OverlappingEndpointLists - - - label: "Does the DUT support sending the InstantAction command?" - id: ACT.C.C00.Tx + "Does the device implement the WiredAssessedInputVoltage attribute?" + id: PS.S.A0003 - label: - "Does the DUT support sending the InstantActionWithTransition command?" - id: ACT.C.C01.Tx + "Does the device implement the WiredAssessedInputFrequency attribute?" + id: PS.S.A0004 - - label: "Does the DUT support sending the StartAction command?" - id: ACT.C.C02.Tx + - label: "Does the device implement the WiredCurrentType attribute?" + id: PS.S.A0005 - - label: "Does the DUT support sending the StartActionWithDuration command?" - id: ACT.C.C03.Tx + - label: "Does the device implement the WiredAssessedCurrent attribute?" + id: PS.S.A0006 - - label: "Does the DUT support sending the StopAction command?" - id: ACT.C.C04.Tx + - label: "Does the device implement the WiredNominalVoltage attribute?" + id: PS.S.A0007 - - label: "Does the DUT support sending the PauseAction command?" - id: ACT.C.C05.Tx + - label: "Does the device implement the WiredMaximumCurrent attribute?" + id: PS.S.A0008 - - label: "Does the DUT support sending the PauseActionWithDuration command?" - id: ACT.C.C06.Tx + - label: "Does the device implement the WiredPresent attribute?" + id: PS.S.A0009 - - label: "Does the DUT support sending the ResumeAction command?" - id: ACT.C.C07.Tx + - label: "Does the device implement the ActiveWiredFaults attribute?" + id: PS.S.A000a - - label: "Does the DUT support sending the EnableAction command?" - id: ACT.C.C08.Tx + - label: "Does the device implement the BatVoltage attribute?" + id: PS.S.A000b - - label: - "Does the DUT support sending the EnableActionWithDuration command?" - id: ACT.C.C09.Tx + - label: "Does the device implement the BatPercentRemaining attribute?" + id: PS.S.A000c - - label: "Does the DUT support sending the DisableAction command?" - id: ACT.C.C0a.Tx + - label: "Does the device implement the BatTimeRemaining attribute?" + id: PS.S.A000d - - label: - "Does the DUT support sending the DisableActionWithDuration command?" - id: ACT.C.C0b.Tx + - label: "Does the device implement the BatChargeLevel attribute?" + id: PS.S.A000e - #Boolean State Cluster - - label: "Does the device implement the StateValue attribute?" - id: BOOL.S.A0000 + - label: "Does the device implement the BatReplacementNeeded attribute?" + id: PS.S.A000f - - label: - "Can the StateValue attribute be changed by manual operation at the - DUT?" - id: BOOL.M.ManuallyControlled + - label: "Does the device implement the BatReplaceability attribute?" + id: PS.S.A0010 - - label: "Does the device implement the StateChange event?" - id: BOOL.S.E00 + - label: "Does the device implement the BatPresent attribute?" + id: PS.S.A0011 - #Diagnostics Logs Cluster - - label: - "Does the Device(Server) implement receiving the RetrieveLogsRequest - command?" - id: DLOG.S.C00.Rsp + - label: "Does the device implement the ActiveBatFaults attribute?" + id: PS.S.A0012 - label: - "Does the Device(Server) invoking/generating the RetrieveLogsResponse - command?" - id: DLOG.S.C01.Tx + "Does the device implement the BatReplacementDescription attribute?" + id: PS.S.A0013 - - label: - "Does the Device(client) implement receiving the RetrieveLogsResponse - command?" - id: DLOG.C.C01.Rsp + - label: "Does the device implement the BatCommonDesignation attribute?" + id: PS.S.A0014 - - label: - "Does the Device(client) invoking/generating the RetrieveLogsRequeste - command?" - id: DLOG.C.C00.Tx + - label: "Does the device implement the BatANSIDesignation attribute?" + id: PS.S.A0015 - #Localization Configuration Cluster - - label: "Does the DUT(server) support the ActiveLocale attribute?" - id: LCFG.S.A0000 + - label: "Does the device implement the BatIECDesignation attribute?" + id: PS.S.A0016 - - label: "Does the DUT(server) support the SupportedLocales attribute?" - id: LCFG.S.A0001 + - label: "Does the device implement the BatApprovedChemistry attribute?" + id: PS.S.A0017 - - label: "Does the DUT(client) support the ActiveLocale attribute?" - id: LCFG.C.A0000 + - label: "Does the device implement the BatCapacity attribute?" + id: PS.S.A0018 - - label: "Does the DUT(server) support the SupportedLocales attribute?" - id: LCFG.C.A0001 + - label: "Does the device implement the BatQuantity attribute?" + id: PS.S.A0019 - #Power Source Configuration Cluster - - label: "Does the device implement the Sources attribute?" - id: PSCFG.S.A0000 + - label: "Does the device implement the BatChargeState attribute?" + id: PS.S.A001a - #Thread Network Diagnostics Cluster - #Features - - label: - "Does the DUT(server) support the Server supports the counts for the - number of received and transmitted packets feature?" - id: DGTHREAD.S.F00 + - label: "Does the device implement the BatTimeToFullCharge attribute?" + id: PS.S.A001b - label: - "Does the DUT(server) support the Server supports the counts for the - number of errors that have occurred during the reception and - transmission feature?" - id: DGTHREAD.S.F01 + "Does the device implement the BatFunctionalWhileCharging attribute?" + id: PS.S.A001c - - label: - "Does the DUT(server) support the Server supports the counts for - various MLE layer happenings feature?" - id: DGTHREAD.S.F02 + - label: "Does the device implement the BatChargingCurrent attribute?" + id: PS.S.A001d - - label: - "Does the DUT(server) support the Server supports the counts for - various MAC layer happenings feature?" - id: DGTHREAD.S.F03 + - label: "Does the device implement the ActiveBatChargeFaults attribute?" + id: PS.S.A001e - #server attributes - - label: "Does the DUT-server support the channel attribute?" - id: DGTHREAD.S.A0000 + # + # server / Events + # + - label: "Does the device implement the WiredFaultChange event?" + id: PS.S.E00 - - label: "Does the DUT-server support the RoutingRole attribute?" - id: DGTHREAD.S.A0001 + - label: "Does the device implement the BatFaultChange event?" + id: PS.S.E01 - - label: "Does the DUT-server support the NetworkName attribute?" - id: DGTHREAD.S.A0002 + - label: "Does the device implement the BatChargeFaultChange event?" + id: PS.S.E02 - - label: "Does the DUT-server support the PanId attribute?" - id: DGTHREAD.S.A0003 + # + # server / features + # + - label: "A wired power source" + id: PS.S.F00 - - label: "Does the DUT-server support the ExtendedPanId attribute?" - id: DGTHREAD.S.A0004 + - label: "A battery power source" + id: PS.S.F01 - - label: "Does the DUT-server support the MeshLocalPrefix attribute?" - id: DGTHREAD.S.A0005 + - label: "A rechargeable battery power source (requires Battery feature)" + id: PS.S.F02 - - label: "Does the DUT-server support the OverrunCount attribute?" - id: DGTHREAD.S.A0006 + - label: "A replaceable battery power source (requires Battery feature)" + id: PS.S.F03 - - label: "Does the DUT-server support the NeighborTable attribute?" - id: DGTHREAD.S.A0007 + # + # server / manually + # + - label: "Can the DUT be brought into a Wired Fault state?" + id: PS.M.ManualWiredFault - - label: "Does the DUT-server support the RouteTable attribute?" - id: DGTHREAD.S.A0008 + - label: "Can the DUT be brought into a Battery Fault state?" + id: PS.M.ManualBatFault - - label: "Does the DUT-server support the PartitionId attribute?" - id: DGTHREAD.S.A0009 + - label: "Can the DUT be brought into a Battery Charge Fault state?" + id: PS.M.ManualBatChargeFault - - label: "Does the DUT-server support the Weighting attribute?" - id: DGTHREAD.S.A000a + # + # client / manually + # + - label: "Read all supported mandatory attribute" + id: PS.C.AM-READ - - label: "Does the DUT-server support the DataVersion attribute?" - id: DGTHREAD.S.A000b + - label: "Write all supported optional attributes" + id: PS.C.AO-WRITE - - label: "Does the DUT-server support the StableDataVersion attribute?" - id: DGTHREAD.S.A000c + - label: "Write all supported mandatory attribute" + id: PS.C.AM-WRITE - - label: "Does the DUT-server support the LeaderRouterId attribute?" - id: DGTHREAD.S.A000d + - label: "Read all supported optional attributes" + id: PS.C.AO-READ - - label: "Does the DUT-server support the DetachedRoleCount attribute?" - id: DGTHREAD.S.A000e + # Power Source Configuration Cluster Test Plan + - label: + "Does the device implement the Power Source Configuration cluster as a + server?" + id: PSCFG.S - - label: "Does the DUT-server support the ChildRoleCount attribute?" - id: DGTHREAD.S.A000f + - label: + "Does the device implement the Power Source Configuration cluster as a + client?" + id: PSCFG.C - - label: "Does the DUT-server support the RouterRoleCount attribute?" - id: DGTHREAD.S.A0010 + # + # server / attributes + # + - label: "Does the device implement the Sources attribute?" + id: PSCFG.S.A0000 - - label: "Does the DUT-server support the LeaderRoleCount attribute?" - id: DGTHREAD.S.A0011 + # + # client / manually + # + - label: "Read all supported optional attributes" + id: PSCFG.C.AO-READ - - label: "Does the DUT-server support the AttachAttemptCount attribute?" - id: DGTHREAD.S.A0012 + - label: "Read all supported mandatory attribute" + id: PSCFG.C.AM-READ - - label: "Does the DUT-server support the PartitionIdChangeCount attribute?" - id: DGTHREAD.S.A0013 + - label: "Write all supported mandatory attribute" + id: PSCFG.C.AM-WRITE + + - label: "Write all supported optional attributes" + id: PSCFG.C.AO-WRITE + # Pressure Measurement Cluster Test Plan - label: - "Does the DUT-server support the BetterPartitionAttachAttemptCount - attribute?" - id: DGTHREAD.S.A0014 + "Does the device implement the Pressure Measurement cluster as a + server?" + id: PRS.S - - label: "Does the DUT-server support the ParentChangeCount attribute?" - id: DGTHREAD.S.A0015 + - label: + "Does the device implement the Pressure Measurement cluster as a + client?" + id: PRS.C - - label: "Does the DUT-server support the TxTotalCount attribute?" - id: DGTHREAD.S.A0016 + # + # server / attributes + # + - label: "Does the device implement the MeasuredValue attribute?" + id: PRS.S.A0000 - - label: "Does the DUT-server support the TxUnicastCount attribute?" - id: DGTHREAD.S.A0017 + - label: "Does the device implement the MinMeasuredValue attribute?" + id: PRS.S.A0001 - - label: "Does the DUT-server support the TxBroadcastCount attribute?" - id: DGTHREAD.S.A0018 + - label: "Does the device implement the MaxMeasuredValue attribute?" + id: PRS.S.A0002 - - label: "Does the DUT-server support the TxAckRequestedCount attribute?" - id: DGTHREAD.S.A0019 + - label: "Does the device implement the Tolerance attribute?" + id: PRS.S.A0003 - - label: "Does the DUT-server support the TxAckedCount attribute?" - id: DGTHREAD.S.A001a + - label: "Does the device implement the ScaledValue attribute?" + id: PRS.S.A0010 - - label: "Does the DUT-server support the TxNoAckRequestedCount attribute?" - id: DGTHREAD.S.A001b + - label: "Does the device implement the MinScaledValue attribute?" + id: PRS.S.A0011 - - label: "Does the DUT-server support the TxDataCount attribute?" - id: DGTHREAD.S.A001c + - label: "Does the device implement the MinScaledValue attribute?" + id: PRS.S.A0012 - - label: "Does the DUT-server support the TxDataPollCount attribute?" - id: DGTHREAD.S.A001d + - label: "Does the device implement the ScaledTolerance attribute?" + id: PRS.S.A0013 - - label: "Does the DUT-server support the TxBeaconCount attribute?" - id: DGTHREAD.S.A001e + - label: "Does the device implement the Scale attribute?" + id: PRS.S.A0014 - - label: "Does the DUT-server support the TxBeaconRequestCount attribute?" - id: DGTHREAD.S.A001f + # + # server / features + # + - label: "Does the device support extended range and resolution?" + id: PRS.S.F00 - - label: "Does the DUT-server support the TxOtherCount attribute?" - id: DGTHREAD.S.A0020 + # + # server / manually + # + - label: + "Can the MeasuredValue attribute changed by physical control at the + device?" + id: PRS.M.PressureChange - - label: "Does the DUT-server support the TxRetryCount attribute?" - id: DGTHREAD.S.A0021 + # + # client / manually + # + - label: "Read all supported mandatory attribute" + id: PRS.C.AM-READ - - label: - "Does the DUT-server support the TxDirectMaxRetryExpiryCount - attribute?" - id: DGTHREAD.S.A0022 + - label: "Write all supported mandatory attribute" + id: PRS.C.AM-WRITE - - label: - "Does the DUT-server support the TxIndirectMaxRetryExpiryCount - attribute?" - id: DGTHREAD.S.A0023 + - label: "Read all supported optional attributes" + id: PRS.C.AO-READ - - label: "Does the DUT-server support the TxErrCcaCount attribute?" - id: DGTHREAD.S.A0024 + - label: "Write all supported optional attributes" + id: PRS.C.AO-WRITE - - label: "Does the DUT-server support the TxErrAbortCount attribute?" - id: DGTHREAD.S.A0025 + # Pump Configuration and Control Cluster Test Plan + - label: + "Does the device implement the Pump Configuration and Control cluster + as a server?" + id: PCC.S - - label: "Does the DUT-server support the TxErrBusyChannelCount attribute?" - id: DGTHREAD.S.A0026 + - label: + "Does the device implement the Pump Configuration and Control cluster + as a client?" + id: PCC.C - - label: "Does the DUT-server support the RxTotalCount attribute?" - id: DGTHREAD.S.A0027 + # + # server / attributes + # + - label: "Does the device implement the MaxPressure attribute?" + id: PCC.S.A0000 - - label: "Does the DUT-server support the RxUnicastCount attribute?" - id: DGTHREAD.S.A0028 + - label: "Does the device implement the MaxSpeed attribute?" + id: PCC.S.A0001 - - label: "Does the DUT-server support the RxBroadcastCount attribute?" - id: DGTHREAD.S.A0029 + - label: "Does the device implement the MaxFlow attribute?" + id: PCC.S.A0002 + + - label: "Does the device implement the MinConstPressure attribute?" + id: PCC.S.A0003 - - label: "Does the DUT-server support the RxDataCount attribute?" - id: DGTHREAD.S.A002a + - label: "Does the device implement the MaxConstPressure attribute?" + id: PCC.S.A0004 - - label: "Does the DUT-server support the RxDataPollCount attribute?" - id: DGTHREAD.S.A002b + - label: "Does the device implement the MinCompPressure attribute?" + id: PCC.S.A0005 - - label: "Does the DUT-server support the RxBeaconCount attribute?" - id: DGTHREAD.S.A002c + - label: "Does the device implement the MaxCompPressure attribute?" + id: PCC.S.A0006 - - label: "Does the DUT-server support the RxBeaconRequestCount attribute?" - id: DGTHREAD.S.A002d + - label: "Does the device implement the MinConstSpeed attribute?" + id: PCC.S.A0007 - - label: "Does the DUT-server support the RxOtherCount attribute?" - id: DGTHREAD.S.A002e + - label: "Does the device implement the MaxConstSpeed attribute?" + id: PCC.S.A0008 - - label: "Does the DUT-server support the RxAddressFilteredCount attribute?" - id: DGTHREAD.S.A002f + - label: "Does the device implement the MinConstFlow attribute?" + id: PCC.S.A0009 - - label: - "Does the DUT-server support the RxDestAddrFilteredCount attribute?" - id: DGTHREAD.S.A0030 + - label: "Does the device implement the MaxConstFlow attribute?" + id: PCC.S.A000a - - label: "Does the DUT-server support the RxDuplicatedCount attribute?" - id: DGTHREAD.S.A0031 + - label: "Does the device implement the MinConstTemp attribute?" + id: PCC.S.A000b - - label: "Does the DUT-server support the RxErrNoFrameCount attribute?" - id: DGTHREAD.S.A0032 + - label: "Does the device implement the MaxConstTemp attribute?" + id: PCC.S.A000c - - label: - "Does the DUT-server support the RxErrUnknownNeighborCount attribute?" - id: DGTHREAD.S.A0033 + - label: "Does the device implement the PumpStatus attribute?" + id: PCC.S.A0010 - - label: - "Does the DUT-server support the RxErrInvalidScrAddrCount attribute?" - id: DGTHREAD.S.A0034 + - label: "Does the device implement the EffectiveOperationMode attribute?" + id: PCC.S.A0011 - - label: "Does the DUT-server support the RxErrSecCount attribute?" - id: DGTHREAD.S.A0035 + - label: "Does the device implement the EffectiveControlMode attribute?" + id: PCC.S.A0012 - - label: "Does the DUT-server support the RxErrFcsCount attribute?" - id: DGTHREAD.S.A0036 + - label: "Does the device implement the Capacity attribute?" + id: PCC.S.A0013 - - label: "Does the DUT-server support the RxErrOtherCount attribute?" - id: DGTHREAD.S.A0037 + - label: "Does the device implement the Speed attribute?" + id: PCC.S.A0014 - - label: "Does the DUT-server support the ActiveTimestamp attribute?" - id: DGTHREAD.S.A0038 + - label: "Does the device implement the LifetimeRunningHours attribute?" + id: PCC.S.A0015 - - label: "Does the DUT-server support the PendingTimestamp attribute?" - id: DGTHREAD.S.A0039 + - label: "Does the device implement the Power attribute?" + id: PCC.S.A0016 - - label: "Does the DUT-server support the Delay attribute?" - id: DGTHREAD.S.A003a + - label: "Does the device implement the LifetimeEnergyConsumed attribute?" + id: PCC.S.A0017 - - label: "Does the DUT-server support the SecurityPolicy attribute?" - id: DGTHREAD.S.A003b + - label: "Does the device implement the OperationMode attribute?" + id: PCC.S.A0020 - - label: "Does the DUT-server support the ChannelPage0Mask attribute?" - id: DGTHREAD.S.A003c + - label: "Does the device implement the ControlMode attribute?" + id: PCC.S.A0021 - - label: - "Does the DUT-server support the OperationalDatasetComponents - attribute?" - id: DGTHREAD.S.A003d + # + # server / Events + # + - label: "Does the device implement the SupplyVoltageLow event?" + id: PCC.S.E0000 - - label: "Does the DUT-server support the ActiveNetworkFaults attribute?" - id: DGTHREAD.S.A003e + - label: "Does the device implement the SupplyVoltageHigh event?" + id: PCC.S.E0001 - #server commands - - label: - "Does the Device-Server implement receiving the ResetCounts command?" - id: DGTHREAD.S.C00.Rsp + - label: "Does the device implement the PowerMissingPhase event?" + id: PCC.S.E0002 - #Events - - label: "Does the DUT-server support the ConnectionStatus event?" - id: DGTHREAD.S.E00 + - label: "Does the device implement the SystemPressureLow event?" + id: PCC.S.E0003 - - label: "Does the DUT-server support the NetworkFaultChange event?" - id: DGTHREAD.S.E01 + - label: "Does the device implement the SystemPressureHigh event?" + id: PCC.S.E0004 - - label: "Does the DUT-client support the ConnectionStatus event?" - id: DGTHREAD.C.E00 + - label: "Does the device implement the DryRunning event?" + id: PCC.S.E0005 - - label: "Does the DUT-client support the NetworkFaultChange event?" - id: DGTHREAD.C.E01 + - label: "Does the device implement the MotorTemperatureHigh event?" + id: PCC.S.E0006 - #client commands - - label: - "Does the Device-client invoking/generating the ResetCounts command?" - id: DGTHREAD.C.C00.Tx + - label: "Does the device implement the PumpMotorFatalFailure event?" + id: PCC.S.E0007 - #client attributes - - label: "Does the DUT-client support the channel attribute?" - id: DGTHREAD.C.A0000 + - label: "Does the device implement the ElectronicTemperatureHigh event?" + id: PCC.S.E0008 - - label: "Does the DUT-client support the RoutingRole attribute?" - id: DGTHREAD.C.A0001 + - label: "Does the device implement the PumpBlocked event?" + id: PCC.S.E0009 - - label: "Does the DUT-client support the NetworkName attribute?" - id: DGTHREAD.C.A0002 + - label: "Does the device implement the SensorFailure event?" + id: PCC.S.E000a - - label: "Does the DUT-client support the PanId attribute?" - id: DGTHREAD.C.A0003 + - label: "Does the device implement the ElectronicNonFatalFailure event?" + id: PCC.S.E000b - - label: "Does the DUT-client support the ExtendedPanId attribute?" - id: DGTHREAD.C.A0004 + - label: "Does the device implement the ElectronicFatalFailure event?" + id: PCC.S.E000c - - label: "Does the DUT-client support the MeshLocalPrefix attribute?" - id: DGTHREAD.C.A0005 + - label: "Does the device implement the GeneralFault event?" + id: PCC.S.E000d - - label: "Does the DUT-client support the OverrunCount attribute?" - id: DGTHREAD.C.A0006 + - label: "Does the device implement the Leakage event?" + id: PCC.S.E000e - - label: "Does the DUT-client support the NeighborTable attribute?" - id: DGTHREAD.C.A0007 + - label: "Does the device implement the AirDetection event?" + id: PCC.S.E000f - - label: "Does the DUT-client support the RouteTable attribute?" - id: DGTHREAD.C.A0008 + - label: "Does the device implement the TurbineOperation event?" + id: PCC.S.E0010 - - label: "Does the DUT-client support the PartitionId attribute?" - id: DGTHREAD.C.A0009 + # + # server / features + # + - label: "Supports operating in constant pressure mode" + id: PCC.S.F00 - - label: "Does the DUT-client support the Weighting attribute?" - id: DGTHREAD.C.A000a + - label: "Supports operating in compensated pressure mode" + id: PCC.S.F01 - - label: "Does the DUT-client support the DataVersion attribute?" - id: DGTHREAD.C.A000b + - label: "Supports operating in constant flow mode" + id: PCC.S.F02 - - label: "Does the DUT-client support the StableDataVersion attribute?" - id: DGTHREAD.C.A000c + - label: "Supports operating in constant speed mode" + id: PCC.S.F03 - - label: "Does the DUT-client support the LeaderRouterId attribute?" - id: DGTHREAD.C.A000d + - label: "Supports operating in constant temperature mode" + id: PCC.S.F04 - - label: "Does the DUT-client support the DetachedRoleCount attribute?" - id: DGTHREAD.C.A000e + - label: "Supports operating in automatic mode" + id: PCC.S.F05 - - label: "Does the DUT-client support the ChildRoleCount attribute?" - id: DGTHREAD.C.A000f + - label: "Supports operating using local settings" + id: PCC.S.F06 - - label: "Does the DUT-client support the RouterRoleCount attribute?" - id: DGTHREAD.C.A0010 + # + # client / manually + # + - label: "Read all supported mandatory attribute" + id: PCC.C.AM-READ - - label: "Does the DUT-client support the LeaderRoleCount attribute?" - id: DGTHREAD.C.A0011 + - label: "Write all supported mandatory attribute" + id: PCC.C.AM-WRITE - - label: "Does the DUT-client support the AttachAttemptCount attribute?" - id: DGTHREAD.C.A0012 + - label: "Read all supported optional attributes" + id: PCC.C.AO-READ - - label: "Does the DUT-client support the PartitionIdChangeCount attribute?" - id: DGTHREAD.C.A0013 + - label: "Write all supported optional attributes" + id: PCC.C.AO-WRITE + # Relative Humidity Measurement Cluster Test Plan - label: - "Does the DUT-client support the BetterPartitionAttachAttemptCount - attribute?" - id: DGTHREAD.C.A0014 + "Does the device implement the relative humidity measurement cluster + as a server?" + id: RH.S - - label: "Does the DUT-client support the ParentChangeCount attribute?" - id: DGTHREAD.C.A0015 - - - label: "Does the DUT-client support the TxTotalCount attribute?" - id: DGTHREAD.C.A0016 + - label: + "Does the device implement the relative humidity measurement cluster + as a client?" + id: RH.C - - label: "Does the DUT-client support the TxUnicastCount attribute?" - id: DGTHREAD.C.A0017 + # + # server / attributes + # + - label: "Does the device implement the MeasuredValue attribute?" + id: RH.S.A0000 - - label: "Does the DUT-client support the TxBroadcastCount attribute?" - id: DGTHREAD.C.A0018 + - label: "Does the device implement the MinMeasuredValue attribute?" + id: RH.S.A0001 - - label: "Does the DUT-client support the TxAckRequestedCount attribute?" - id: DGTHREAD.C.A0019 + - label: "Does the device implement the MaxMeasuredValue attribute?" + id: RH.S.A0002 - - label: "Does the DUT-client support the TxAckedCount attribute?" - id: DGTHREAD.C.A001a + - label: "Does the device implement the Tolerance attribute?" + id: RH.S.A0003 - - label: "Does the DUT-client support the TxNoAckRequestedCount attribute?" - id: DGTHREAD.C.A001b + # + # server / manually + # + - label: + "Can the MeasuredValue attribute changed by physical control at the + device?" + id: RH.M.ManuallyControlled - - label: "Does the DUT-client support the TxDataCount attribute?" - id: DGTHREAD.C.A001c + # + # client / manually + # + - label: "Read all supported optional attributes" + id: RH.C.AO-READ - - label: "Does the DUT-client support the TxDataPollCount attribute?" - id: DGTHREAD.C.A001d + - label: "Write all supported mandatory attribute" + id: RH.C.AM-WRITE - - label: "Does the DUT-client support the TxBeaconCount attribute?" - id: DGTHREAD.C.A001e + - label: "Read all supported mandatory attribute" + id: RH.C.AM-READ - - label: "Does the DUT-client support the TxBeaconRequestCount attribute?" - id: DGTHREAD.C.A001f + - label: "Write all supported optional attributes" + id: RH.C.AO-WRITE - - label: "Does the DUT-client support the TxOtherCount attribute?" - id: DGTHREAD.C.A0020 + # Scenes Cluster Test Plan + - label: "Does the device implement the Scenes cluster as a server?" + id: S.S - - label: "Does the DUT-client support the TxRetryCount attribute?" - id: DGTHREAD.C.A0021 + - label: "Does the device implement the Scenes cluster as a client?" + id: S.C - - label: - "Does the DUT-client support the TxDirectMaxRetryExpiryCount - attribute?" - id: DGTHREAD.C.A0022 + # + # server / attributes + # + - label: "Does the device implement the SceneCount attribute?" + id: S.S.A0000 - - label: - "Does the DUT-client support the TxIndirectMaxRetryExpiryCount - attribute?" - id: DGTHREAD.C.A0023 + - label: "Does the device implement the CurrentScene attribute?" + id: S.S.A0001 - - label: "Does the DUT-client support the TxErrCcaCount attribute?" - id: DGTHREAD.C.A0024 + - label: "Does the device implement the CurrentGroup attribute?" + id: S.S.A0002 - - label: "Does the DUT-client support the TxErrAbortCount attribute?" - id: DGTHREAD.C.A0025 + - label: "Does the device implement the SceneValid attribute?" + id: S.S.A0003 - - label: "Does the DUT-client support the TxErrBusyChannelCount attribute?" - id: DGTHREAD.C.A0026 + - label: "Does the device implement the NameSupport attribute?" + id: S.S.A0004 - - label: "Does the DUT-client support the RxTotalCount attribute?" - id: DGTHREAD.C.A0027 + - label: "Does the device implement the LastConfiguredBy attribute?" + id: S.S.A0005 - - label: "Does the DUT-client support the RxUnicastCount attribute?" - id: DGTHREAD.C.A0028 + # + # server / commandsReceived + # + - label: "Does the device implement receiving the AddScene command?" + id: S.S.C00.Rsp - - label: "Does the DUT-client support the RxBroadcastCount attribute?" - id: DGTHREAD.C.A0029 + - label: "Does the device implement receiving the ViewScene command?" + id: S.S.C01.Rsp - - label: "Does the DUT-client support the RxDataCount attribute?" - id: DGTHREAD.C.A002a + - label: "Does the device implement receiving the RemoveScene command?" + id: S.S.C02.Rsp - - label: "Does the DUT-client support the RxDataPollCount attribute?" - id: DGTHREAD.C.A002b + - label: "Does the device implement receiving the RemoveAllScenes command?" + id: S.S.C03.Rsp - - label: "Does the DUT-client support the RxBeaconCount attribute?" - id: DGTHREAD.C.A002c + - label: "Does the device implement receiving the StoreScene command?" + id: S.S.C04.Rsp - - label: "Does the DUT-client support the RxBeaconRequestCount attribute?" - id: DGTHREAD.C.A002d + - label: "Does the device implement receiving the RecallScene command?" + id: S.S.C05.Rsp - - label: "Does the DUT-client support the RxOtherCount attribute?" - id: DGTHREAD.C.A002e + - label: + "Does the device implement receiving the GetSceneMembership command?" + id: S.S.C06.Rsp - - label: "Does the DUT-client support the RxAddressFilteredCount attribute?" - id: DGTHREAD.C.A002f + - label: "Does the device implement receiving the EnhancedAddScene command?" + id: S.S.C40.Rsp - label: - "Does the DUT-client support the RxDestAddrFilteredCount attribute?" - id: DGTHREAD.C.A0030 - - - label: "Does the DUT-client support the RxDuplicatedCount attribute?" - id: DGTHREAD.C.A0031 + "Does the device implement receiving the EnhancedViewScene command?" + id: S.S.C41.Rsp - - label: "Does the DUT-client support the RxErrNoFrameCount attribute?" - id: DGTHREAD.C.A0032 + - label: "Does the device implement receiving the CopyScene command?" + id: S.S.C42.Rsp - - label: - "Does the DUT-client support the RxErrUnknownNeighborCount attribute?" - id: DGTHREAD.C.A0033 + # + # server / features + # + - label: "Does the device implement the Scene Names feature?" + id: S.S.F00 - - label: - "Does the DUT-client support the RxErrInvalidScrAddrCount attribute?" - id: DGTHREAD.C.A0034 + # + # server / manually + # + - label: "" + id: S.S.AM - - label: "Does the DUT-client support the RxErrSecCount attribute?" - id: DGTHREAD.C.A0035 + - label: "" + id: S.S.AO - - label: "Does the DUT-client support the RxErrFcsCount attribute?" - id: DGTHREAD.C.A0036 + # + # client / commandsGenerated + # + - label: "Does the device implement sending the AddScene command?" + id: S.C.C00.Tx - - label: "Does the DUT-client support the RxErrOtherCount attribute?" - id: DGTHREAD.C.A0037 + - label: "Does the device implement sending the ViewScene command?" + id: S.C.C01.Tx - - label: "Does the DUT-client support the ActiveTimestamp attribute?" - id: DGTHREAD.C.A0038 + - label: "Does the device implement sending the RemoveScene command?" + id: S.C.C02.Tx - - label: "Does the DUT-client support the PendingTimestamp attribute?" - id: DGTHREAD.C.A0039 + - label: "Does the device implement sending the RemoveAllScenes command?" + id: S.C.C03.Tx - - label: "Does the DUT-client support the Delay attribute?" - id: DGTHREAD.C.A003a + - label: "Does the device implement sending the StoreScene command?" + id: S.C.C04.Tx - - label: "Does the DUT-client support the SecurityPolicy attribute?" - id: DGTHREAD.C.A003b + - label: "Does the device implement sending the RecallScene command?" + id: S.C.C05.Tx - - label: "Does the DUT-client support the ChannelPage0Mask attribute?" - id: DGTHREAD.C.A003c + - label: "Does the device implement sending the GetSceneMembership command?" + id: S.C.C06.Tx - - label: - "Does the DUT-client support the OperationalDatasetComponents - attribute?" - id: DGTHREAD.C.A003d + - label: "Does the device implement sending the EnhancedAddScene command?" + id: S.C.C40.Tx - - label: "Does the DUT-client support the ActiveNetworkFaults attribute?" - id: DGTHREAD.C.A003e + - label: "Does the device implement sending the EnhancedViewScene command?" + id: S.C.C41.Tx - #Illuminance Measurement Cluster - #server - - label: "Does the device implement the MeasuredValue attribute?" - id: ILL.S.A0000 + - label: "Does the device implement sending the CopyScene command?" + id: S.C.C42.Tx - - label: "Does the device implement the MinMeasuredValue attribute?" - id: ILL.S.A0001 + # + # client / manually + # + - label: "Write all supported optional attributes" + id: S.C.AO-WRITE - - label: "Does the device implement the MaxMeasuredValue attribute?" - id: ILL.S.A0002 + - label: "Read all supported optional attributes" + id: S.C.AO-READ - - label: "Does the device implement the Tolerance attribute?" - id: ILL.S.A0003 + - label: "Write all supported mandatory attribute" + id: S.C.AM-WRITE - - label: "Does the device implement the LightSensorType attribute?" - id: ILL.S.A0004 + - label: "Read all supported mandatory attribute" + id: S.C.AM-READ - #Door Lock - #server attributes - - label: "Does the DUT(server) support simulating a Not Fully Locked State?" - id: DRLK.S.Simulate.NotFullyLocked + # Software Diagnostics Cluster Test Plan + - label: + "Does the device implement the Software Diagnostics cluster as a + server?" + id: DGSW.S - - label: "Does the DUT(server) detect a LockJammed State?" - id: DRLK.S.DetectLockJammed + - label: + "Does the device implement the Software Diagnostics cluster as a + client?" + id: DGSW.C - - label: "Does the DUT-server support the LockState attribute?" - id: DRLK.S.A0000 + # + # server / attributes + # + - label: "Implement the ThreadMetrics struct attribute." + id: DGSW.S.A0000 - - label: "Does the DUT-server support the LockType attribute?" - id: DRLK.S.A0001 + - label: + "Indicate the current amount of heap memory, in bytes, that are free + for allocation." + id: DGSW.S.A0001 - - label: "Does the DUT-server support the ActuatorEnabled attribute?" - id: DRLK.S.A0002 + - label: + "Indicate the current amount of heap memory, in bytes, that is being + used." + id: DGSW.S.A0002 - - label: "Does the DUT-server support the DoorState attribute?" - id: DRLK.S.A0003 + - label: + "Indicate the maximum amount of heap memory, in bytes, that has been + used by the Node." + id: DGSW.S.A0003 - - label: "Does the DUT-server support the DoorOpenEvents attribute?" - id: DRLK.S.A0004 + # + # server / commandsReceived + # + - label: + "Resets the StackFreeMinimum field of the ThreadMetrics attribute and + the CurrentHeapHighWatermark attribute." + id: DGSW.S.C00.Rsp - - label: "Does the DUT-server support the DoorClosedEvents attribute?" - id: DRLK.S.A0005 + # + # server / Events + # + - label: "Implement the SoftwareFault event." + id: DGSW.S.E00 - - label: "Does the DUT-server support the OpenPeriod attribute?" - id: DRLK.S.A0006 + # + # server / features + # + - label: "The metrics for high watermark related to memory consumption." + id: DGSW.S.F00 + # + # client / attributes + # - label: - "Does the DUT-server support the NumberOfTotalUsersSupported - attribute?" - id: DRLK.S.A0011 + "Does the DUT(client) have access privileges for the ThreadMetrics + attribute implemented on the server?" + id: DGSW.C.A0000 - label: - "Does the DUT-server support the NumberofPINUsersSupported attribute?" - id: DRLK.S.A0012 + "Does the DUT(client) have access privileges for the CurrentHeapFree + attribute implemented on the server?" + id: DGSW.C.A0001 - label: - "Does the DUT-server support the NumberofRFIDUsersSupported attribute?" - id: DRLK.S.A0013 + "Does the DUT(client) have access privileges for the CurrentHeapUsed + attribute implemented on the server?" + id: DGSW.C.A0002 - label: - "Does the DUT-server support the NumberofWeekDaysSchedulesSupported - attribute?" - id: DRLK.S.A0014 + "Does the DUT(client) have access privileges for the + CurrentHeapHighWatermark attribute implemented on the server?" + id: DGSW.C.A0003 + # + # client / commandsGenerated + # - label: - "Does the DUT-server support the NumberofYearDaysSchedulesSupported - attribute?" - id: DRLK.S.A0015 + "Resets the StackFreeMinimum field of the ThreadMetrics attribute and + the CurrentHeapHighWatermark attribute." + id: DGSW.C.C00.Tx - - label: - "Does the DUT-server support the NumberofHolidaySchedulesSupported - attribute?" - id: DRLK.S.A0016 + # Switch Cluster Test Plan + - label: "Does the device implement the Switch cluster as a server?" + id: SWTCH.S - - label: "Does the DUT-server support the MaxPINCodeLength attribute?" - id: DRLK.S.A0017 + - label: "Does the device implement the Switch cluster as a client?" + id: SWTCH.C - - label: "Does the DUT-server support the MinPINCodeLength attribute?" - id: DRLK.S.A0018 + # + # server / features + # + - label: "Does the device represent a Latching Switch?" + id: SWTCH.S.F00 - - label: "Does the DUT-server support the MaxRFIDCodeLength attribute?" - id: DRLK.S.A0019 + - label: "Does the device represent a Momentary Switch?" + id: SWTCH.S.F01 - - label: "Does the DUT-server support the MinRFIDCodeLength attribute?" - id: DRLK.S.A001a + - label: "Does the MS device support Momentary Switch Release?" + id: SWTCH.S.F02 - - label: "Does the DUT-server support the CredentialRulesSupport attribute?" - id: DRLK.S.A001b + - label: "Does the MS device support Momentary Switch LongPress?" + id: SWTCH.S.F03 - - label: - "Does the DUT-server support the NumberOfCredentialsSupportedPerUser - attribute?" - id: DRLK.S.A001c + - label: "Does the MS device support Momentary Switch MultiPress?" + id: SWTCH.S.F04 - - label: "Does the DUT-server support the Language attribute?" - id: DRLK.S.A0021 + # + # client / features + # + - label: "Does the DUT support a Latching Switch?" + id: SWTCH.C.F00 - - label: "Does the DUT-server support the LEDSettings attribute?" - id: DRLK.S.A0022 + - label: "Does the DUT support a Momentary Switch?" + id: SWTCH.C.F01 - - label: "Does the DUT-server support the AutoRelockTime attribute?" - id: DRLK.S.A0023 + - label: "Does the DUT support Momentary Switch Release?" + id: SWTCH.C.F02 - - label: "Does the DUT-server support the SoundVolume attribute?" - id: DRLK.S.A0024 + - label: "Does the DUT support Momentary Switch LongPress?" + id: SWTCH.C.F03 - - label: "Does the DUT-server support the OperatingMode attribute?" - id: DRLK.S.A0025 + - label: "Does the DUT support Momentary Switch MultiPress?" + id: SWTCH.C.F04 + # + # client / manually + # - label: - "Does the DUT-server support the SupportedOperatingModes attribute?" - id: DRLK.S.A0026 + "Does the DUT support reading attribute to get switch state (polling)?" + id: SWTCH.C.M.RA - - label: - "Does the DUT-server support the DefaultConfigurationRegister - attribute?" - id: DRLK.S.A0027 + - label: "Does the DUT support eventing to get switch state changes?" + id: SWTCH.C.M.EV - - label: "Does the DUT-server support the EnableLocalProgramming attribute?" - id: DRLK.S.A0028 + - label: "Write all supported optional attributes" + id: SWTCH.C.AO-WRITE - - label: "Does the DUT-server support the EnableOneTouchLocking attribute?" - id: DRLK.S.A0029 + - label: "Read all supported mandatory attribute" + id: SWTCH.C.AM-READ - - label: "Does the DUT-server support the EnableInsideStatusLED attribute?" - id: DRLK.S.A002a + - label: "Read all supported optional attributes" + id: SWTCH.C.AO-READ + + - label: "Write all supported mandatory attribute" + id: SWTCH.C.AM-WRITE + # Temperature Measurement Cluster Test Plan - label: - "Does the DUT-server support the EnablePrivacyModeButton attribute?" - id: DRLK.S.A002b + "Does the device implement the temperature measurement cluster as a + server?" + id: TMP.S - label: - "Does the DUT-server support the LocalProgrammingFeatures attribute?" - id: DRLK.S.A002c + "Does the device implement the temperature measurement cluster as a + client?" + id: TMP.C - - label: "Does the DUT-server support the WrongCodeEntryLimit attribute?" - id: DRLK.S.A0030 + # + # server / attributes + # + - label: "Does the device implement the MeasuredValue attribute?" + id: TMP.S.A0000 - - label: - "Does the DUT-server support the UserCodedTemporaryDisableTime - attribute?" - id: DRLK.S.A0031 + - label: "Does the device implement the MinMeasuredValue attribute?" + id: TMP.S.A0001 - - label: "Does the DUT-server support the SendPINOverTheAir attribute?" - id: DRLK.S.A0032 + - label: "Does the device implement the MaxMeasuredValue attribute?" + id: TMP.S.A0002 + + - label: "Does the device implement the Tolerance attribute?" + id: TMP.S.A0003 + # + # server / manually + # - label: - "Does the DUT-server support the RequirePINForRemoteOperation - attribute?" - id: DRLK.S.A0033 + "Can the MeasuredValue attribute changed by physical control at the + device?" + id: TMP.M.ManuallyControlled - - label: "Does the DUT-server support the ExpiringUserTimeOut attribute?" - id: DRLK.S.A0035 + # + # client / manually + # + - label: "Read all supported optional attributes" + id: TMP.C.AO-READ - #Server Event - - label: "Does the DUT-server support the DoorLockAlarm event?" - id: DRLK.S.E00 + - label: "Write all supported optional attributes" + id: TMP.C.AO-WRITE - - label: "Does the DUT-server support the DoorStateChange event?" - id: DRLK.S.E01 + - label: "Read all supported mandatory attribute" + id: TMP.C.AM-READ - - label: "Does the DUT-server support the LockOperation event?" - id: DRLK.S.E02 + - label: "Write all supported mandatory attribute" + id: TMP.C.AM-WRITE - - label: "Does the DUT-server support the LockOperationError event?" - id: DRLK.S.E03 + # Thermostat Cluster Test Plan + - label: "Does the device implement the Thermostat cluster as a server?" + id: TSTAT.S - - label: "Does the DUT-server support the LockUserChange event?" - id: DRLK.S.E04 + - label: "Does the device implement the Thermostat cluster as a client?" + id: TSTAT.C - #Server Features - - label: - "Does the DUT(server) support the 'Lock supports PIN credentials (via - keypad, or over the-air)' feature?" - id: DRLK.S.F00 + # + # server / attributes + # + - label: "Does the device implement the LocalTemperature attribute?" + id: TSTAT.S.A0000 - - label: - "Does the DUT(server) support the 'Lock supports RFID credentials' - feature?" - id: DRLK.S.F01 + - label: "Does the device implement the OutdoorTemperature attribute?" + id: TSTAT.S.A0001 - - label: - "Does the DUT(server) support the 'Lock supports finger related - credentials(fingerprint, fingervein)' feature?" - id: DRLK.S.F02 + - label: "Does the device implement the Occupancy attribute?" + id: TSTAT.S.A0002 - - label: - "Does the DUT(server) support the 'Lock supports user access - schedules' feature?" - id: DRLK.S.F04 + - label: "Does the device implement the AbsMinHeatSetpointLimit attribute?" + id: TSTAT.S.A0003 - - label: - "Does the DUT(server) support the 'Lock supports a door position - sensor that indicates door’s state' feature?" - id: DRLK.S.F05 + - label: "Does the device implement the AbsMaxHeatSetpointLimit attribute?" + id: TSTAT.S.A0004 - - label: - "Does the DUT(server) support the 'Lock supports face related - credentials (face, iris, retina)' feature?" - id: DRLK.S.F06 + - label: "Does the device implement the AbsMinCoolSetpointLimit attribute?" + id: TSTAT.S.A0005 - - label: - "Does the DUT(server) support the 'Lock supports the user commands and - database' feature?" - id: DRLK.S.F08 + - label: "Does the device implement the AbsMaxCoolSetpointLimit attribute?" + id: TSTAT.S.A0006 - - label: - "Does the DUT(server) support the 'Lock supports yearday access - schedules' feature?" - id: DRLK.S.F0a + - label: "Does the device implement the PICoolingDemand attribute?" + id: TSTAT.S.A0007 + + - label: "Does the device implement the PIHeatingDemand attribute?" + id: TSTAT.S.A0008 - label: - "Does the DUT(server) support the 'Lock supports holiday access - schedules' feature?" - id: DRLK.S.F0b + "Does the device implement the HVACSystemTypeConfiguration attribute?" + id: TSTAT.S.A0009 - label: - "Does the DUT(server) support the 'PIN codes over the-air supported - for lock/unlock operations' feature?" - id: DRLK.S.F07 + "Does the device implement the LocalTemperatureCalibration attribute?" + id: TSTAT.S.A0010 - #Server Commands - - label: "Does the DUT-server support the Lock Door command?" - id: DRLK.S.C00.Rsp + - label: "Does the device implement the OccupiedCoolingSetpoint attribute?" + id: TSTAT.S.A0011 - - label: "Does the DUT-server support the Unlock Door command?" - id: DRLK.S.C01.Rsp + - label: "Does the device implement the OccupiedHeatingSetpoint attribute?" + id: TSTAT.S.A0012 - - label: "Does the DUT-server support the UnlockwithTimeout command?" - id: DRLK.S.C03.Rsp + - label: + "Does the device implement the UnoccupiedCoolingSetpoint attribute?" + id: TSTAT.S.A0013 - - label: "Does the DUT-server support the SetWeekDaySchedule command?" - id: DRLK.S.C0b.Rsp + - label: + "Does the device implement the UnoccupiedHeatingSetpoint attribute?" + id: TSTAT.S.A0014 - - label: "Does the DUT-server support the GetWeekDaySchedule command?" - id: DRLK.S.C0c.Rsp + - label: "Does the device implement the MinHeatSetpointLimit attribute?" + id: TSTAT.S.A0015 - - label: "Does the DUT-server support the ClearWeekDaySchedule command?" - id: DRLK.S.C0d.Rsp + - label: "Does the device implement the MaxHeatSetpointLimit attribute?" + id: TSTAT.S.A0016 - - label: "Does the DUT-server support the SetYearDaySchedule command?" - id: DRLK.S.C0e.Rsp + - label: "Does the device implement the MinCoolSetpointLimit attribute?" + id: TSTAT.S.A0017 - - label: "Does the DUT-server support the GetYearDaySchedule command?" - id: DRLK.S.C0f.Rsp + - label: "Does the device implement the MaxCoolSetpointLimit attribute?" + id: TSTAT.S.A0018 - - label: "Does the DUT-server support the ClearYearDaySchedule command?" - id: DRLK.S.C10.Rsp + - label: "Does the device implement the MinSetpointDeadBand attribute?" + id: TSTAT.S.A0019 - - label: "Does the DUT-server support the SetHolidaySchedule command?" - id: DRLK.S.C11.Rsp + - label: "Does the device implement the RemoteSensing attribute?" + id: TSTAT.S.A001a - - label: "Does the DUT-server support the GetHolidaySchedule command?" - id: DRLK.S.C12.Rsp + - label: + "Does the device implement the ControlSequenceOfOperation attribute?" + id: TSTAT.S.A001b - - label: "Does the DUT-server support the ClearHolidaySchedule command?" - id: DRLK.S.C13.Rsp + - label: "Does the device implement the SystemMode attribute?" + id: TSTAT.S.A001c - - label: "Does the DUT-server support the SetUser command?" - id: DRLK.S.C1a.Rsp + - label: "Does the device implement the AlarmMask attribute?" + id: TSTAT.S.A001d - - label: "Does the DUT-server support the GetUser command?" - id: DRLK.S.C1b.Rsp + - label: "Does the device implement the ThermostatRunningMode attribute?" + id: TSTAT.S.A001e - - label: "Does the DUT-server support the Clear User command?" - id: DRLK.S.C1d.Rsp + - label: "Does the device implement the StartOfWeek attribute?" + id: TSTAT.S.A0020 - - label: "Does the DUT-server support the SetCredential command?" - id: DRLK.S.C22.Rsp + - label: + "Does the device implement the NumberOfWeeklyTransitions attribute?" + id: TSTAT.S.A0021 - - label: "Does the DUT-server support the GetCredential command?" - id: DRLK.S.C24.Rsp + - label: "Does the device implement the NumberOfDailyTransitions attribute?" + id: TSTAT.S.A0022 - - label: "Does the DUT-server support the ClearCredential command?" - id: DRLK.S.C26.Rsp + - label: "Does the device implement the TemperatureSetpointHold attribute?" + id: TSTAT.S.A0023 - label: - "Does the DUT-server support the GetWeekDayScheduleResponse command?" - id: DRLK.S.C0c.Tx + "Does the device implement the TemperatureSetpointHoldDuration + attribute?" + id: TSTAT.S.A0024 - label: - "Does the DUT-server support the GetYearDayResponseSchedule command?" - id: DRLK.S.C0f.Tx + "Does the device implement the ThermostatProgrammingOperationMode + attribute?" + id: TSTAT.S.A0025 + + - label: "Does the device implement the ThermostatRunningState attribute?" + id: TSTAT.S.A0029 + + - label: "Does the device implement the SetpointChangeSource attribute?" + id: TSTAT.S.A0030 + + - label: "Does the device implement the SetpointChangeAmount attribute?" + id: TSTAT.S.A0031 - label: - "Does the DUT-server support the GetHolidayScheduleResponse command?" - id: DRLK.S.C12.Tx + "Does the device implement the SetpointChangeSourceTimestamp + attribute?" + id: TSTAT.S.A0032 - - label: "Does the DUT-server support the GetUserResponse command?" - id: DRLK.S.C1c.Tx + - label: "Does the device implement the OccupiedSetback attribute?" + id: TSTAT.S.A0034 - - label: "Does the DUT-server support the SetCredentialResponse command?" - id: DRLK.S.C23.Tx + - label: "Does the device implement the OccupiedSetbackMin attribute?" + id: TSTAT.S.A0035 - - label: "Does the DUT-server support the GetCredentialResponse command?" - id: DRLK.S.C25.Tx + - label: "Does the device implement the OccupiedSetbackMax attribute?" + id: TSTAT.S.A0036 - #client attributes - - label: "Does the DUT-client support the LockState attribute?" - id: DRLK.C.A0000 + - label: "Does the device implement the UnoccupiedSetback attribute?" + id: TSTAT.S.A0037 - - label: "Does the DUT-client support the LockType attribute?" - id: DRLK.C.A0001 + - label: "Does the device implement the UnoccupiedSetbackMin attribute?" + id: TSTAT.S.A0038 - - label: "Does the DUT-client support the ActuatorEnabled attribute?" - id: DRLK.C.A0002 + - label: "Does the device implement the UnoccupiedSetbackMax attribute?" + id: TSTAT.S.A0039 - - label: "Does the DUT-client support the DoorState attribute?" - id: DRLK.C.A0003 + - label: "Does the device implement the EmergencyHeatDelta attribute?" + id: TSTAT.S.A003a - - label: "Does the DUT-client support the DoorOpenEvents attribute?" - id: DRLK.C.A0004 + - label: "Does the device implement the ACType attribute?" + id: TSTAT.S.A0040 - - label: "Does the DUT-client support the DoorClosedEvents attribute?" - id: DRLK.C.A0005 + - label: "Does the device implement the ACCapacity attribute?" + id: TSTAT.S.A0041 + + - label: "Does the device implement the ACRefrigerantType attribute?" + id: TSTAT.S.A0042 + + - label: "Does the device implement the ACCompressorType attribute?" + id: TSTAT.S.A0043 + + - label: "Does the device implement the ACErrorCode attribute?" + id: TSTAT.S.A0044 + + - label: "Does the device implement the ACLouverPosition attribute?" + id: TSTAT.S.A0045 + + - label: "Does the device implement the ACCoilTemperature attribute?" + id: TSTAT.S.A0046 + + - label: "Does the device implement the ACCapacityFormat attribute?" + id: TSTAT.S.A0047 - - label: "Does the DUT-client support the OpenPeriod attribute?" - id: DRLK.C.A0006 + # + # server / commandsReceived + # + - label: + "Does the device implement receiving the SetpointRaiseLower command?" + id: TSTAT.S.C00.Rsp - label: - "Does the DUT-client support the NumberOfTotalUsersSupported - attribute?" - id: DRLK.C.A0011 + "Does the device implement receiving the SetWeeklySchedule command?" + id: TSTAT.S.C01.Rsp - label: - "Does the DUT-client support the NumberofPINUsersSupported attribute?" - id: DRLK.C.A0012 + "Does the device implement receiving the GetWeeklySchedule command?" + id: TSTAT.S.C02.Rsp - label: - "Does the DUT-client support the NumberofRFIDUsersSupported attribute?" - id: DRLK.C.A0013 + "Does the device implement receiving the ClearWeeklySchedule command?" + id: TSTAT.S.C03.Rsp - label: - "Does the DUT-client support the NumberofWeekDaysSchedulesSupported - attribute?" - id: DRLK.C.A0014 + "Does the device implement receiving the GetRelayStatusLog command?" + id: TSTAT.S.C04.Rsp + # + # server / commandsGenerated + # - label: - "Does the DUT-client support the NumberofYearDaysSchedulesSupported - attribute?" - id: DRLK.C.A0015 + "Does the device implement sending the GetWeeklyScheduleResponse + command?" + id: TSTAT.S.C00.Tx - label: - "Does the DUT-client support the NumberofHolidaySchedulesSupported - attribute?" - id: DRLK.C.A0016 + "Does the device implement sending the GetRelayStatusLogResponse + command?" + id: TSTAT.S.C01.Tx - - label: "Does the DUT-client support the MaxPINCodeLength attribute?" - id: DRLK.C.A0017 + # + # server / features + # + - label: "Thermostat is capable of managing a heating device" + id: TSTAT.S.F00 - - label: "Does the DUT-client support the MinPINCodeLength attribute?" - id: DRLK.C.A0018 + - label: "Thermostat is capable of managing a cooling device" + id: TSTAT.S.F01 - - label: "Does the DUT-client support the MaxRFIDCodeLength attribute?" - id: DRLK.C.A0019 + - label: "Supports Occupied and Unoccupied setpoints" + id: TSTAT.S.F02 - - label: "Does the DUT-client support the MinRFIDCodeLength attribute?" - id: DRLK.C.A001a + - label: "Supports a weekly schedule of setpoint transitions" + id: TSTAT.S.F03 - - label: "Does the DUT-client support the CredentialRulesSupport attribute?" - id: DRLK.C.A001b + - label: "Supports configurable setback (or span)" + id: TSTAT.S.F04 - - label: - "Does the DUT-client support the NumberOfCredentialsSupportedPerUser - attribute?" - id: DRLK.C.A001c + - label: "Supports a System Mode of Auto" + id: TSTAT.S.F05 - - label: "Does the DUT-client support the Language attribute?" - id: DRLK.C.A0021 + # + # server / manually + # + - label: "Is the HVACSystemTypeConfiguration attribute writeable?" + id: TSTAT.S.M.HVACSystemTypeConfigurationWritable - - label: "Does the DUT-client support the LEDSettings attribute?" - id: DRLK.C.A0022 + - label: "Is the MinSetpointDeadBand attribute writeable?" + id: TSTAT.S.M.MinSetpointDeadBandWritable - - label: "Does the DUT-client support the AutoRelockTime attribute?" - id: DRLK.C.A0023 + # + # client / commandsReceived + # + - label: + "Does the device implement receiving the GetWeeklyScheduleResponse + command?" + id: TSTAT.C.C00.Rsp - - label: "Does the DUT-client support the SoundVolume attribute?" - id: DRLK.C.A0024 + - label: + "Does the device implement receiving the GetRelayStatusLogResponse + command?" + id: TSTAT.C.C01.Rsp - - label: "Does the DUT-client support the OperatingMode attribute?" - id: DRLK.C.A0025 + # + # client / commandsGenerated + # + - label: "Does the device implement sending the SetpointRaiseLower command?" + id: TSTAT.C.C00.Tx - - label: - "Does the DUT-client support the SupportedOperatingModes attribute?" - id: DRLK.C.A0026 + - label: "Does the device implement sending the SetWeeklySchedule command?" + id: TSTAT.C.C01.Tx + + - label: "Does the device implement sending the GetWeeklySchedule command?" + id: TSTAT.C.C02.Tx - label: - "Does the DUT-client support the DefaultConfigurationRegister - attribute?" - id: DRLK.C.A0027 + "Does the device implement sending the ClearWeeklySchedule command?" + id: TSTAT.C.C03.Tx - - label: "Does the DUT-client support the EnableLocalProgramming attribute?" - id: DRLK.C.A0028 + - label: "Does the device implement sending the GetRelayStatusLog command?" + id: TSTAT.C.C04.Tx - - label: "Does the DUT-client support the EnableOneTouchLocking attribute?" - id: DRLK.C.A0029 + # + # client / manually + # + - label: "Read all supported optional attributes" + id: TSTAT.C.AO-READ - - label: "Does the DUT-client support the EnableInsideStatusLED attribute?" - id: DRLK.C.A002a + - label: "Write all supported optional attributes" + id: TSTAT.C.AO-WRITE + + - label: "Write all supported mandatory attribute" + id: TSTAT.C.AM-WRITE + + - label: "Read all supported mandatory attribute" + id: TSTAT.C.AM-READ + # Thermostat User Configuration Cluster Test Plan - label: - "Does the DUT-client support the EnablePrivacyModeButton attribute?" - id: DRLK.C.A002b + "Does the device implement the Thermostat User Configuration cluster + as a server?" + id: TSUIC.S - label: - "Does the DUT-client support the LocalProgrammingFeatures attribute?" - id: DRLK.C.A002c + "Does the device implement the Thermostat User Configuration cluster + as a client?" + id: TSUIC.C - - label: "Does the DUT-client support the WrongCodeEntryLimit attribute?" - id: DRLK.C.A0030 + # + # server / attributes + # + - label: "Does the device implement the TemperatureDisplayMode attribute?" + id: TSUIC.S.A0000 + + - label: "Does the device implement the KeypadLockout attribute?" + id: TSUIC.S.A0001 - label: - "Does the DUT-client support the UserCodedTemporaryDisableTime + "Does the device implement the ScheduleProgrammingVisibility attribute?" - id: DRLK.C.A0031 + id: TSUIC.S.A0002 - - label: "Does the DUT-client support the SendPINOverTheAir attribute?" - id: DRLK.C.A0032 + # + # client / manually + # + - label: "Read all supported mandatory attribute" + id: TSUIC.C.AM-READ - - label: - "Does the DUT-client support the RequirePINForRemoteOperation - attribute?" - id: DRLK.C.A0033 + - label: "Write all supported mandatory attribute" + id: TSUIC.C.AM-WRITE - - label: "Does the DUT-client support the ExpiringUserTimeOut attribute?" - id: DRLK.C.A0035 + - label: "Read all supported optional attributes" + id: TSUIC.C.AO-READ - #Client event - - label: "Does the DUT-client support the DoorLockAlarm event?" - id: DRLK.C.E00 + - label: "Write all supported optional attributes" + id: TSUIC.C.AO-WRITE - - label: "Does the DUT-client support the DoorStateChange event?" - id: DRLK.C.E01 + # Thread Network Diagnostics Cluster Test Plan + - label: + "Does the device implement the Thread Diagnostics cluster as a server?" + id: DGTHREAD.S - - label: "Does the DUT-client support the LockOperation event?" - id: DRLK.C.E02 + - label: + "Does the device implement the Thread Diagnostics cluster as a client?" + id: DGTHREAD.C - - label: "Does the DUT-client support the LockOperationError event?" - id: DRLK.C.E03 + # + # server / attributes + # + - label: "Does the DUT(server) support the Channel attribute?" + id: DGTHREAD.S.A0000 - - label: "Does the DUT-client support the LockUserChange event?" - id: DRLK.C.E04 + - label: "Does the DUT(server) support the RoutingRole attribute?" + id: DGTHREAD.S.A0001 - #Client Features - - label: - "Does the DUT(client) support the 'Lock supports PIN credentials (via - keypad, or over the-air)' feature?" - id: DRLK.C.F00 + - label: "Does the DUT(server) support the NetworkName attribute?" + id: DGTHREAD.S.A0002 - - label: - "Does the DUT(client) support the 'Lock supports RFID credentials' - feature?" - id: DRLK.C.F01 + - label: "Does the DUT(server) support the PanId attribute?" + id: DGTHREAD.S.A0003 - - label: - "Does the DUT(client) support the 'Lock supports finger related - credentials(fingerprint, fingervein)' feature?" - id: DRLK.C.F02 + - label: "Does the DUT(server) support the ExtendedPanId attribute?" + id: DGTHREAD.S.A0004 - - label: - "Does the DUT(client) support the 'Lock supports user access - schedules' feature?" - id: DRLK.C.F04 + - label: "Does the DUT(server) support the MeshLocalPrefix attribute?" + id: DGTHREAD.S.A0005 - - label: - "Does the DUT(client) support the 'Lock supports a door position - sensor that indicates door’s state' feature?" - id: DRLK.C.F05 + - label: "Does the DUT(server) support the OverrunCount attribute?" + id: DGTHREAD.S.A0006 - - label: - "Does the DUT(client) support the 'Lock supports face related - credentials (face, iris, retina)' feature?" - id: DRLK.C.F06 + - label: "Does the DUT(server) support the NeighborTable attribute?" + id: DGTHREAD.S.A0007 - - label: - "Does the DUT(client) support the 'Lock supports the user commands and - database' feature?" - id: DRLK.C.F08 + - label: "Does the DUT(server) support the RouteTable attribute?" + id: DGTHREAD.S.A0008 - - label: - "Does the DUT(client) support the 'PIN codes over the-air supported - for lock/unlock operations' feature?" - id: DRLK.C.F07 + - label: "Does the DUT(server) support the PartitionId attribute?" + id: DGTHREAD.S.A0009 - #Client Commands - - label: "Does the DUT(Client) support the Lock Door command?" - id: DRLK.C.C00.Tx + - label: "Does the DUT(server) support the Weighting attribute?" + id: DGTHREAD.S.A000a - - label: "Does the DUT(Client) support the Unlock Door command?" - id: DRLK.C.C01.Tx + - label: "Does the DUT(server) support the DataVersion attribute?" + id: DGTHREAD.S.A000b - - label: "Does the DUT(Client) support the Unlock with Timeout command?" - id: DRLK.C.C03.Tx + - label: "Does the DUT(server) support the StableDataVersion attribute?" + id: DGTHREAD.S.A000c - - label: "Does the DUT(Client) support the Set Week Day Schedule command?" - id: DRLK.C.C0b.Tx + - label: "Does the DUT(server) support the LeaderRouterId attribute?" + id: DGTHREAD.S.A000d - - label: "Does the DUT(Client) support the Get Week Day Schedule command?" - id: DRLK.C.C0c.Tx + - label: "Does the DUT(server) support the DetachedRoleCount attribute?" + id: DGTHREAD.S.A000e - - label: "Does the DUT(Client) support the Clear Week Day Schedule command?" - id: DRLK.C.C0d.Tx + - label: "Does the DUT(server) support the ChildRoleCount attribute?" + id: DGTHREAD.S.A000f - - label: "Does the DUT(Client) support the Set Year Day Schedule command?" - id: DRLK.C.C0e.Tx + - label: "Does the DUT(server) support the RouterRoleCount attribute?" + id: DGTHREAD.S.A0010 - - label: "Does the DUT(Client) support the Get Year Day Schedule command?" - id: DRLK.C.C0f.Tx + - label: "Does the DUT(server) support the LeaderRoleCount attribute?" + id: DGTHREAD.S.A0011 - - label: "Does the DUT(Client) support the Clear Year Day Schedule command?" - id: DRLK.C.C10.Tx + - label: "Does the DUT(server) support the AttachAttemptCount attribute?" + id: DGTHREAD.S.A0012 - - label: "Does the DUT(Client) support the Set Holiday Schedule command?" - id: DRLK.C.C11.Tx + - label: + "Does the DUT(server) support the PartitionIdChangeCount attribute?" + id: DGTHREAD.S.A0013 - - label: "Does the DUT(Client) support the Get Holiday Schedule command?" - id: DRLK.C.C12.Tx + - label: + "Does the DUT(server) support the BetterPartitionAttachAttemptCount + attribute?" + id: DGTHREAD.S.A0014 - - label: "Does the DUT(Client) support the Clear Holiday Schedule command?" - id: DRLK.C.C13.Tx + - label: "Does the DUT(server) support the ParentChangeCount attribute?" + id: DGTHREAD.S.A0015 - - label: "Does the DUT(Client) support the Set User command?" - id: DRLK.C.C1a.Tx + - label: "Does the DUT(server) support the TxTotalCount attribute?" + id: DGTHREAD.S.A0016 - - label: "Does the DUT-client support the GetUser command?" - id: DRLK.C.C1b.Tx + - label: "Does the DUT(server) support the TxUnicastCount attribute?" + id: DGTHREAD.S.A0017 - - label: "Does the DUT-client support the Clear User command?" - id: DRLK.C.C1d.Tx + - label: "Does the DUT(server) support the TxBroadcastCount attribute?" + id: DGTHREAD.S.A0018 - - label: "Does the DUT-client support the SetCredential command?" - id: DRLK.C.C22.Tx + - label: "Does the DUT(server) support the TxAckRequestedCount attribute?" + id: DGTHREAD.S.A0019 - - label: "Does the DUT-client support the GetCredential command?" - id: DRLK.C.C24.Tx + - label: "Does the DUT(server) support the TxAckedCount attribute?" + id: DGTHREAD.S.A001a - - label: "Does the DUT-client support the ClearCredential command?" - id: DRLK.C.C26.Tx + - label: "Does the DUT(server) support the TxNoAckRequestedCount attribute?" + id: DGTHREAD.S.A001b - - label: - "Does the DUT-client support the GetWeekDayScheduleResponse command?" - id: DRLK.C.C0c.Rsp + - label: "Does the DUT(server) support the TxDataCount attribute?" + id: DGTHREAD.S.A001c - - label: - "Does the DUT-client support the GetYearDayResponseSchedule command?" - id: DRLK.C.C0f.Rsp + - label: "Does the DUT(server) support the TxDataPollCount attribute?" + id: DGTHREAD.S.A001d - - label: - "Does the DUT-client support the GetHolidayScheduleResponse command?" - id: DRLK.C.C12.Rsp + - label: "Does the DUT(server) support the TxBeaconCount attribute?" + id: DGTHREAD.S.A001e - - label: "Does the DUT-client support the GetUserResponse command?" - id: DRLK.C.C1c.Rsp + - label: "Does the DUT(server) support the TxBeaconRequestCount attribute?" + id: DGTHREAD.S.A001f - - label: "Does the DUT-client support the SetCredentialResponse command?" - id: DRLK.C.C23.Rsp + - label: "Does the DUT(server) support the TxOtherCount attribute?" + id: DGTHREAD.S.A0020 - - label: "Does the DUT-client support the GetCredentialResponse command?" - id: DRLK.C.C25.Rsp + - label: "Does the DUT(server) support the TxRetryCount attribute?" + id: DGTHREAD.S.A0021 - #Device Management - #Server Attributes - - label: "Does the DUT(server) support the DataModelRevision attribute?" - id: BINFO.S.A0000 + - label: + "Does the DUT(server) support the TxDirectMaxRetryExpiryCount + attribute?" + id: DGTHREAD.S.A0022 - - label: "Does the DUT(server) support the VendorName attribute?" - id: BINFO.S.A0001 + - label: + "Does the DUT(server) support the TxIndirectMaxRetryExpiryCount + attribute?" + id: DGTHREAD.S.A0023 - - label: "Does the DUT(server) support the VendorID attribute?" - id: BINFO.S.A0002 + - label: "Does the DUT(server) support the TxErrCcaCount attribute?" + id: DGTHREAD.S.A0024 - - label: "Does the DUT(server) support the ProductName attribute?" - id: BINFO.S.A0003 + - label: "Does the DUT(server) support the TxErrAbortCount attribute?" + id: DGTHREAD.S.A0025 - - label: "Does the DUT(server) support the ProductID attribute?" - id: BINFO.S.A0004 + - label: "Does the DUT(server) support the TxErrBusyChannelCount attribute?" + id: DGTHREAD.S.A0026 - - label: "Does the DUT(server) support the NodeLabel attribute?" - id: BINFO.S.A0005 + - label: "Does the DUT(server) support the RxTotalCount attribute?" + id: DGTHREAD.S.A0027 - - label: "Does the DUT(server) support the Location attribute?" - id: BINFO.S.A0006 + - label: "Does the DUT(server) support the RxUnicastCount attribute?" + id: DGTHREAD.S.A0028 - - label: "Does the DUT(server) support the HardwareVersion attribute?" - id: BINFO.S.A0007 + - label: "Does the DUT(server) support the RxBroadcastCount attribute?" + id: DGTHREAD.S.A0029 - - label: "Does the DUT(server) support the HardwareVersionString attribute?" - id: BINFO.S.A0008 + - label: "Does the DUT(server) support the RxDataCount attribute?" + id: DGTHREAD.S.A002a - - label: "Does the DUT(server) support the SoftwareVersion attribute?" - id: BINFO.S.A0009 + - label: "Does the DUT(server) support the RxDataPollCount attribute?" + id: DGTHREAD.S.A002b - - label: "Does the DUT(server) support the SoftwareVersionString attribute?" - id: BINFO.S.A000a + - label: "Does the DUT(server) support the RxBeaconCount attribute?" + id: DGTHREAD.S.A002c - - label: "Does the DUT(server) support the ManufacturingDate attribute?" - id: BINFO.S.A000b + - label: "Does the DUT(server) support the RxBeaconRequestCount attribute?" + id: DGTHREAD.S.A002d - - label: "Does the DUT(server) support the PartNumber attribute?" - id: BINFO.S.A000c + - label: "Does the DUT(server) support the RxOtherCount attribute?" + id: DGTHREAD.S.A002e - - label: "Does the DUT(server) support the ProductURL attribute?" - id: BINFO.S.A000d + - label: + "Does the DUT(server) support the RxAddressFilteredCount attribute?" + id: DGTHREAD.S.A002f - - label: "Does the DUT(server) support the ProductLabel attribute?" - id: BINFO.S.A000e + - label: + "Does the DUT(server) support the RxDestAddrFilteredCount attribute?" + id: DGTHREAD.S.A0030 - - label: "Does the DUT(server) support the SerialNumber attribute?" - id: BINFO.S.A000f + - label: "Does the DUT(server) support the RxDuplicatedCount attribute?" + id: DGTHREAD.S.A0031 - - label: "Does the DUT(server) support the LocalConfigDisabled attribute?" - id: BINFO.S.A0010 + - label: "Does the DUT(server) support the RxErrNoFrameCount attribute?" + id: DGTHREAD.S.A0032 - - label: "Does the DUT(server) support the Reachable attribute?" - id: BINFO.S.A0011 + - label: + "Does the DUT(server) support the RxErrUnknownNeighborCount attribute?" + id: DGTHREAD.S.A0033 - - label: "Does the DUT(server) support the UniqueID attribute?" - id: BINFO.S.A0012 + - label: + "Does the DUT(server) support the RxErrInvalidScrAddrCount attribute?" + id: DGTHREAD.S.A0034 - - label: "Does the DUT(server) support the CapabilityMinima attribute?" - id: BINFO.S.A0013 + - label: "Does the DUT(server) support the RxErrSecCount attribute?" + id: DGTHREAD.S.A0035 - #Events - - label: "Does the DUT(server) support the StartUp event?" - id: BINFO.S.E00 + - label: "Does the DUT(server) support the RxErrFcsCount attribute?" + id: DGTHREAD.S.A0036 + + - label: "Does the DUT(server) support the RxErrOtherCount attribute?" + id: DGTHREAD.S.A0037 + + - label: "Does the DUT(server) support the ActiveTimestamp attribute?" + id: DGTHREAD.S.A0038 - - label: "Does the DUT(server) support the ShutDown event?" - id: BINFO.S.E01 + - label: "Does the DUT(server) support the PendingTimestamp attribute?" + id: DGTHREAD.S.A0039 - - label: "Does the DUT(server) support the Leave event?" - id: BINFO.S.E02 + - label: "Does the DUT(server) support the Delay attribute?" + id: DGTHREAD.S.A003a - - label: "Does the DUT(server) support the ReachableChanged event?" - id: BINFO.S.E03 + - label: "Does the DUT(server) support the SecurityPolicy attribute?" + id: DGTHREAD.S.A003b - #Features - - label: "Does the device implement the Wi-Fi related features ?" - id: CNET.S.F00 + - label: "Does the DUT(server) support the ChannelPage0Mask attribute?" + id: DGTHREAD.S.A003c - - label: "Does the device implement the Thread related features" - id: CNET.S.F01 + - label: + "Does the DUT(server) support the OperationalDatasetComponents + attribute?" + id: DGTHREAD.S.A003d - - label: "Does the device implement the Ethernet related features ?" - id: CNET.S.F02 + - label: "Does the DUT(server) support the ActiveNetworkFaults attribute?" + id: DGTHREAD.S.A003e - #Client Attributes - - label: "Does the DUT(Client) support the DataModelRevision attribute?" - id: BINFO.C.A0000 + # + # server / commandsReceived + # + - label: + "Does the Device(Server) implement receiving the ResetCounts command?" + id: DGTHREAD.S.C00.Rsp - - label: "Does the DUT(Client) support the VendorName attribute?" - id: BINFO.C.A0001 + # + # server / Events + # + - label: "Does the DUT(server) support the ConnectionStatus event?" + id: DGTHREAD.S.E00 - - label: "Does the DUT(Client) support the VendorID attribute?" - id: BINFO.C.A0002 + - label: "Does the DUT(server) support the NetworkFaultChange event?" + id: DGTHREAD.S.E01 - - label: "Does the DUT(Client) support the ProductName attribute?" - id: BINFO.C.A0003 + # + # server / features + # + - label: + "Does the DUT(server) support the Server supports the counts for the + number of received and transmitted packets feature?" + id: DGTHREAD.S.F00 - - label: "Does the DUT(Client) support the ProductID attribute?" - id: BINFO.C.A0004 + - label: + "Does the DUT(server) support the Server supports the counts for the + number of errors that have occurred during the reception and + transmission feature?" + id: DGTHREAD.S.F01 - - label: "Does the DUT(Client) support the NodeLabel attribute?" - id: BINFO.C.A0005 + - label: + "Does the DUT(server) support the Server supports the counts for + various MLE layer happenings. feature?" + id: DGTHREAD.S.F02 - - label: "Does the DUT(Client) support the Location attribute?" - id: BINFO.C.A0006 + - label: + "Does the DUT(server) support the Server supports the counts for + various MAC layer happenings feature?" + id: DGTHREAD.S.F03 - - label: "Does the DUT(Client) support the HardwareVersion attribute?" - id: BINFO.C.A0007 + # + # client / attributes + # + - label: + "Does the DUT(client) have access privileges for the Channel attribute + implemented on the server?" + id: DGTHREAD.C.A0000 - - label: "Does the DUT(Client) support the HardwareVersionString attribute?" - id: BINFO.C.A0008 + - label: + "Does the DUT(clientr) support the RoutingRole attribute implemented + on the server?" + id: DGTHREAD.C.A0001 - - label: "Does the DUT(Client) support the SoftwareVersion attribute?" - id: BINFO.C.A0009 + - label: + "Does the DUT(client) have access privileges for the NetworkName + attribute implemented on the server?" + id: DGTHREAD.C.A0002 - - label: "Does the DUT(Client) support the SoftwareVersionString attribute?" - id: BINFO.C.A000a + - label: + "Does the DUT(client) have access privileges for the PanId attribute + implemented on the server?" + id: DGTHREAD.C.A0003 - - label: "Does the DUT(Client) support the ManufacturingDate attribute?" - id: BINFO.C.A000b + - label: + "Does the DUT(clientr) support the ExtendedPanId attribute implemented + on the server?" + id: DGTHREAD.C.A0004 - - label: "Does the DUT(Client) support the PartNumber attribute?" - id: BINFO.C.A000c + - label: + "Does the DUT(client) have access privileges for the MeshLocalPrefix + attribute implemented on the server?" + id: DGTHREAD.C.A0005 - - label: "Does the DUT(Client) support the ProductURL attribute?" - id: BINFO.C.A000d + - label: + "Does the DUT(client) have access privileges for the OverrunCount + attribute implemented on the server?" + id: DGTHREAD.C.A0006 - - label: "Does the DUT(Client) support the ProductLabel attribute?" - id: BINFO.C.A000e + - label: + "Does the DUT(client) have access privileges for the NeighborTable + attribute implemented on the server?" + id: DGTHREAD.C.A0007 - - label: "Does the DUT(Client) support the SerialNumber attribute?" - id: BINFO.C.A000f + - label: + "Does the DUT(client) have access privileges for the RouteTable + attribute implemented on the server?" + id: DGTHREAD.C.A0008 - - label: "Does the DUT(Client) support the LocalConfigDisabled attribute?" - id: BINFO.C.A0010 + - label: + "Does the DUT(client) have access privileges for the PartitionId + attribute implemented on the server?" + id: DGTHREAD.C.A0009 - - label: "Does the DUT(Client) support the Reachable attribute?" - id: BINFO.C.A0011 + - label: + "Does the DUT(server) support the Weighting attribute implemented on + the server?" + id: DGTHREAD.C.A000a - - label: "Does the DUT(Client) support the UniqueID attribute?" - id: BINFO.C.A0012 + - label: + "Does the DUT(client) have access privileges for the DataVersion + attribute implemented on the server?" + id: DGTHREAD.C.A000b - - label: "Does the DUT(Client) support the CapabilityMinima attribute?" - id: BINFO.C.A0013 + - label: + "Does the DUT(client) have access privileges for the StableDataVersion + attribute implemented on the server?" + id: DGTHREAD.C.A000c - #Events - - label: "Does the DUT(Client) support the StartUp event?" - id: BINFO.C.E00 + - label: + "Does the DUT(client) have access privileges for the LeaderRouterId + attribute implemented on the server?" + id: DGTHREAD.C.A000d - - label: "Does the DUT(Client) support the ShutDown event?" - id: BINFO.C.E01 + - label: + "Does the DUT(client) have access privileges for the DetachedRoleCount + attribute implemented on the server?" + id: DGTHREAD.C.A000e - - label: "Does the DUT(Client) support the Leave event?" - id: BINFO.C.E02 + - label: + "Does the DUT(client) have access privileges for the ChildRoleCount + attribute implemented on the server?" + id: DGTHREAD.C.A000f - - label: "Does the DUT(Client)) support the ReachableChanged event?" - id: BINFO.C.E03 + - label: + "Does the DUT(client) have access privileges for the RouterRoleCount + attribute implemented on the server?" + id: DGTHREAD.C.A0010 - #NetworkCommissioning Cluster - #Server Attributes - - label: "Does the DUT(Server) support MaxNetworks attribute?" - id: CNET.S.A0000 + - label: + "Does the DUT(client) have access privileges for the LeaderRoleCount + attribute implemented on the server?" + id: DGTHREAD.C.A0011 - - label: "Does the DUT(Server) support Networks attribute?" - id: CNET.S.A0001 + - label: + "Does the DUT(client) have access privileges for the + AttachAttemptCount attribute implemented on the server?" + id: DGTHREAD.C.A0012 - - label: "Does the DUT(Server) support ScanMaxTimeSeconds attribute?" - id: CNET.S.A0002 + - label: + "Does the DUT(client) have access privileges for the + PartitionIdChangeCount attribute implemented on the server?" + id: DGTHREAD.C.A0013 - - label: "Does the DUT(Server) support ConnectMaxTimeSeconds attribute?" - id: CNET.S.A0003 + - label: + "Does the DUT(client) have access privileges for the + BetterPartitionAttachAttemptCount attribute implemented on the server?" + id: DGTHREAD.C.A0014 - - label: "Does the DUT(Server) support InterfaceEnabled attribute?" - id: CNET.S.A0004 + - label: + "Does the DUT(client) have access privileges for the ParentChangeCount + attribute implemented on the server?" + id: DGTHREAD.C.A0015 - - label: "Does the DUT(Server) support LastNetworkingStatus attribute?" - id: CNET.S.A0005 + - label: + "Does the DUT(client) have access privileges for the TxTotalCount + attribute implemented on the server?" + id: DGTHREAD.C.A0016 - - label: "Does the DUT(Server) support LastNetworkID attribute?" - id: CNET.S.A0006 + - label: + "Does the DUT(client) have access privileges for the TxUnicastCount + attribute implemented on the server?" + id: DGTHREAD.C.A0017 - - label: "Does the DUT(Server) support LastConnectErrorValue attribute?" - id: CNET.S.A0007 + - label: + "Does the DUT(client) have access privileges for the TxBroadcastCount + attribute implemented on the server?" + id: DGTHREAD.C.A0018 - #Server Commands - label: - "Does the Device(Server) implement receiving the ScanNetworks command?" - id: CNET.S.C00.Rsp + "Does the DUT(client) have access privileges for the + TxAckRequestedCount attribute implemented on the server?" + id: DGTHREAD.C.A0019 - label: - "Does the Device(Server) invoking/generating the ScanNetworksResponse - command?" - id: CNET.S.C01.Tx + "Does the DUT(client) have access privileges for the TxAckedCount + attribute implemented on the server?" + id: DGTHREAD.C.A001a - label: - "Does the Device(Server) implement receiving the - AddOrUpdateWiFiNetwork command?" - id: CNET.S.C02.Rsp + "Does the DUT(client) have access privileges for the + TxNoAckRequestedCount attribute implemented on the server?" + id: DGTHREAD.C.A001b - label: - "Does the Device(Server) implement receiving the - AddOrUpdateThreadNetwork command?" - id: CNET.S.C03.Rsp + "Does the DUT(client) have access privileges for the TxDataCount + attribute implemented on the server?" + id: DGTHREAD.C.A001c - label: - "Does the Device(Server) implement receiving the RemoveNetwork - command?" - id: CNET.S.C04.Rsp + "Does the DUT(client) have access privileges for the TxDataPollCount + attribute implemented on the server?" + id: DGTHREAD.C.A001d - label: - "Does the Device(Server) invoking/generating the NetworkConfigResponse - command?" - id: CNET.S.C05.Tx + "Does the DUT(client) have access privileges for the TxBeaconCount + attribute implemented on the server?" + id: DGTHREAD.C.A001e - label: - "Does the Device(Server) implement receiving the ConnectNetwork - command?" - id: CNET.S.C06.Rsp + "Does the DUT(client) have access privileges for the + TxBeaconRequestCount attribute implemented on the server?" + id: DGTHREAD.C.A001f - label: - "Does the Device(Server) invoking/generating the - ConnectNetworkResponse command?" - id: CNET.S.C07.Tx + "Does the DUT(client) have access privileges for the TxOtherCount + attribute implemented on the server?" + id: DGTHREAD.C.A0020 - label: - "Does the Device(Server) implement receiving the ReorderNetwork - command?" - id: CNET.S.C08.Rsp + "Does the DUT(client) have access privileges for the TxRetryCount + attribute implemented on the server?" + id: DGTHREAD.C.A0021 - #Client Attributes - - label: "Does the DUT(Client) support MaxNetworks attribute?" - id: CNET.C.A0000 + - label: + "Does the DUT(client) have access privileges for the + TxDirectMaxRetryExpiryCount attribute implemented on the server?" + id: DGTHREAD.C.A0022 - - label: "Does the DUT(Client) support Networks attribute?" - id: CNET.C.A0001 + - label: + "Does the DUT(client) have access privileges for the + TxIndirectMaxRetryExpiryCount attribute implemented on the server?" + id: DGTHREAD.C.A0023 - - label: "Does the DUT(Client) support ScanMaxTimeSeconds attribute?" - id: CNET.C.A0002 + - label: + "Does the DUT(client) have access privileges for the TxErrCcaCount + attribute implemented on the server?" + id: DGTHREAD.C.A0024 - - label: "Does the DUT(Client) support ConnectMaxTimeSeconds attribute?" - id: CNET.C.A0003 + - label: + "Does the DUT(client) have access privileges for the TxErrAbortCount + attribute implemented on the server?" + id: DGTHREAD.C.A0025 - - label: "Does the DUT(Client) support InterfaceEnabled attribute?" - id: CNET.C.A0004 + - label: + "Does the DUT(client) have access privileges for the + TxErrBusyChannelCount attribute implemented on the server?" + id: DGTHREAD.C.A0026 - - label: "Does the DUT(Client) support LastNetworkingStatus attribute?" - id: CNET.C.A0005 + - label: + "Does the DUT(client) have access privileges for the RxTotalCount + attribute implemented on the server?" + id: DGTHREAD.C.A0027 - - label: "Does the DUT(Client) support LastNetworkID attribute?" - id: CNET.C.A0006 + - label: + "Does the DUT(client) have access privileges for the RxUnicastCount + attribute implemented on the server?" + id: DGTHREAD.C.A0028 - - label: "Does the DUT(Client) support LastConnectErrorValue attribute?" - id: CNET.C.A0007 + - label: + "Does the DUT(client) have access privileges for the RxBroadcastCount + attribute implemented on the server?" + id: DGTHREAD.C.A0029 - #Client Commands - label: - "Does the Device(Client) invoking/generating the ScanNetworks command?" - id: CNET.C.C00.Tx + "Does the DUT(client) have access privileges for the RxDataCount + attribute implemented on the server?" + id: DGTHREAD.C.A002a - label: - "Does the Device(Client) invoking/generating the - AddOrUpdateWiFiNetwork command?" - id: CNET.C.C02.Tx + "Does the DUT(client) have access privileges for the RxDataPollCount + attribute implemented on the server?" + id: DGTHREAD.C.A002b - label: - "Does the Device(Client) invoking/generating the - AddOrUpdateThreadNetwork command?" - id: CNET.C.C03.Tx + "Does the DUT(client) have access privileges for the RxBeaconCount + attribute implemented on the server?" + id: DGTHREAD.C.A002c - label: - "Does the Device(Client) invoking/generating the RemoveNetwork - command?" - id: CNET.C.C04.Tx + "Does the DUT(client) have access privileges for the + RxBeaconRequestCount attribute implemented on the server?" + id: DGTHREAD.C.A002d - label: - "Does the Device(Client) invoking/generating the ConnectNetwork - command?" - id: CNET.C.C06.Tx + "Does the DUT(client) have access privileges for the RxOtherCount + attribute implemented on the server?" + id: DGTHREAD.C.A002e - label: - "Does the Device(Client) invoking/generating the ReorderNetwork - command?" - id: CNET.C.C08.Tx + "Does the DUT(client) have access privileges for the + RxAddressFilteredCount attribute implemented on the server?" + id: DGTHREAD.C.A002f - #Node Operational Credential - #Server Attributes - label: - "Factory Reset DUT (to ensure NOC list is empty at the beginning of - the following steps)" - id: MCORE.FACTORY_RESET - - - label: "Does the DUT(server) support the NOC list attribute?" - id: OPCREDS.S.A0000 + "Does the DUT(client) have access privileges for the + RxDestAddrFilteredCount attribute implemented on the server?" + id: DGTHREAD.C.A0030 - - label: "Does the DUT(server) support the Fabrics list attribute?" - id: OPCREDS.S.A0001 + - label: + "Does the DUT(client) have access privileges for the RxDuplicatedCount + attribute implemented on the server?" + id: DGTHREAD.C.A0031 - - label: "Does the DUT(server) support the SupportedFabrics attribute?" - id: OPCREDS.S.A0002 + - label: + "Does the DUT(client) have access privileges for the RxErrNoFrameCount + attribute implemented on the server?" + id: DGTHREAD.C.A0032 - - label: "Does the DUT(server) support the CommissionedFabrics attribute?" - id: OPCREDS.S.A0003 + - label: + "Does the DUT(client) have access privileges for the + RxErrUnknownNeighborCount attribute implemented on the server?" + id: DGTHREAD.C.A0033 - label: - "Does the DUT(server) support the TrustedRootCertificates attribute?" - id: OPCREDS.S.A0004 + "Does the DUT(client) have access privileges for the + RxErrInvalidScrAddrCount attribute implemented on the server?" + id: DGTHREAD.C.A0034 - - label: "Does the DUT(server) support the CurrentFabricIndex attribute?" - id: OPCREDS.S.A0005 + - label: + "Does the DUT(client) have access privileges for the RxErrSecCount + attribute implemented on the server?" + id: DGTHREAD.C.A0035 - - label: "Does the DUT(server) support the NOC Certificate attribute?" - id: OPCREDS.S.A0006 + - label: + "Does the DUT(client) have access privileges for the RxErrFcsCount + attribute implemented on the server?" + id: DGTHREAD.C.A0036 - - label: "Does the DUT(server) support the ICAC Certificate attribute?" - id: OPCREDS.S.A0007 + - label: + "Does the DUT(client) have access privileges for the RxErrOtherCount + attribute implemented on the server?" + id: DGTHREAD.C.A0037 - #Server Commands - label: - "Does the Device(Server) implement receiving the AttestationRequest - command?" - id: OPCREDS.S.C00.Rsp + "Does the DUT(client) have access privileges for the ActiveTimestamp + attribute implemented on the server?" + id: DGTHREAD.C.A0038 - label: - "Does the Device(Server) invoking/generating the AttestationResponse - command?" - id: OPCREDS.S.C01.Tx + "Does the DUT(client) have access privileges for the PendingTimestamp + attribute implemented on the server?" + id: DGTHREAD.C.A0039 - label: - "Does the Device(Server) implement receiving the - CertificateChainRequest command?" - id: OPCREDS.S.C02.Rsp + "Does the DUT(client) have access privileges for the Delay attribute + implemented on the server?" + id: DGTHREAD.C.A003a - label: - "Does the Device(Server) invoking/generating the - CertificateChainResponse command?" - id: OPCREDS.S.C03.Tx + "Does the DUT(client) have access privileges for the SecurityPolicy + attribute implemented on the server?" + id: DGTHREAD.C.A003b - label: - "Does the Device(Server) implement receiving the CSRRequest command?" - id: OPCREDS.S.C04.Rsp + "Does the DUT(client) have access privileges for the ChannelPage0Mask + attribute implemented on the server?" + id: DGTHREAD.C.A003c - label: - "Does the Device(Server) invoking/generating the CSRResponse command?" - id: OPCREDS.S.C05.Tx + "Does the DUT(client) have access privileges for the + OperationalDatasetComponents attribute implemented on the server?" + id: DGTHREAD.C.A003d - - label: "Does the Device(Server) implement receiving the AddNOC command?" - id: OPCREDS.S.C06.Rsp + - label: + "Does the DUT(client) have access privileges for the + ActiveNetworkFaults attribute implemented on the server?" + id: DGTHREAD.C.A003e + # + # client / commandsGenerated + # - label: - "Does the Device(Server) implement receiving the UpdateNOC command?" - id: OPCREDS.S.C07.Rsp + "Does the Device(client) invoking/generating the ResetCounts command?" + id: DGTHREAD.C.C00.Tx + # + # client / Events + # - label: - "Does the Device(Server) invoking/generating the NOCResponse command?" - id: OPCREDS.S.C08.Tx + "Does the DUT(client) support receiving the ConnectionStatus event?" + id: DGTHREAD.C.E00 - label: - "Does the Device(Server) implement receiving the UpdateFabricLabel - command?" - id: OPCREDS.S.C09.Rsp + "Does the DUT(client) support receiving the NetworkFaultChange event?" + id: DGTHREAD.C.E01 + # Time Format Localization Cluster Test Plan - label: - "Does the Device(Server) implement receiving the RemoveFabric command?" - id: OPCREDS.S.C0a.Rsp + "Does the device implement the Time Format Localization cluster as a + server?" + id: LTIME.S - label: - "Does the Device(Server) implement receiving the - AddTrustedRootCertificate command?" - id: OPCREDS.S.C0b.Rsp + "Does the device implement the Time Format Localization cluster as a + client?" + id: LTIME.C - #Client Attributes - - label: "Does the DUT(Client) support the NOC list attribute?" - id: OPCREDS.C.A0000 + # + # server / attributes + # + - label: "Does the device implement the HourFormat attribute ?" + id: LTIME.S.A0000 - - label: "Does the DUT(Client) support the Fabrics list attribute?" - id: OPCREDS.C.A0001 + - label: "Does the device implement the ActiveCalendarType attribute ?" + id: LTIME.S.A0001 - - label: "Does the DUT(Client) support the SupportedFabrics attribute?" - id: OPCREDS.C.A0002 + - label: "Does the device implement the SupportedCalendarTypes attribute ?" + id: LTIME.S.A0002 - - label: "Does the DUT(Client) support the CommissionedFabrics attribute?" - id: OPCREDS.C.A0003 + - label: + "Does the device implement the (0xFFF8) GeneratedCommandList attribute + ?" + id: LTIME.S.Afff8 - label: - "Does the DUT(Client) support the TrustedRootCertificates attribute?" - id: OPCREDS.C.A0004 + "Does the device implement the (0xFFF9) AcceptedCommandList attribute + ?" + id: LTIME.S.Afff9 - - label: "Does the DUT(Client) support the CurrentFabricIndex attribute?" - id: OPCREDS.C.A0005 + - label: "Does the device implement the (0xFFFA) EventList attribute ?" + id: LTIME.S.Afffa - - label: "Does the DUT(Client) support the NOC Certificate attribute?" - id: OPCREDS.C.A0006 + - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" + id: LTIME.S.Afffb - - label: "Does the DUT(Client) support the ICAC Certificate attribute?" - id: OPCREDS.C.A0007 + - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" + id: LTIME.S.Afffc - #Client Commands - label: - "Does the Device(Client) implement receiving the AttestationRequest - command?" - id: OPCREDS.C.C00.Tx + "Does the device implement the (0xFFFD) ClusterRevision attribute ?" + id: LTIME.S.Afffd - - label: - "Does the Device(Client) invoking/generating the AttestationResponse - command?" - id: OPCREDS.C.C01.Rsp + - label: "Does the DUT (Server) support 12 Hr Hour Format ?" + id: LTIME.S.A0000.12HR - - label: - "Does the Device(Client) implement receiving the - CertificateChainRequest command?" - id: OPCREDS.C.C02.Tx + - label: "Does the DUT (Server) support 24 Hr Hour Format ?" + id: LTIME.S.A0000.24HR + # + # client / attributes + # - label: - "Does the Device(Client) invoking/generating the - CertificateChainResponse command?" - id: OPCREDS.C.C03.Rsp + "Does the DUT(client) have access privileges for the HourFormat + attribute implemented on the server ?" + id: LTIME.C.A0000 - label: - "Does the Device(Client) implement receiving the CSRRequest command?" - id: OPCREDS.C.C04.Tx + "Does the DUT(client) have access privileges for the + ActiveCalendarType attribute implemented on the server ?" + id: LTIME.C.A0001 - label: - "Does the Device(Client) invoking/generating the CSRResponse command?" - id: OPCREDS.C.C05.Rsp - - - label: "Does the Device(Client) implement receiving the AddNOC command?" - id: OPCREDS.C.C06.Tx + "Does the DUT(client) have access privileges for the + SupportedCalendarTypes attribute implemented on the server ?" + id: LTIME.C.A0002 - label: - "Does the Device(Client) implement receiving the UpdateNOC command?" - id: OPCREDS.C.C07.Tx + "Does the DUT(client) have access privileges for the (0xFFF8) + GeneratedCommandList attribute implemented on the server ?" + id: LTIME.C.Afff8 - label: - "Does the Device(Client) invoking/generating the NOCResponse command?" - id: OPCREDS.C.C08.Rsp + "Does the DUT(client) have access privileges for the (0xFFF9) + AcceptedCommandList attribute implemented on the server ?" + id: LTIME.C.Afff9 - label: - "Does the Device(Client) implement receiving the UpdateFabricLabel - command?" - id: OPCREDS.C.C09.Tx + "Does the DUT(client) have access privileges for the (0xFFFA) + EventList attribute implemented on the server ?" + id: LTIME.C.Afffa - label: - "Does the Device(Client) implement receiving the RemoveFabric command?" - id: OPCREDS.C.C0a.Tx + "Does the DUT(client) have access privileges for the (0xFFFB) + AttributeList attribute implemented on the server ?" + id: LTIME.C.Afffb - label: - "Does the Device(Client) implement receiving the - AddTrustedRootCertificate command?" - id: OPCREDS.C.C0b.Tx - - #Access Control cluster - - label: "Does the DUT support the ACL attribute?" - id: ACL.S.A0000 - - - label: "Does the DUT support extension attribute?" - id: ACL.S.A0001 + "Does the DUT(client) have access privileges for the (0xFFFC) + FeatureMap attribute implemented on the server ?" + id: LTIME.C.Afffc - - label: "Does the DUT support SubjectsPerAccessControlEntry attribute?" - id: ACL.S.A0002 + - label: + "Does the DUT(client) have access privileges for the (0xFFFD) + ClusterRevision attribute implemented on the server ?" + id: LTIME.C.Afffd - - label: "Does the DUT support TargetsPerAccessControlEntry event?" - id: ACL.S.A0003 + - label: "Does the DUT (Client) support 12 Hr Hour Format ?" + id: LTIME.C.A0000.12HR - - label: "Does the DUT support AccessControlEntriesPerFabric attribute?" - id: ACL.S.A0004 + - label: "Does the DUT (Client) support 24 Hr Hour Format ?" + id: LTIME.C.A0000.24HR - - label: "Does the DUT support the AccessControlEntryChanged Event?" - id: ACL.S.E00 + # Unit Localization Cluster Test Plan + - label: "Does the device implement the Unit Localization as a server?" + id: LUNIT.S - - label: "Does the DUT support the AccessControlExtensionChanged Event?" - id: ACL.S.E01 + - label: "Does the device implement the Unit Localization as a client?" + id: LUNIT.C - #Mode select - - label: "Does the DUT support the Description attribute?" - id: MOD.S.A0000 + # + # server / attributes + # + - label: "Does the device support the TemperatureUnit attribute ?" + id: LUNIT.S.A0000 - - label: "Does the DUT support the StandardNamespace attribute?" - id: MOD.S.A0001 + - label: + "Does the device implement the (0xFFF8) GeneratedCommandList attribute + ?" + id: LUNIT.S.Afff8 - - label: "Does the DUT support the SupportedModes attribute?" - id: MOD.S.A0002 + - label: + "Does the device implement the (0xFFF9) AcceptedCommandList attribute + ?" + id: LUNIT.S.Afff9 - - label: "Does the DUT support the CurrentMode attribute?" - id: MOD.S.A0003 + - label: "Does the device implement the (0xFFFA) EventList attribute ?" + id: LUNIT.S.Afffa - - label: "Does the DUT support the StartUpMode attribute?" - id: MOD.S.A0004 + - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" + id: LUNIT.S.Afffb - - label: "Does the DUT support the OnMode attribute?" - id: MOD.S.A0005 + - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" + id: LUNIT.S.Afffc - label: - "Does the DUT implement the StartUpOnOff attribute (from the - OnOffCluster)?" - id: OO.S.A4003 + "Does the device implement the (0xFFFD) ClusterRevision attribute ?" + id: LUNIT.S.Afffd - - label: - "Does the Mode Select Cluster depend on an On/Off cluster implemented - on the same DUT?" - id: MOD.S.F00 + # + # server / features + # + - label: "Does the device implement different units of temperature ?" + id: LUNIT.S.F00 - - label: "Does the DUT support sending the ChangeToMode command?" - id: MOD.C.C00.Tx + # + # server / manually + # + - label: "Does the device support the TemperatureUnit Fahrenheit ?" + id: LUNIT.TempUnit.Fahrenheit - - label: "Does the DUT support receiving the ChangeToMode command?" - id: MOD.S.C00.Rsp + - label: "Does the device support the TemperatureUnit Celsius ?" + id: LUNIT.TempUnit.Celsius - - label: "Does the DUT support the SupportedModes attribute?" - id: MOD.C.A0002 + - label: "Does the device support the TemperatureUnit Kelvin ?" + id: LUNIT.TempUnit.Kelvin - #Device Attestation + # + # client / attributes + # - label: - "Does Commissioner notify user that Commissionee is not a fully - trusted device on device attestation failure?" - id: MCORE.DA.ATTEST_WARNING + "Does the DUT(client) have access privileges for the TemperatureUnit + attribute implemented on the server ?" + id: LUNIT.C.A0000 - label: - "Does commissionee-provided certification declaration make use of - dac_origin_vendor_id field?" - id: MCORE.DA.CERTDECL_ORIGIN_VENDORID + "Does the DUT(client) have access privileges for the (0xFFF8) + GeneratedCommandList attribute implemented on the server ?" + id: LUNIT.C.Afff8 - label: - "Does commissionee-provided certification declaration make use of - dac_origin_product_id field?" - id: MCORE.DA.CERTDECL_ORIGIN_PRODUCTID + "Does the DUT(client) have access privileges for the (0xFFF9) + AcceptedCommandList attribute implemented on the server ?" + id: LUNIT.C.Afff9 - label: - "Does commissionee-provided certification declaration make use of - authorized_paa_list field?" - id: MCORE.DA.CERTDECL_AUTH_PAA + "Does the DUT(client) have access privileges for the (0xFFFA) + EventList attribute implemented on the server ?" + id: LUNIT.C.Afffa - label: - "Does commissionee provide a Firmware Information field in the - AttestationResponse?" - id: MCORE.DA.ATTESTELEMENT_FW_INFO - - #Descriptor Cluster TestPlan - #server - - label: "Does the DUT(server) support the DEVICETYPELIST attribute?" - id: DESC.S.A0000 - - - label: "Does the DUT(server) support the SERVERLIST attribute?" - id: DESC.S.A0001 - - - label: "Does the DUT(server) support the CLIENTLIST attribute?" - id: DESC.S.A0002 - - - label: "Does the DUT(server) support the PARTSLIST attribute?" - id: DESC.S.A0003 - - - label: "Does the DUT(server) support the REVISIONFIELD attribute?" - id: DESC.S.A0004 + "Does the DUT(client) have access privileges for the (0xFFFB) + AttributeList attribute implemented on the server ?" + id: LUNIT.C.Afffb - #cluster - - label: "Does the DUT(client) support the DEVICETYPELIST attribute?" - id: DESC.C.A0000 + - label: + "Does the DUT(client) have access privileges for the (0xFFFC) + FeatureMap attribute implemented on the server ?" + id: LUNIT.C.Afffc - - label: "Does the DUT(client) support the SERVERLIST attribute?" - id: DESC.C.A0001 + - label: + "Does the DUT(client) have access privileges for the (0xFFFD) + ClusterRevision attribute implemented on the server ?" + id: LUNIT.C.Afffd - - label: "Does the DUT(client) support the CLIENTLIST attribute?" - id: DESC.C.A0002 + # User Label Cluster Test Plan + - label: "Does the device implement the User Label cluster as a server?" + id: ULABEL.S - - label: "Does the DUT(client) support the PARTSLIST attribute?" - id: DESC.C.A0003 + - label: "Does the device implement the User Label cluster as a client?" + id: ULABEL.C - - label: "Does the DUT(client) support the REVISIONFIELD attribute?" - id: DESC.C.A0004 + # + # server / attributes + # + - label: "Does the DUT(Server) support LabelList attribute?" + id: ULABEL.S.A0000 - #Secure Channel + # + # client / attributes + # - label: - "Does device support optional key SII in operational discovery mDNS?" - id: MCORE.SC.SII_OP_DISCOVERY_KEY + "Does the DUT(client) have access privileges for the LabelList + attribute implemented on the server?" + id: ULABEL.C.A0000 + # Wi-Fi Network Diagnostics Cluster Test Plan - label: - "Does device support optional key SII in operational discovery mDNS?" - id: MCORE.SC.SAI_OP_DISCOVERY_KEY + "Does the device implement the Wi-Fi Diagnostics cluster as a server?" + id: DGWIFI.S - label: - "Does device support optional key SII in operational discovery mDNS?" - id: MCORE.SC.T_KEY - - - label: "Does the device support discovery over Bluetooth Low Power (BLE)?" - id: MCORE.SC.BLE + "Does the device implement the Wi-Fi Diagnostics cluster as a client?" + id: DGWIFI.C - - label: "Does the device support discovery over Wi-Fi?" - id: MCORE.SC.WIFI + # + # server / attributes + # + - label: + "Indicates the BSSID for which the Wi-Fi network the Node is currently + connected. If the interface not configured, a NULL value should be + presented." + id: DGWIFI.S.A0000 - - label: "Does the device support discovery over Ethernet?" - id: MCORE.SC.ETH + - label: "The current type of Wi-Fi security being used." + id: DGWIFI.S.A0001 - - label: "Does the device support discovery over Thread?" - id: MCORE.SC.THR + - label: "Indicates the current 802.11 standard version in use by the Node." + id: DGWIFI.S.A0002 - label: - "Does device support optional subtype _V in commissionable node - discovery mDNS?" - id: MCORE.SC.VENDOR_SUBTYPE + "Indicate the channel that Wi-Fi communication is currently operating + on. If the interface not configured, a NULL value should be presented." + id: DGWIFI.S.A0003 - label: - "Does device support optional subtype _T in commissionable node - discovery mDNS?" - id: MCORE.SC.DEVTYPE_SUBTYPE + "Indicates the current RSSI of the Node’s Wi-Fi radio in dB. If the + interface not configured or operational, a NULL value should be + presented. This value should not be subscribed." + id: DGWIFI.S.A0004 - label: - "Does device support optional key VP in commissionable node discovery - mDNS?" - id: MCORE.SC.VP_KEY + "Indicates the count of the number of received beacons. This value + should not be subscribed." + id: DGWIFI.S.A0005 - label: - "Does device support optional key DT in commissionable node discovery - mDNS?" - id: MCORE.SC.DT_KEY + "Indicates the count of the number of received beacons. This value + should not be subscribed." + id: DGWIFI.S.A0006 - label: - "Does device support optional key DN in commissionable node discovery - mDNS?" - id: MCORE.SC.DN_KEY + "Indicates the number of multicast packets received by the Node. This + value should not be subscribed." + id: DGWIFI.S.A0007 - label: - "Does device support optional key RI in commissionable node discovery - mDNS?" - id: MCORE.SC.RI_KEY + "Indicates the number of mul5icast packets transmitted by the Node. + This value should not be subscribed." + id: DGWIFI.S.A0008 - label: - "Does device support optional key PH in commissionable node discovery - mDNS?" - id: MCORE.SC.PH_KEY + "Indicates the number of uicast packets received by the Node. This + value should not be subscribed." + id: DGWIFI.S.A0009 - label: - "Does device support optional key PI in commissionable node discovery - mDNS?" - id: MCORE.SC.PI_KEY + "Indicates the number of unicast packets transmitted by the Node. This + value should not be subscribed." + id: DGWIFI.S.A000a - label: - "Does device support Extended Discovery for Commissionable Node - Discovery?" - id: MCORE.SC.EXTENDED_DISCOVERY + "Indicates the current maximum PHY rate of transfer of data in + bytes-per-second." + id: DGWIFI.S.A000b - label: - "Does device support Extended Discovery for Commissionable Node - Discovery?" - id: MCORE.SC.SED + "Indicates the number of packets dropped either at ingress or egress, + due to lack of buffer memory to retain all packets on the ethernet + network interface. This attribute SHALL be reset to 0 upon a reboot of + the Node. This value should not be subscribed." + id: DGWIFI.S.A000c - - label: "Does the Controller DUT support Service Advertising?" - id: MCORE.SC.ADV + # + # server / commandsReceived + # + - label: + "Reset the following attributes to 0; BeaconLostCount, BeaconRxCount, + PacketMulticastRxCount, PacketMulticastTxCount, PacketUnicastRxCount, + PacketUnicastTxCount" + id: DGWIFI.S.C00.Rsp - - label: "Does the Controller DUT support Service Advertising?" - id: MCORE.SC.ADV + # + # server / Events + # + - label: + "Indicates Node’s Wi-Fi connection has been disconnected as a result + of de-authenticated or dis-association and indicates the reason." + id: DGWIFI.S.E00 - #133.1. Bridged Device Basic Information Cluster - - label: "Does the DUT(server) support the DataModelRevision attribute?" - id: BRBINFO.S.A0000 + - label: + "Indicates unsuccessful connection and reconnection to Wi-Fi access + point after exhaustive retries. AssociationFailure fields are to + indicate the cause and status. Each field set values are described in + 11.14.6.2" + id: DGWIFI.S.E01 - - label: "Does the DUT(server) support the VendorName attribute?" - id: BRBINFO.S.A0001 + - label: + "Indicates that a Node’s connection status to a Wi-Fi network has + changed." + id: DGWIFI.S.E02 - - label: "Does the DUT(server) support the VendorID attribute?" - id: BRBINFO.S.A0002 + # + # server / features + # + - label: + "Counts for the number of received and transmitted packets on the + ethernet interface." + id: DGWIFI.S.F00 - - label: "Does the DUT(server) support the ProductName attribute?" - id: BRBINFO.S.A0003 + - label: + "Counts for the number of errors during the reception and transmission + of packets on the ethernet interface." + id: DGWIFI.S.F01 - - label: "Does the DUT(server) support the ProductID attribute?" - id: BRBINFO.S.A0004 + # + # client / attributes + # + - label: + "Does the DUT(client) have access privileges for the BSSID attribute + implemented on the server?" + id: DGWIFI.C.A0000 - - label: "Does the DUT(server) support the NodeLabel attribute?" - id: BRBINFO.S.A0005 + - label: + "Does the DUT(client) have access privileges for the SecurityType + attribute implemented on the server?" + id: DGWIFI.C.A0001 - - label: "Does the DUT(server) support the Location attribute?" - id: BRBINFO.S.A0006 + - label: + "Does the DUT(client) have access privileges for the WiFiVersion + attribute implemented on the server?" + id: DGWIFI.C.A0002 - - label: "Does the DUT(server) support the HardwareVersion attribute?" - id: BRBINFO.S.A0007 + - label: + "Does the DUT(client) have access privileges for the ChannelNumber + attribute implemented on the server?" + id: DGWIFI.C.A0003 - - label: "Does the DUT(server) support the HardwareVersionString attribute?" - id: BRBINFO.S.A0008 + - label: + "Does the DUT(client) have access privileges for the RSSI attribute + implemented on the server?" + id: DGWIFI.C.A0004 - - label: "Does the DUT(server) support the SoftwareVersion attribute?" - id: BRBINFO.S.A0009 + - label: + "Does the DUT(client) have access privileges for the BeaconLostCount + attribute implemented on the server?" + id: DGWIFI.C.A0005 - - label: "Does the DUT(server) support the SoftwareVersionString attribute?" - id: BRBINFO.S.A000a + - label: + "Does the DUT(client) have access privileges for the BeaconRxCount + attribute implemented on the server?" + id: DGWIFI.C.A0006 - - label: "Does the DUT(server) support the ManufacturingDate attribute?" - id: BRBINFO.S.A000b + - label: + "Does the DUT(client) have access privileges for the + PacketMulticastRxCount attribute implemented on the server?" + id: DGWIFI.C.A0007 - - label: "Does the DUT(server) support the PartNumber attribute?" - id: BRBINFO.S.A000c + - label: + "Does the DUT(client) have access privileges for the + PacketMulticastTxCount attribute implemented on the server?" + id: DGWIFI.C.A0008 - - label: "Does the DUT(server) support the ProductURL attribute?" - id: BRBINFO.S.A000d + - label: + "Does the DUT(client) have access privileges for the + PacketUnicastRxCount attribute implemented on the server?" + id: DGWIFI.C.A0009 - - label: "Does the DUT(server) support the ProductLabel attribute?" - id: BRBINFO.S.A000e + - label: + "Does the DUT(client) have access privileges for the + PacketUnicastTxCount attribute implemented on the server?" + id: DGWIFI.C.A000a - - label: "Does the DUT(server) support the SerialNumber attribute?" - id: BRBINFO.S.A000f + - label: + "Does the DUT(client) have access privileges for the CurrentMaxRate + attribute implemented on the server?" + id: DGWIFI.C.A000b - - label: "Does the DUT(server) support the LocalConfigDisabled attribute?" - id: BRBINFO.S.A0010 + - label: + "Does the DUT(client) have access privileges for the OverrunCount + attribute implemented on the server?" + id: DGWIFI.C.A000c - - label: "Does the DUT(server) support the Reachable attribute?" - id: BRBINFO.S.A0011 + # + # client / commandsGenerated + # + - label: + "Reset the following attributes to 0; BeaconLostCount, BeaconRxCount, + PacketMulticastRxCount, PacketMulticastTxCount, PacketUnicastRxCount, + PacketUnicastTxCount" + id: DGWIFI.C.C00.Tx - - label: "Does the DUT(server) support the UniqueID attribute?" - id: BRBINFO.S.A0012 + # + # client / manually + # + - label: "" + id: DGWIFI.C.A - - label: "Does the DUT(server) support the CapabilityMinima attribute?" - id: BRBINFO.S.A0013 + # Window Covering Cluster Test Plan + - label: + "Does the device implement the Window Covering cluster as a server?" + id: WNCV.S - #Events - - label: "Does the DUT(server) support the StartUp event?" - id: BRBINFO.S.E00 + - label: + "Does the device implement the Window Covering cluster as a client?" + id: WNCV.C - - label: "Does the DUT(server) support the ShutDown event?" - id: BRBINFO.S.E01 + # + # server / attributes + # + - label: "Does the device implement the Type attribute ?" + id: WNCV.S.A0000 - - label: "Does the DUT(server) support the Leave event?" - id: BRBINFO.S.E02 + - label: "Does the device implement the PhysicalClosedLimitLift attribute ?" + id: WNCV.S.A0001 - - label: "Does the DUT(server) support the ReachableChanged event?" - id: BRBINFO.S.E03 + - label: "Does the device implement the PhysicalClosedLimitTilt attribute ?" + id: WNCV.S.A0002 - # client - - label: "Does the DUT(Client) support the DataModelRevision attribute?" - id: BRBINFO.C.A0000 + - label: "Does the device implement the CurrentPositionLift attribute ?" + id: WNCV.S.A0003 - - label: "Does the DUT(Client) support the VendorName attribute?" - id: BRBINFO.C.A0001 + - label: "Does the device implement the CurrentPositionTilt attribute ?" + id: WNCV.S.A0004 - - label: "Does the DUT(Client) support the VendorID attribute?" - id: BRBINFO.C.A0002 + - label: "Does the device implement the NumberOfActuationsLift attribute ?" + id: WNCV.S.A0005 - - label: "Does the DUT(Client) support the ProductName attribute?" - id: BRBINFO.C.A0003 + - label: "Does the device implement the NumberOfActuationsTilt attribute ?" + id: WNCV.S.A0006 - - label: "Does the DUT(Client) support the ProductID attribute?" - id: BRBINFO.C.A0004 + - label: "Does the device implement the ConfigStatus attribute ?" + id: WNCV.S.A0007 - - label: "Does the DUT(Client) support the NodeLabel attribute?" - id: BRBINFO.C.A0005 + - label: + "Does the device implement the CurrentPositionLiftPercentage attribute + ?" + id: WNCV.S.A0008 - - label: "Does the DUT(Client) support the Location attribute?" - id: BRBINFO.C.A0006 + - label: + "Does the device implement the CurrentPositionTiltPercentage attribute + ?" + id: WNCV.S.A0009 - - label: "Does the DUT(Client) support the HardwareVersion attribute?" - id: BRBINFO.C.A0007 + - label: "Does the device implement the OperationalStatus attribute ?" + id: WNCV.S.A000a - - label: "Does the DUT(Client) support the HardwareVersionString attribute?" - id: BRBINFO.C.A0008 + - label: + "Does the device implement the TargetPositionLiftPercent100ths + attribute ?" + id: WNCV.S.A000b - - label: "Does the DUT(Client) support the SoftwareVersion attribute?" - id: BRBINFO.C.A0009 + - label: + "Does the device implement the TargetPositionTiltPercent100ths + attribute ?" + id: WNCV.S.A000c - - label: "Does the DUT(Client) support the SoftwareVersionString attribute?" - id: BRBINFO.C.A000a + - label: "Does the device implement the EndProductType attribute ?" + id: WNCV.S.A000d - - label: "Does the DUT(Client) support the ManufacturingDate attribute?" - id: BRBINFO.C.A000b + - label: + "Does the device implement the CurrentPositionLiftPercent100ths + attribute ?" + id: WNCV.S.A000e - - label: "Does the DUT(Client) support the PartNumber attribute?" - id: BRBINFO.C.A000c + - label: + "Does the device implement the CurrentPositionTiltPercent100ths + attribute ?" + id: WNCV.S.A000f - - label: "Does the DUT(Client) support the ProductURL attribute?" - id: BRBINFO.C.A000d + - label: "Does the device implement the InstalledOpenLimitLift attribute ?" + id: WNCV.S.A0010 - - label: "Does the DUT(Client) support the ProductLabel attribute?" - id: BRBINFO.C.A000e + - label: + "Does the device implement the InstalledClosedLimitLift attribute ?" + id: WNCV.S.A0011 - - label: "Does the DUT(Client) support the SerialNumber attribute?" - id: BRBINFO.C.A000f + - label: "Does the device implement the InstalledOpenLimitTilt attribute ?" + id: WNCV.S.A0012 - - label: "Does the DUT(Client) support the LocalConfigDisabled attribute?" - id: BRBINFO.C.A0010 + - label: + "Does the device implement the InstalledClosedLimitTilt attribute ?" + id: WNCV.S.A0013 - - label: "Does the DUT(Client) support the Reachable attribute?" - id: BRBINFO.C.A0011 + - label: "Does the device implement the Mode attribute ?" + id: WNCV.S.A0017 - - label: "Does the DUT(Client) support the UniqueID attribute?" - id: BRBINFO.C.A0012 + - label: "Does the device implement the SafetyStatus attribute ?" + id: WNCV.S.A001a - - label: "Does the DUT(Client) support the CapabilityMinima attribute?" - id: BRBINFO.C.A0013 + - label: + "Does the device implement the (0xFFF8) GeneratedCommandList attribute + ?" + id: WNCV.S.Afff8 - #Events - - label: "Does the DUT(Client) support the StartUp event?" - id: BRBINFO.C.E00 + - label: + "Does the device implement the (0xFFF9) AcceptedCommandList attribute + ?" + id: WNCV.S.Afff9 - - label: "Does the DUT(Client) support the ShutDown event?" - id: BRBINFO.C.E01 + - label: "Does the device implement the (0xFFFA) EventList attribute ?" + id: WNCV.S.Afffa - - label: "Does the DUT(Client) support the Leave event?" - id: BRBINFO.C.E02 + - label: "Does the device implement the (0xFFFB) AttributeList attribute ?" + id: WNCV.S.Afffb - - label: "Does the DUT(Client) support the ReachableChanged event?" - id: BRBINFO.C.E03 + - label: "Does the device implement the (0xFFFC) FeatureMap attribute ?" + id: WNCV.S.Afffc - #Interaction Data Model - label: - "Is the device a Client and Supports sending a Invoke Request Message" - id: MCORE.IDM.C.InvokeRequest + "Does the device implement the (0xFFFD) ClusterRevision attribute ?" + id: WNCV.S.Afffd - label: - "Is the device a Client and Supports sending a Read Request Message" - id: MCORE.IDM.C.ReadRequest + "Does the device support scene via the TargetPositionLiftPercent100ths + attribute ?" + id: WNCV.S.A0011.Scene - label: - "Is the device a Client and Supports sending a Write Request Message" - id: MCORE.IDM.C.WriteRequest + "Does the device support scene via the TargetPositionTiltPercent100ths + attribute ?" + id: WNCV.S.A0012.Scene - - label: - "Is the device a Client and Supports sending a Subscribe Request - Message" - id: MCORE.IDM.C.SubscribeRequest + # + # server / commandsReceived + # + - label: "Does the device implement receiving the UpOrOpen command ?" + id: WNCV.S.C00.Rsp - - label: "Is the device a Server and supports an attribute of DataType Bool" - id: MCORE.IDM.S.Attribute.DataType_Bool + - label: "Does the device implement receiving the DownOrClose command ?" + id: WNCV.S.C01.Rsp - - label: - "Is the device a Server and supports an attribute of DataType String" - id: MCORE.IDM.S.Attribute.DataType_String + - label: "Does the device implement receiving the StopMotion command ?" + id: WNCV.S.C02.Rsp - - label: - "Is the device a Server and supports an attribute of DataType Unsigned - Integer" - id: MCORE.IDM.S.Attribute.DataType_UnsignedInteger + - label: "Does the device implement receiving the GoToLiftValue command ?" + id: WNCV.S.C04.Rsp - label: - "Is the device a Server and supports an attribute of DataType Signed - Integer" - id: MCORE.IDM.S.Attribute.DataType_SignedInteger + "Does the device implement receiving the GoToLiftPercentage command ?" + id: WNCV.S.C05.Rsp - - label: - "Is the device a Server and supports an attribute of DataType Struct" - id: MCORE.IDM.S.Attribute.DataType_Struct + - label: "Does the device implement receiving the GoToTiltValue command ?" + id: WNCV.S.C07.Rsp - label: - "Is the device a Server and supports an attribute of DataType Floating - Point" - id: MCORE.IDM.S.Attribute.DataType_FloatingPoint + "Does the device implement receiving the GoToTiltPercentage command ?" + id: WNCV.S.C08.Rsp - - label: "Is the device a Server and supports an attribute of DataType List" - id: MCORE.IDM.S.Attribute.DataType_List + # + # server / features + # + - label: "Does the device implement the Lift feature ?" + id: WNCV.S.F00 - - label: - "Is the device a Server and supports an attribute of DataType Octet - String" - id: MCORE.IDM.S.Attribute.DataType_OctetString + - label: "Does the device implement the Tilt feature ?" + id: WNCV.S.F01 - - label: "Is the device a Server and supports an attribute of DataType Enum" - id: MCORE.IDM.S.Attribute.DataType_Enum + - label: "Does the device implement the Position Aware Lift feature ?" + id: WNCV.S.F02 - - label: - "Is the device a Server and supports an attribute of DataType Bitmap" - id: MCORE.IDM.S.Attribute.DataType_Bitmap + - label: "Does the device implement the Absolute positioning feature ?" + id: WNCV.S.F03 - - label: - "Is the device a Client and supports Reading an attribute of DataType - Bool" - id: MCORE.IDM.C.ReadRequest.Attribute.DataType_Bool + - label: "Does the device implement the Position Aware Tilt feature ?" + id: WNCV.S.F04 - - label: - "Is the device a Client and supports Reading an attribute of DataType - String" - id: MCORE.IDM.C.ReadRequest.Attribute.DataType_String + # + # server / manually + # + - label: "Does the device support reversal of lift movement ?" + id: WNCV.S.M.Reversal - - label: - "Is the device a Client and supports Reading an attribute of DataType - Unsigned Integer" - id: MCORE.IDM.C.ReadRequest.Attribute.DataType_UnsignedInteger + - label: "Does the device support a calibration mode/state ?" + id: WNCV.S.M.Calibration - - label: - "Is the device a Client and supports Reading an attribute of DataType - Signed Integer" - id: MCORE.IDM.C.ReadRequest.Attribute.DataType_SignedInteger + - label: "Does the device support a maintenance mode/state ?" + id: WNCV.S.M.Maintenance + # + # client / attributes + # - label: - "Is the device a Client and supports Reading an attribute of DataType - Struct" - id: MCORE.IDM.C.ReadRequest.Attribute.DataType_Struct + "Does the DUT(client) have access privileges for the Type attribute + implemented on the server ?" + id: WNCV.C.A0000 - label: - "Is the device a Client and supports Reading an attribute of DataType - Floating Point" - id: MCORE.IDM.C.ReadRequest.Attribute.DataType_FloatingPoint + "Does the DUT(client) have access privileges for the + PhysicalClosedLimitLift attribute implemented on the server ?" + id: WNCV.C.A0001 - label: - "Is the device a Client and supports Reading an attribute of DataType - List" - id: MCORE.IDM.C.ReadRequest.Attribute.DataType_List + "Does the DUT(client) have access privileges for the + PhysicalClosedLimitTilt attribute implemented on the server ?" + id: WNCV.C.A0002 - label: - "Is the device a Client and supports Reading an attribute of DataType - Octet String" - id: MCORE.IDM.C.ReadRequest.Attribute.DataType_OctetString + "Does the DUT(client) have access privileges for the + CurrentPositionLift attribute implemented on the server ?" + id: WNCV.C.A0003 - label: - "Is the device a Client and supports Reading an attribute of DataType - Enum" - id: MCORE.IDM.C.ReadRequest.Attribute.DataType_Enum + "Does the DUT(client) have access privileges for the + CurrentPositionTilt attribute implemented on the server ?" + id: WNCV.C.A0004 - label: - "Is the device a Client and supports Reading an attribute of DataType - Bitmap" - id: MCORE.IDM.C.ReadRequest.Attribute.DataType_Bitmap + "Does the DUT(client) have access privileges for the + NumberOfActuationsLift attribute implemented on the server ?" + id: WNCV.C.A0005 - label: - "Is the device a Server and supports a writable attribute of DataType - Bool" - id: MCORE.IDM.S.Attribute_W.DataType_Bool + "Does the DUT(client) have access privileges for the + NumberOfActuationsTilt attribute implemented on the server ?" + id: WNCV.C.A0006 - label: - "Is the device a Server and supports a writable attribute of DataType - String" - id: MCORE.IDM.S.Attribute_W.DataType_String + "Does the DUT(client) have access privileges for the ConfigStatus + attribute implemented on the server ?" + id: WNCV.C.A0007 - label: - "Is the device a Server and supports a writable attribute of DataType - UnsignedInteger" - id: MCORE.IDM.S.Attribute_W.DataType_UnsignedInteger + "Does the DUT(client) have access privileges for the + CurrentPositionLiftPercentage attribute implemented on the server ?" + id: WNCV.C.A0008 - label: - "Is the device a Server and supports a writable attribute of DataType - SignedInteger" - id: MCORE.IDM.S.Attribute_W.DataType_SignedInteger + "Does the DUT(client) have access privileges for the + CurrentPositionTiltPercentage attribute implemented on the server ?" + id: WNCV.C.A0009 - label: - "Is the device a Server and supports a writable attribute of DataType - Struct" - id: MCORE.IDM.S.Attribute_W.DataType_Struct + "Does the DUT(client) have access privileges for the OperationalStatus + attribute implemented on the server ?" + id: WNCV.C.A000a - label: - "Is the device a Server and supports a writable attribute of DataType - FloatingPoint" - id: MCORE.IDM.S.Attribute_W.DataType_FloatingPoint + "Does the DUT(client) have access privileges for the + TargetPositionLiftPercent100ths attribute implemented on the server ?" + id: WNCV.C.A000b - label: - "Is the device a Server and supports a writable attribute of DataType - List" - id: MCORE.IDM.S.Attribute_W.DataType_List + "Does the DUT(client) have access privileges for the + TargetPositionTiltPercent100ths attribute implemented on the server ?" + id: WNCV.C.A000c - label: - "Is the device a Server and supports a writable attribute of DataType - OctetString" - id: MCORE.IDM.S.Attribute_W.DataType_OctetString + "Does the DUT(client) have access privileges for the EndProductType + attribute implemented on the server ?" + id: WNCV.C.A000d - label: - "Is the device a Server and supports a writable attribute of DataType - Enum" - id: MCORE.IDM.S.Attribute_W.DataType_Enum + "Does the DUT(client) have access privileges for the + CurrentPositionLiftPercent100ths attribute implemented on the server ?" + id: WNCV.C.A000e - label: - "Is the device a Server and supports a writable attribute of DataType - Bitmap" - id: MCORE.IDM.S.Attribute_W.DataType_Bitmap + "Does the DUT(client) have access privileges for the + CurrentPositionTiltPercent100ths attribute implemented on the server ?" + id: WNCV.C.A000f - label: - "Is the device a Client and supports subscribing to an attribute of - DataType Bool" - id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_String + "Does the DUT(client) have access privileges for the + InstalledOpenLimitLift attribute implemented on the server ?" + id: WNCV.C.A0010 - label: - "Is the device a Client and supports subscribing to an attribute of - DataType UnsignedInteger" - id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_UnsignedInteger + "Does the DUT(client) have access privileges for the + InstalledClosedLimitLift attribute implemented on the server ?" + id: WNCV.C.A0011 - label: - "Is the device a Client and supports subscribing to an attribute of - DataType Integer" - id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Integer + "Does the DUT(client) have access privileges for the + InstalledOpenLimitTilt attribute implemented on the server ?" + id: WNCV.C.A0012 - label: - "Is the device a Client and supports subscribing to an attribute of - DataType FloatingPoint" - id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_FloatingPoint + "Does the DUT(client) have access privileges for the + InstalledClosedLimitTilt attribute implemented on the server ?" + id: WNCV.C.A0013 - label: - "Is the device a Client and supports subscribing to an attribute of - DataType List" - id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_List + "Does the DUT(client) have access privileges for the Mode attribute + implemented on the server ?" + id: WNCV.C.A0017 - label: - "Is the device a Server and capable of generating large data which is - greater than 1 MTU(1280 bytes)" - id: MCORE.IDM.S.LargeData + "Does the DUT(client) have access privileges for the SafetyStatus + attribute implemented on the server ?" + id: WNCV.C.A001a - label: - "Is the device a Client and supports writing an attribute of DataType - Bool" - id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Bool + "Does the DUT(client) have access privileges for the (0xFFF8) + GeneratedCommandList attribute implemented on the server ?" + id: WNCV.C.Afff8 - label: - "Is the device a Client and supports writing an attribute of DataType - String" - id: MCORE.IDM.C.WriteRequest.Attribute.DataType_String + "Does the DUT(client) have access privileges for the (0xFFF9) + AcceptedCommandList attribute implemented on the server ?" + id: WNCV.C.Afff9 - label: - "Is the device a Client and supports writing an attribute of DataType - Unsigned Integer" - id: MCORE.IDM.C.WriteRequest.Attribute.DataType_UnsignedInteger + "Does the DUT(client) have access privileges for the (0xFFFA) + EventList attribute implemented on the server ?" + id: WNCV.C.Afffa - label: - "Is the device a Client and supports writing an attribute of DataType - Signed Integer" - id: MCORE.IDM.C.WriteRequest.Attribute.DataType_SignedInteger + "Does the DUT(client) have access privileges for the (0xFFFB) + AttributeList attribute implemented on the server ?" + id: WNCV.C.Afffb - label: - "Is the device a Client and supports writing an attribute of DataType - Struct" - id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Struct + "Does the DUT(client) have access privileges for the (0xFFFC) + FeatureMap attribute implemented on the server ?" + id: WNCV.C.Afffc - label: - "Is the device a Client and supports writing an attribute of DataType - Floating Point" - id: MCORE.IDM.C.WriteRequest.Attribute.DataType_FloatingPoint + "Does the DUT(client) have access privileges for the (0xFFFD) + ClusterRevision attribute implemented on the server ?" + id: WNCV.C.Afffd - - label: - "Is the device a Client and supports writing an attribute of DataType - List" - id: MCORE.IDM.C.WriteRequest.Attribute.DataType_List + # + # client / commandsGenerated + # + - label: "Does the device implement sending the UpOrOpen command ?" + id: WNCV.C.C00.Tx - - label: - "Is the device a Client and supports writing an attribute of DataType - Octet String" - id: MCORE.IDM.C.WriteRequest.Attribute.DataType_OctetString + - label: "Does the device implement sending the DownOrClose command ?" + id: WNCV.C.C01.Tx - - label: - "Is the device a Client and supports writing an attribute of DataType - Enum" - id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Enum + - label: "Does the device implement sending the StopMotion command ?" + id: WNCV.C.C02.Tx - - label: - "Is the device a Client and supports writing an attribute of DataType - Bitmap" - id: MCORE.IDM.C.WriteRequest.Attribute.DataType_Bitmap + - label: "Does the device implement sending the GoToLiftValue command ?" + id: WNCV.C.C04.Tx - label: - "Is the device a Client and supports subscribing to an attribute of - DataType Bool" - id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Bool + "Does the device implement sending the GoToLiftPercentage command ?" + id: WNCV.C.C05.Tx - - label: - "Is the device a Client and supports subscribing to an attribute of - DataType String" - id: MCORE.IDM.C.SubscribeRequest.Attribute.DataType_String + - label: "Does the device implement sending the GoToTiltValue command ?" + id: WNCV.C.C07.Tx - label: - "Is the device a Client and supports subscribing for multiple - attribute" - id: MCORE.IDM.C.SubscribeRequest.MultipleAttributes - - - label: "Does the device support the Factory Reset Method?" - id: PICS_MCORE_UI_FACTORYRESET + "Does the device implement sending the GoToTiltPercentage command ?" + id: WNCV.C.C08.Tx diff --git a/src/app/tests/suites/certification/Test_TC_BR_4.yaml b/src/app/tests/suites/certification/Test_TC_BR_4.yaml index 97203976a584a3..259c9cc0b1d9bc 100644 --- a/src/app/tests/suites/certification/Test_TC_BR_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_BR_4.yaml @@ -6189,7 +6189,7 @@ tests: "Verify DUT has (during step 1a) read the NodeLabel attribute from the Bridged Device Basic Information cluster on various endpoints ,Verify DUT contains the names for the (supported) devices from the above list" - PICS: MCORE.DEVLIST.UseDeviceNames + PICS: MCORE.DEVLIST.UseDeviceName verification: | NodeLabel is supported for endpoints 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 @@ -6994,7 +6994,7 @@ tests: - label: "Use TH/bridge-app to rename a bridged light (use key b in the console to bridge-app to rename Light 1 to Light 1b)" - PICS: MCORE.DEVLIST.UseDeviceNames + PICS: MCORE.DEVLIST.UseDeviceName verification: | ./chip-tool bridgeddevicebasic read node-label 1 3 @@ -7072,7 +7072,7 @@ tests: disabled: true - label: "Verify DUT contains the added device in the list of devices" - PICS: MCORE.DEVLIST.UseDeviceNames + PICS: MCORE.DEVLIST.UseDeviceName verification: | Verify on TH(bridge-app) Log diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_1.yaml index 2cf51432222371..ba84f41f6c908d 100644 --- a/src/app/tests/suites/certification/Test_TC_DA_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DA_1_1.yaml @@ -78,7 +78,7 @@ tests: - label: "Factory reset DUT and perform the necessary actions to put the DUT into a commissionable state" - PICS: PICS_MCORE_UI_FACTORYRESET + PICS: MCORE.UI.FACTORYRESET verification: | To perform Factory reset on DUT follow the below commands in RPI, And use equivalent command on the respective DUT sudo rm -rf /tmp/chip_* diff --git a/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml index bf3404106bf50d..0e3f3ead6619da 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml @@ -167,7 +167,7 @@ tests: disabled: true - label: "TH scans and finds the DUT SSID" - PICS: MCORE.DD.WIFI && MCORE.DD.IE + PICS: MCORE.COM.WIFI && MCORE.DD.IE verification: | Out of Scope for V1.0 SoftAP commissioning not currently supported on TH=chip-tool diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml index 23b5d235d46f1f..3b115500088446 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_1_7.yaml @@ -204,7 +204,7 @@ tests: contains: [9] - label: "Read the optional command(Seek) in AcceptedCommandList" - PICS: MEDIAPLAYBACK.S.C0B.Rsp + PICS: MEDIAPLAYBACK.S.C0b.Rsp command: "readAttribute" attribute: "AcceptedCommandList" response: diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_3.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_3.yaml index 7b6a8d7f04adb9..9468b833bc1756 100644 --- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_3.yaml @@ -45,7 +45,7 @@ tests: value: 0 - label: "Sends a Seek command" - PICS: MEDIAPLAYBACK.S.C0B.Rsp + PICS: MEDIAPLAYBACK.S.C0b.Rsp command: "Seek" arguments: values: @@ -60,7 +60,7 @@ tests: "Verify that the media has moved to 10 seconds from the starting point" cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0B.Rsp + PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0b.Rsp arguments: values: - name: "message" @@ -71,7 +71,7 @@ tests: value: "y" - label: "Reads the SampledPosition attribute" - PICS: MEDIAPLAYBACK.S.A0003 && MEDIAPLAYBACK.S.C0B.Rsp + PICS: MEDIAPLAYBACK.S.A0003 && MEDIAPLAYBACK.S.C0b.Rsp command: "readAttribute" attribute: "SampledPosition" response: @@ -165,7 +165,7 @@ tests: - label: "Sends a Seek command Position value beyond the furthest valid position" - PICS: MEDIAPLAYBACK.S.C0B.Rsp + PICS: MEDIAPLAYBACK.S.C0b.Rsp command: "Seek" arguments: values: @@ -179,7 +179,7 @@ tests: - label: "verify that the media has not moved." cluster: "LogCommands" command: "UserPrompt" - PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0B.Rsp + PICS: PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0b.Rsp arguments: values: - name: "message" diff --git a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml index fe4a14cc746c72..a2d0eceefda2c3 100644 --- a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml @@ -37,7 +37,7 @@ tests: - label: "Factory Reset DUT (to ensure NOC list is empty at the beginning of the following steps)" - PICS: MCORE.FACTORY_RESET + PICS: MCORE.UI.FACTORYRESET verification: | On both DUT and TH side, on Raspi we do factory reset with the below command. The DUT for cert should follow vendor specific procedure for factory reset sudo rm -rf /tmp/chip_* diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml index 4b0471def7cbd3..7d7962bf6cd7b2 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml @@ -16,7 +16,7 @@ name: 15.4.4. [TC-SC-4.4] Discovery [DUT as Controller] PICS: - - PICS_MCORE_ROLE_CONTROLLER + - MCORE.ROLE.CONTROLLER config: nodeId: 0x12344321 diff --git a/src/app/tests/suites/certification/Test_TC_SC_5_1.yaml b/src/app/tests/suites/certification/Test_TC_SC_5_1.yaml index 8084dc23bb3a60..ad7f54f76d78b0 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_5_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_5_1.yaml @@ -16,7 +16,7 @@ name: 19.1.1. [TC-SC-5.1] Adding member to a group PICS: - - PICS_MCORE_ROLE_COMMISSIONEE + - MCORE.ROLE.COMMISSIONEE config: nodeId: 0x12344321 diff --git a/src/app/tests/suites/certification/ci-pics-values b/src/app/tests/suites/certification/ci-pics-values index e5d27bdef66a39..a9de920c7bee25 100644 --- a/src/app/tests/suites/certification/ci-pics-values +++ b/src/app/tests/suites/certification/ci-pics-values @@ -1,32 +1,38 @@ -BLE=1 -WIFI=1 -THREAD=1 -ETH=1 -MANF_DATE=1 -DM_ICACERT=1 -A_PRESENTVALUE=1 -A_OUTOFSERVICE=1 -A_STATUSFLAGS=1 -MANUAL_OPERATE=1 -MANUAL_OUTOFSERVICE=1 -MANUAL_ALARM=1 -MANUAL_FAULT=1 +APPDEVICE.S=0 +MCORE.BRIDGECLIENT=0 +MCORE.DT_SW_COMP=0 +MCORE.UI.FACTORYRESET=1 # Relative Humidity cluster +RH.S=1 RH.S.A0000=1 RH.S.A0001=1 RH.S.A0002=1 RH.S.A0003=1 RH.M.ManuallyControlled=1 +RH.C=0 +RH.C.AM-READ=0 +RH.C.AM-WRITE=0 +RH.C.AO-READ=0 +RH.C.AO-WRITE=0 + # Thermostat User Configuration cluster +TMP.S=1 TMP.S.A0000=1 TMP.S.A0001=1 TMP.S.A0002=1 TMP.S.A0003=1 TMP.M.ManuallyControlled=1 -#Software Diagnostics +TMP.C=0 +TMP.C.AM-READ=0 +TMP.C.AM-WRITE=0 +TMP.C.AO-READ=0 +TMP.C.AO-WRITE=0 + +# Software Diagnostics +DGSW.S=1 DGSW.S.F00=1 DGSW.S.E00=1 DGSW.S.A0000=1 @@ -34,29 +40,20 @@ DGSW.S.A0001=1 DGSW.S.A0002=1 DGSW.S.A0003=1 DGSW.S.C00.Rsp=1 + +DGSW.C=1 DGSW.C.A0000=1 DGSW.C.A0001=1 DGSW.C.A0002=1 DGSW.C.A0003=1 DGSW.C.C00.Tx=1 -VENDOR_SUBTYPE=1 -DEVTYPE_SUBTYPE=1 -CRI_COMM_DISCOVERY_KEY=1 -CRA_COMM_DISCOVERY_KEY=1 -VP_KEY=1 -DT_KEY=1 -DN_KEY=1 -RI_KEY=1 -PH_KEY=1 -PI_KEY=1 PICS_USER_PROMPT=0 PICS_SKIP_SAMPLE_APP=0 PICS_SDK_CI_ONLY=1 -OO_LT=1 -MANUAL_FLOW_CHANGE=1 # WindowCovering aka WNCV +WNCV.S=1 WNCV.S.F00=1 WNCV.S.F02=1 WNCV.S.F01=1 @@ -98,6 +95,37 @@ WNCV.S.Afff8=1 WNCV.S.C01.Rsp=1 WNCV.S.C00.Rsp=1 WNCV.S.C02.Rsp=1 +WNCV.C=0 +WNCV.C.A0001=0 +WNCV.C.A0002=0 +WNCV.C.A0003=0 +WNCV.C.A0004=0 +WNCV.C.A0005=0 +WNCV.C.A0006=0 +WNCV.C.A0008=0 +WNCV.C.A0009=0 +WNCV.C.A000a=0 +WNCV.C.A000b=0 +WNCV.C.A000c=0 +WNCV.C.A000e=0 +WNCV.C.A000f=0 +WNCV.C.A0010=0 +WNCV.C.A0011=0 +WNCV.C.A0012=0 +WNCV.C.A0013=0 +WNCV.C.A001a=0 +WNCV.C.Afff8=0 +WNCV.C.Afff9=0 +WNCV.C.Afffa=0 +WNCV.C.Afffb=0 +WNCV.C.Afffd=0 +WNCV.C.C04.Tx=0 +WNCV.C.C07.Tx=0 +WNCV.S.A0011.Scene=0 +WNCV.S.A0012.Scene=0 +WNCV.S.C04.Rsp=0 +WNCV.S.C07.Rsp=0 + WNCV.C.Afffc=1 WNCV.C.A0000=1 WNCV.C.A000d=1 @@ -108,9 +136,9 @@ WNCV.C.C00.Tx=1 WNCV.C.C01.Tx=1 WNCV.C.C05.Tx=1 WNCV.C.C08.Tx=1 -A_TEMPERATURE_TOLERANCE=1 # Color Control Cluster +CC.S=1 CC.S.A0000=1 CC.S.A0001=1 CC.S.A0002=1 @@ -187,6 +215,8 @@ CC.S.F01=1 CC.S.F02=1 CC.S.F03=1 CC.S.F04=1 + +CC.C=1 CC.C.A0000=1 CC.C.A0001=1 CC.C.A0002=1 @@ -260,77 +290,77 @@ CC.C.C42.Tx=1 CC.C.C43.Tx=1 CC.C.C44.Tx=1 -#MEDIA CLUSTER -#App Launcher +# Client Features +CC.C.F00=0 +CC.C.F01=0 +CC.C.F02=0 +CC.C.F03=0 +CC.C.F04=0 + +# MEDIA CLUSTER +# App Launcher +APPLAUNCHER.S=1 APPLAUNCHER.S.A0000=1 APPLAUNCHER.S.A0001=1 -MEDIAINPUT.S.A0000=1 -MEDIAINPUT.S.A0001=1 -CHANNEL.S.CL=0 -CHANNEL.C.C0000=1 -CHANNEL.C.C0002=1 -CHANNEL.C.C0003=1 -CHANNEL.C.C00.Tx=1 -CHANNEL.C.C02.Tx=1 -CHANNEL.C.C03.Tx=1 -MEDIAPLAYBACK.S.AS=1 -MEDIAPLAYBACK.S.VS=1 -TGTNAV.S.A0001=1 -TGTNAV.C.C00.Tx=1 -APBSC.S=1 -APBSC.S.A0000=1 -APBSC.S.A0001=1 -APBSC.S.A0003=1 -CONTENTLAUNCHER.S.CS=0 -CONTENTLAUNCHER.S.UP=1 -CONTENTLAUNCHER.S.A0000=1 -CONTENTLAUNCHER.S.A0001=1 APPLAUNCHER.S.AP=1 + +APPLAUNCHER.C=1 +APPLAUNCHER.C.C00.Tx=1 +APPLAUNCHER.C.C01.Tx=1 +APPLAUNCHER.C.C02.Tx=1 +APPLAUNCHER.S.C00.Rsp=1 +APPLAUNCHER.S.C01.Rsp=1 +APPLAUNCHER.S.C02.Rsp=1 + +KEYPADINPUT.S=1 KEYPADINPUT.S.LK=1 KEYPADINPUT.S.NK=1 KEYPADINPUT.S.NV=1 KEYPADINPUT.S.C00.Rsp=1 KEYPADINPUT.C.C00.Tx=1 -MEDIAINPUT.S.NU=1 LOWPOWER.S=1 LOWPOWER.C=1 LOWPOWER.S.C00.Rsp=1 + +LOWPOWER.C=1 LOWPOWER.C.C00.Tx=1 + WAKEONLAN.S=1 +WAKEONLAN.S.A0000=1 +WAKEONLAN.C=0 + +MEDIAINPUT.S=1 +MEDIAINPUT.S.A0000=1 +MEDIAINPUT.S.A0001=1 MEDIAINPUT.S.C00.Rsp=1 MEDIAINPUT.S.C01.Rsp=1 MEDIAINPUT.S.C02.Rsp=1 MEDIAINPUT.S.C03.Rsp=1 -MEDIAINPUT.C.C0000=1 -MEDIAINPUT.C.C0001=1 -MEDIAINPUT.C.C0002=1 -MEDIAINPUT.C.C0003=1 +MEDIAINPUT.S.NU=1 + +MEDIAINPUT.C=1 MEDIAINPUT.C.C00.Tx=1 MEDIAINPUT.C.C01.Tx=1 MEDIAINPUT.C.C02.Tx=1 MEDIAINPUT.C.C03.Tx=1 -APPLAUNCHER.C.C0000=1 -APPLAUNCHER.C.C0002=1 -APPLAUNCHER.C.C00.Tx=1 -APPLAUNCHER.C.C01.Tx=1 -APPLAUNCHER.C.C02.Tx=1 -APPLAUNCHER.S.C00.Rsp=1 -APPLAUNCHER.S.C01.Rsp=1 -APPLAUNCHER.S.C02.Rsp=1 -APPLAUNCHER.C.C0001=1 - -WAKEONLAN.S.A0000=1 -CHANNEL.S.LI=1 +CHANNEL.S=1 CHANNEL.S.A0000=1 CHANNEL.S.A0001=1 CHANNEL.S.A0002=1 CHANNEL.S.C00.Rsp=1 CHANNEL.S.C02.Rsp=1 CHANNEL.S.C03.Rsp=1 -CHANNEL.S.C01.Tx=1 +CHANNEL.S.LI=1 +CHANNEL.S.CL=0 + +CHANNEL.C=1 +CHANNEL.C.C00.Tx=1 +CHANNEL.C.C02.Tx=1 +CHANNEL.C.C03.Tx=1 +MEDIAPLAYBACK.S=1 MEDIAPLAYBACK.S.A0000=1 MEDIAPLAYBACK.S.A0001=1 MEDIAPLAYBACK.S.A0002=1 @@ -349,16 +379,23 @@ MEDIAPLAYBACK.S.C06.Rsp=1 MEDIAPLAYBACK.S.C07.Rsp=1 MEDIAPLAYBACK.S.C08.Rsp=1 MEDIAPLAYBACK.S.C09.Rsp=1 -MEDIAPLAYBACK.S.C0B.Rsp=1 +MEDIAPLAYBACK.S.C0b.Rsp=1 +MEDIAPLAYBACK.S.AS=1 +MEDIAPLAYBACK.S.VS=1 + +MEDIAPLAYBACK.C=1 MEDIAPLAYBACK.C.C00.Tx=1 MEDIAPLAYBACK.C.C01.Tx=1 MEDIAPLAYBACK.C.C02.Tx=1 MEDIAPLAYBACK.C.C03.Tx=1 MEDIAPLAYBACK.C.C04.Tx=1 MEDIAPLAYBACK.C.C05.Tx=1 +MEDIAPLAYBACK.C.C06.Tx=0 +MEDIAPLAYBACK.C.C07.Tx=0 MEDIAPLAYBACK.C.C08.Tx=1 MEDIAPLAYBACK.C.C09.Tx=1 +MEDIAPLAYBACK.C.C0b.Tx=0 AUDIOOUTPUT.S=1 AUDIOOUTPUT.S.A0000=1 @@ -370,10 +407,15 @@ AUDIOOUTPUT.C.C00.Tx=1 AUDIOOUTPUT.C.C01.Tx=1 AUDIOOUTPUT.S.NU=0 +TGTNAV.S=1 TGTNAV.S.A0000=1 TGTNAV.S.A0001=1 TGTNAV.S.C00.Rsp=1 +TGTNAV.C=0 +TGTNAV.C.C00.Tx=1 + +APBSC.S=1 APBSC.S.A0000=1 APBSC.S.A0001=1 APBSC.S.A0002=1 @@ -383,34 +425,39 @@ APBSC.S.A0005=1 APBSC.S.A0006=1 APBSC.S.A0007=1 +APBSC.C=1 + +CONTENTLAUNCHER.S=1 CONTENTLAUNCHER.S.A0000=1 CONTENTLAUNCHER.S.A0001=1 -CONTENTLAUNCHER.C.C0000=1 -CONTENTLAUNCHER.C.C0001=1 -CONTENTLAUNCHER.C.C00.Tx=1 -CONTENTLAUNCHER.C.C01.Tx=1 +CONTENTLAUNCHER.S.A0000=1 +CONTENTLAUNCHER.S.A0001=1 +CONTENTLAUNCHER.S.CS=0 +CONTENTLAUNCHER.S.UP=1 CONTENTLAUNCHER.S.C00.Rsp=1 CONTENTLAUNCHER.S.C01.Rsp=1 +CONTENTLAUNCHER.C=1 +CONTENTLAUNCHER.C.C00.Tx=1 +CONTENTLAUNCHER.C.C01.Tx=1 + +ALOGIN.S=1 ALOGIN.S.COMMISSIONABLE=1 -ALOGIN.S.C0000=1 ALOGIN.S.C00.Rsp=1 ALOGIN.S.C02.Rsp=1 ALOGIN.S.C03.Rsp=1 -ALOGIN.C.C0000=1 + +ALOGIN.C=1 ALOGIN.C.C00.Tx=1 -ALOGIN.C.C02.Tx=1 -ALOGIN.C.C03.Tx=1 -LOWPOWER.C=1 KEYPADINPUT.C=1 -PICS_LP=1 + +MC.S=1 MC.S.UDC=1 MC.S.UDCLOGIN=1 +MC.C=1 - -PRS.S.A0003=0 - -#Level Control Cluster +# Level Control Cluster +LVL.S=1 LVL.S.F00=1 LVL.S.F01=1 LVL.S.F02=0 @@ -439,7 +486,14 @@ LVL.S.C07.Rsp=1 LVL.S.C08.Rsp=1 LVL.S.M.VarRate=1 -#Occupancy Sensing Cluster +LVL.C=1 +LVL.C.AM-READ=0 +LVL.C.AM-WRITE=0 +LVL.C.AO-READ=0 +LVL.C.AO-WRITE=0 + +# Occupancy Sensing Cluster +OCC.S=1 OCC.S.A0000=1 OCC.S.A0001=1 OCC.S.A0002=1 @@ -452,6 +506,8 @@ OCC.S.A0022=0 OCC.S.A0030=0 OCC.S.A0031=0 OCC.S.A0032=0 + +OCC.C=1 OCC.C.A0000=1 OCC.C.A0001=1 OCC.C.A0002=1 @@ -466,9 +522,8 @@ OCC.C.A0031=0 OCC.C.A0032=0 OCC.M.OccupancyChange=1 -FLW.S.A0003=0 - -#PRS +# PRS +PRS.S=1 PRS.S.A0000=1 PRS.S.A0001=1 PRS.S.A0002=1 @@ -481,10 +536,16 @@ PRS.S.A0014=0 PRS.S.F00=0 PRS.M.PressureChange=0 -#Groups Cluster +PRS.C=0 +PRS.C.AM-READ=0 +PRS.C.AM-WRITE=0 +PRS.C.AO-READ=0 +PRS.C.AO-WRITE=0 + +# Groups Cluster +G.S=1 G.S.F00=1 G.S.A0000=0 -GRPKEY.S.A0001=0 G.S.C00.Rsp=0 G.S.C01.Rsp=0 G.S.C02.Rsp=0 @@ -495,28 +556,46 @@ G.S.C00.Tx=0 G.S.C01.Tx=0 G.S.C02.Tx=0 G.S.C03.Tx=0 + +G.C=1 G.C.A0000=0 -G.C.C00.Tx=0 +G.C.C00.Tx=1 G.C.C01.Tx=0 G.C.C02.Tx=0 G.C.C03.Tx=0 G.C.C04.Tx=0 G.C.C05.Tx=0 -#Identify Cluster +GRPKEY.C=1 +GRPKEY.S.A0001=0 +GRPKEY.S=1 +GRPKEY.C.A0000=1 +GRPKEY.C.A0001=0 +GRPKEY.C.C00.Tx=1 +GRPKEY.C.C01.Tx=1 + +# Identify Cluster +I.S=1 I.S.A0000=1 I.S.A0001=1 I.S.C00.Rsp=1 I.S.C01.Rsp=1 I.S.C40.Rsp=1 I.S.C00.Tx=0 +I.S.F00=0 + +I.C=1 I.C.C00.Tx=1 I.C.C01.Tx=0 I.C.C40.Tx=1 I.C.C00.Rsp=1 -I.S.F00=0 +I.C.AM-READ=0 +I.C.AM-WRITE=0 +I.C.AO-READ=0 +I.C.AO-WRITE=0 -#Scenes Cluster +# Scenes Cluster +S.S=0 S.S.A0000=0 S.S.A0001=0 S.S.A0002=0 @@ -536,6 +615,11 @@ S.S.C42.Rsp=0 S.S.C05.Rsp=0 G.S.C00.Rsp=0 G.S.C04.Rsp=0 +S.S.AM=0 +S.S.AO=0 +S.S.F00=0 + +S.C=0 S.C.C00.Tx=0 S.C.C01.Tx=0 S.C.C02.Tx=0 @@ -546,13 +630,20 @@ S.C.C06.Tx=0 S.C.C40.Tx=0 S.C.C41.Tx=0 S.C.C42.Tx=0 +S.C.AM-READ=0 +S.C.AM-WRITE=0 +S.C.AO-READ=0 +S.C.AO-WRITE=0 -#Switch Cluster +# Switch Cluster +SWTCH.S=1 SWTCH.S.F00=1 SWTCH.S.F01=0 SWTCH.S.F02=0 SWTCH.S.F03=0 SWTCH.S.F04=0 + +SWTCH.C=0 SWTCH.C.F00=1 SWTCH.C.F01=1 SWTCH.C.F02=1 @@ -560,8 +651,13 @@ SWTCH.C.F03=1 SWTCH.C.F04=1 SWTCH.C.M.RA=1 SWTCH.C.M.EV=1 +SWTCH.C.AM-READ=0 +SWTCH.C.AM-WRITE=0 +SWTCH.C.AO-READ=0 +SWTCH.C.AO-WRITE=0 -#General Commissioning Cluster +# General Commissioning Cluster +CGEN.S=1 CGEN.S.A0000=1 CGEN.S.A0001=1 CGEN.S.A0002=1 @@ -574,7 +670,10 @@ CGEN.S.C03.Tx=1 CGEN.S.C04.Rsp=1 CGEN.S.C05.Tx=1 -#Time Format Localization Cluster +CGEN.C=1 + +# Time Format Localization Cluster +LTIME.S=1 LTIME.S.A0000=1 LTIME.S.A0001=1 LTIME.S.A0002=1 @@ -584,9 +683,10 @@ LTIME.S.Afffa=1 LTIME.S.Afffb=1 LTIME.S.Afffc=1 LTIME.S.Afffd=1 -LTIME.S.A0002.SCT=1 LTIME.S.A0000.12HR=1 LTIME.S.A0000.24HR=1 + +LTIME.C=1 LTIME.C.A0000=1 LTIME.C.A0001=1 LTIME.C.A0002=1 @@ -596,11 +696,11 @@ LTIME.C.Afffa=1 LTIME.C.Afffb=1 LTIME.C.Afffc=1 LTIME.C.Afffd=1 -LTIME.C.A0002.SCT=1 LTIME.C.A0000.12HR=1 LTIME.C.A0000.24HR=1 -#Unit Localization Cluster +# Unit Localization Cluster +LUNIT.S=1 LUNIT.S.F00=1 LUNIT.S.A0000=1 LUNIT.S.Afff8=1 @@ -619,37 +719,32 @@ LUNIT.C.Afffa=1 LUNIT.C.Afffb=1 LUNIT.C.Afffc=1 LUNIT.C.Afffd=1 -LUNIT.C.A0000.Fahrenheit=1 -LUNIT.C.A0000.Celsius=1 -LUNIT.C.A0000.Kelvin=1 -#Multiple Fabrics -PICS_MF=1 -PICS_MF_BCM=1 +LUNIT.C=1 + +# Multiple Fabrics CADMIN.UserInterfaceDisplay=1 CADMIN.AudioInterface=1 CADMIN.S.C00.Rsp=1 CADMIN.S.C01.Rsp=1 CADMIN.S.C02.Rsp=1 -OPCREDS.S.C0a.Rsp=1 -OPCREDS.S.A0001=1 -BINFO.S.A0005=1 + +CADMIN.S=1 CADMIN.S.A0000=1 CADMIN.S.A0001=1 CADMIN.S.A0002=1 + +CADMIN.S.F00=0 + +CADMIN.C=1 CADMIN.C.C00.Tx=1 CADMIN.C.C01.Tx=1 CADMIN.C.C02.Tx=1 CADMIN.C.A0000=1 CADMIN.C.A0001=1 CADMIN.C.A0002=1 -CADMIN.S=1 -CADMIN.C=1 -OPCREDS.C.C0a.Tx=1 -OPCREDS.C.A0001=1 -BINFO.C.A0005=1 -#OTA Software Update +# OTA Software Update MCORE.OTA.Requestor=1 MCORE.OTA.Provider=1 MCORE.OTA.HTTPS=1 @@ -658,40 +753,61 @@ MCORE.OTA.Resume=1 MCORE.OTA.VendorSpecific=1 MCORE.OTA.Retry=1 MCORE.ACL.Administrator=1 -OTAS.S.M.DelayedActionTime=1 +OTAP.S.M.DelayedActionTime=1 OTAP.S.M.UserConsentNeeded=1 OTAP.S.M.DelayedActionTime=1 OTAR.C.M.NotifyUpdateApplied=1 OTAR.C.M.AnnounceOTAProvider=1 -#User Label +# User Label +ULABEL.S=1 ULABEL.S.A0000=1 ULABEL.C.A0000=1 +ULABEL.C=0 -#Fixed Label +# Fixed Label +FLABEL.S=1 FLABEL.S.A0000=1 + +FLABEL.C=1 FLABEL.C.A0000=1 -#Thermostat User Configuration Cluster +# Thermostat User Configuration Cluster +TSUIC.S=1 TSUIC.S.A0000=1 TSUIC.S.A0001=1 TSUIC.S.A0002=1 -#Bridge +TSUIC.C=0 +TSUIC.C.AM-READ=0 +TSUIC.C.AM-WRITE=0 +TSUIC.C.AO-READ=0 +TSUIC.C.AO-WRITE=0 + +# Bridge MCORE.BRIDGE=1 MCORE.BRIDGE.BatInfo=1 MCORE.BRIDGE.OtherControl=1 MCORE.BRIDGE.AllowDeviceRename=1 MCORE.DEVLIST.UseDevices=1 MCORE.DEVLIST.UseDeviceState=1 -MCORE.DEVLIST.UseDeviceNames=1 +MCORE.DEVLIST.UseDeviceName=1 MCORE.DEVLIST.UseBatInfo=1 -#Bulk Data Exchange Protocol +# Bulk Data Exchange Protocol MCORE.BDX.Driver=1 MCORE.BDX.BlockQueryWithSkip=1 - -#General Diagnostics Cluster +MCORE.BDX.AsynchronousReceiver=0 +MCORE.BDX.AsynchronousSender=0 +MCORE.BDX.Initiator=0 +MCORE.BDX.Receiver=0 +MCORE.BDX.Responder=0 +MCORE.BDX.Sender=0 +MCORE.BDX.SynchronousReceiver=0 +MCORE.BDX.SynchronousSender=0 + +# General Diagnostics Cluster +DGGEN.S=1 DGGEN.S.A0000=1 DGGEN.S.A0001=1 DGGEN.S.A0002=1 @@ -707,6 +823,7 @@ DGGEN.S.E01=1 DGGEN.S.E02=1 DGGEN.S.E03=1 +DGGEN.C=1 DGGEN.C.A0000=1 DGGEN.C.A0001=1 DGGEN.C.A0002=1 @@ -717,19 +834,24 @@ DGGEN.C.A0006=1 DGGEN.C.A0007=1 DGGEN.C.A0008=1 DGGEN.C.C00.Tx=1 -DGGEN.C.E00=1 -DGGEN.C.E01=1 -DGGEN.C.E02=1 -DGGEN.C.E03=1 -#Flow Measurement Cluster +# Flow Measurement Cluster +FLW.S=1 FLW.S.A0000=1 FLW.S.A0001=1 FLW.S.A0002=1 FLW.S.A0003=1 FLW.M.FlowChange=1 -#Pump Configuration and Control +FLW.C=1 +FLW.C.AM-READ=0 +FLW.C.AM-WRITE=0 +FLW.C.AO-READ=0 +FLW.C.AO-WRITE=0 + + +# Pump Configuration and Control +PCC.S=1 PCC.S.F00=1 PCC.S.F01=0 PCC.S.F02=0 @@ -760,8 +882,32 @@ PCC.S.A0016=1 PCC.S.A0017=1 PCC.S.A0020=1 PCC.S.A0021=1 - -#Power Source Cluster +PCC.S.E0000=0 +PCC.S.E0001=0 +PCC.S.E0002=0 +PCC.S.E0003=0 +PCC.S.E0004=0 +PCC.S.E0005=0 +PCC.S.E0006=0 +PCC.S.E0007=0 +PCC.S.E0008=0 +PCC.S.E0009=0 +PCC.S.E000a=0 +PCC.S.E000b=0 +PCC.S.E000c=0 +PCC.S.E000d=0 +PCC.S.E000e=0 +PCC.S.E000f=0 +PCC.S.E0010=0 + +PCC.C=0 +PCC.C.AM-READ=0 +PCC.C.AM-WRITE=0 +PCC.C.AO-READ=0 +PCC.C.AO-WRITE=0 + +# Power Source Cluster +PS.S=1 PS.S.A0000=1 PS.S.A0001=1 PS.S.A0002=1 @@ -804,42 +950,44 @@ PS.M.ManualWiredFault=1 PS.M.ManualBatFault=1 PS.M.ManualBatChargeFault=1 -#Thermostat User Configuration Cluster +PS.C=0 +PS.C.AM-READ=0 +PS.C.AM-WRITE=0 +PS.C.AO-READ=0 +PS.C.AO-WRITE=0 + +# Thermostat User Configuration Cluster +TSUIC.S=1 TSUIC.S.A0000=1 TSUIC.S.A0001=1 TSUIC.S.A0002=1 -#Binding + +# Binding +BIND.S=1 BIND.S.A0000=1 -GRPKEY.C.A0000=1 -OO.C.C00.Tx=1 -OO.C.C01.Tx=1 -GRPKEY.C.C00.Tx=1 -GRPKEY.C.C01.Tx=1 -G.C.C00.Tx=1 -#Device Discovery +BIND.C=0 + +# Device Discovery MCORE.DD.DISCOVERY_SOFTAP=0 -MCORE.DD.WIFI=0 -MCORE.DD.BLE=1 MCORE.DD.CHIP_DEV=1 MCORE.DD.DEV_LOCK=1 MCORE.DD.DEV_BARRIER=1 MCORE.DD.IE=1 MCORE.DD.QR=1 MCORE.DD.MANUAL_PC=1 -MCORE.DD.TLV=1 -MCORE.DD.CONCAT=1 MCORE.DD.NFC=1 MCORE.DD.PASSCODE=1 MCORE.DD.UI=1 MCORE.DD.COMM_DISCOVERY=1 MCORE.DD.CONTROLLER=1 +MCORE.DD.CONCATENATED_QR_CODE=0 +MCORE.DD.MANUAL_PC_COMMISSIONING=0 +MCORE.DD.QR_COMMISSIONING=0 MCORE.DD.CTRL_CONCATENATED_QR_CODE_1_INORDER=1 MCORE.DD.CTRL_CONCATENATED_QR_CODE_1=1 MCORE.DD.CTRL_CONCATENATED_QR_CODE_2=1 -MCORE.DD.COMMISSIONER=1 MCORE.DD.CUSTOM_COMM_FLOW=1 -MCORE.DD.DT_BLE=1 MCORE.DD.CONTROLLER=1 MCORE.DD.DISCOVERY_IP=1 MCORE.DD.STANDARD_COMM_FLOW=1 @@ -850,8 +998,6 @@ MCORE.DD.21_MANUAL_PC=1 MCORE.DD.PHYSICAL_TAMPERING=1 MCORE.DD.SCAN_NFC=1 MCORE.DD.SCAN_QR_CODE=1 -MCORE.DD.THREAD=1 -MCORE.DD.WIRELESS=1 MCORE.COM.WIRELESS=1 MCORE.COM.BLE=1 MCORE.COM.WIFI=1 @@ -860,7 +1006,6 @@ MCORE.COM.THR=1 MCORE.DD.TXT_KEY_VP=1 MCORE.DD.TXT_KEY_DT=1 MCORE.DD.DISCOVERY_BLE=1 -MCORE.DD.WIFI=1 MCORE.DD.TXT_KEY_DN=1 MCORE.DD.TXT_KEY_RI=1 MCORE.DD.TXT_KEY_PH=1 @@ -868,13 +1013,15 @@ MCORE.DD.TXT_KEY_PI=1 MCORE.DD.EXTENDED_DISCOVERY=1 MCORE.DD.COMMISSIONING_SUBTYPE_V=1 MCORE.DD.COMMISSIONING_SUBTYPE_T=1 -MCORE.DD.FETCH_DCL=1 -#Ethernet Network Diagnostics Cluster +# Ethernet Network Diagnostics Cluster +DGETH.S=1 DGETH.S.C00.Rsp=1 + +DGETH.C=1 DGETH.C.C00.Tx=1 -#Server +# Server DGETH.S.A0000=1 DGETH.S.A0001=1 DGETH.S.A0002=1 @@ -884,7 +1031,7 @@ DGETH.S.A0005=1 DGETH.S.A0006=1 DGETH.S.A0007=1 DGETH.S.A0008=1 -#client +# Client DGETH.C.A0000=1 DGETH.C.A0001=1 DGETH.C.A0002=1 @@ -894,14 +1041,15 @@ DGETH.C.A0005=1 DGETH.C.A0006=1 DGETH.C.A0007=1 DGETH.C.A0008=1 -#Features +# Features DGETH.S.F00=0 DGETH.S.F01=1 -#Wi-Fi Network Diagnostics Cluster +# Wi-Fi Network Diagnostics Cluster +DGWIFI.S=1 DGWIFI.S.F00=1 DGWIFI.S.F01=1 -#Server +# Server DGWIFI.S.A0000=1 DGWIFI.S.A0001=1 DGWIFI.S.A0002=1 @@ -915,7 +1063,9 @@ DGWIFI.S.A0009=1 DGWIFI.S.A000a=1 DGWIFI.S.A000b=1 DGWIFI.S.A000c=1 -#client +# Client +DGWIFI.C=1 +DGWIFI.C.A=0 DGWIFI.C.A0000=1 DGWIFI.C.A0001=1 DGWIFI.C.A0002=1 @@ -929,13 +1079,15 @@ DGWIFI.C.A0009=1 DGWIFI.C.A000a=1 DGWIFI.C.A000b=1 DGWIFI.C.A000c=1 -#Events +DGWIFI.C.C00.Tx=0 +# Events DGWIFI.S.E00=1 DGWIFI.S.E01=1 DGWIFI.S.E02=1 DGWIFI.S.C00.Rsp=1 -#On/Off Cluster +# On/Off Cluster +OO.S=1 OO.S.A0000=1 OO.S.A4000=1 OO.S.A4001=1 @@ -947,16 +1099,24 @@ OO.S.C02.Rsp=1 OO.S.C40.Rsp=1 OO.S.C41.Rsp=1 OO.S.C42.Rsp=1 +OO.S.F00=1 +OO.S.A4003=1 OO.M.ManuallyControlled=1 + +OO.C=1 OO.C.C00.Tx=1 OO.C.C01.Tx=1 OO.C.C02.Tx=1 OO.C.C40.Tx=1 OO.C.C41.Tx=1 OO.C.C42.Tx=1 -OO.S.F00=1 +OO.C.AM-READ=0 +OO.C.AM-WRITE=0 +OO.C.AO-READ=0 +OO.C.AO-WRITE=0 -#Actions Cluster +# Actions Cluster +ACT.S=1 ACT.S.A0000=1 ACT.S.A0001=1 ACT.S.A0002=1 @@ -964,6 +1124,12 @@ ACT.S.M.FillActionList=1 ACT.S.M.FillEndpointLists=1 ACT.S.M.SetupURLWithSuffix=1 ACT.S.M.OverlappingEndpointLists=1 + +ACT.C=1 +ACT.C.AM-READ=0 +ACT.C.AM-WRITE=0 +ACT.C.AO-READ=0 +ACT.C.AO-WRITE=0 ACT.C.C00.Tx=0 ACT.C.C01.Tx=0 ACT.C.C02.Tx=0 @@ -977,33 +1143,58 @@ ACT.C.C09.Tx=0 ACT.C.C0a.Tx=0 ACT.C.C0b.Tx=0 -#Boolean State Cluster +# Boolean State Cluster +BOOL.S=1 BOOL.S.A0000=1 BOOL.M.ManuallyControlled=1 BOOL.S.E00=1 -#Diagnostics Logs Cluster +BOOL.C=1 +BOOL.C.AM-READ=0 +BOOL.C.AM-WRITE=0 +BOOL.C.AO-READ=0 +BOOL.C.AO-WRITE=0 + + +# Diagnostics Logs Cluster +DLOG.S=1 DLOG.S.C00.Rsp=1 DLOG.S.C01.Tx=1 + +DLOG.C=1 DLOG.C.C01.Rsp=1 DLOG.C.C00.Tx=1 -#Localization Configuration Cluster +# Localization Configuration Cluster +LCFG.S=1 LCFG.S.A0000=1 LCFG.S.A0001=1 + +LCFG.C=1 LCFG.C.A0000=1 LCFG.C.A0001=1 -#Power Source Configuration Cluster +# Power Source Configuration Cluster +PSCFG.S=1 PSCFG.S.A0000=1 -#Thread Network Diagnostics Cluster -#Features +PSCFG.C=0 +PSCFG.C.AM-READ=0 +PSCFG.C.AM-WRITE=0 +PSCFG.C.AO-READ=0 +PSCFG.C.AO-WRITE=0 + +# Thread Network Diagnostics Cluster +# Features +DGTHREAD.S=1 DGTHREAD.S.F00=1 DGTHREAD.S.F01=1 DGTHREAD.S.F02=1 DGTHREAD.S.F03=1 -#server + +DGTHREAD.C=0 + +# Server DGTHREAD.S.A0000=1 DGTHREAD.S.A0001=1 DGTHREAD.S.A0002=1 @@ -1068,19 +1259,19 @@ DGTHREAD.S.A003c=1 DGTHREAD.S.A003d=1 DGTHREAD.S.A003e=1 -#server commands +# Server Commands DGTHREAD.S.C00.Rsp=1 -#Events +# Events DGTHREAD.S.E00=1 DGTHREAD.S.E01=1 DGTHREAD.C.E00=1 DGTHREAD.C.E01=1 -#client commands +# Client Commands DGTHREAD.C.C00.Tx=1 -#client +# Client DGTHREAD.C.A0000=1 DGTHREAD.C.A0001=1 DGTHREAD.C.A0002=1 @@ -1145,15 +1336,23 @@ DGTHREAD.C.A003c=1 DGTHREAD.C.A003d=1 DGTHREAD.C.A003e=1 -#Illuminance Measurement Cluster +# Illuminance Measurement Cluster +ILL.S=1 ILL.S.A0000=1 ILL.S.A0001=1 ILL.S.A0002=1 ILL.S.A0003=1 ILL.S.A0004=1 -#Door Lock -#server attributes +ILL.C=1 +ILL.C.AM-READ=0 +ILL.C.AM-WRITE=0 +ILL.C.AO-READ=0 +ILL.C.AO-WRITE=0 + +# Door Lock +# Server attributes +DRLK.S=1 DRLK.S.DetectLockJammed=1 DRLK.S.Simulate.NotFullyLocked=1 DRLK.S.A0000=1 @@ -1193,14 +1392,18 @@ DRLK.S.A0032=1 DRLK.S.A0033=1 DRLK.S.A0035=1 -#Server Events +DRLK.C=1 +DRLK.C.F0a=0 +DRLK.C.F0b=0 + +# Server Events DRLK.S.E00=1 DRLK.S.E01=1 DRLK.S.E02=1 DRLK.S.E03=1 DRLK.S.E04=1 -#Server Features +# Server Features DRLK.S.F00=1 DRLK.S.F01=1 DRLK.S.F02=0 @@ -1212,7 +1415,7 @@ DRLK.S.F08=1 DRLK.S.F0a=1 DRLK.S.F0b=1 -#Server commands +# Server Commands DRLK.S.C00.Rsp=1 DRLK.S.C01.Rsp=1 DRLK.S.C03.Rsp=1 @@ -1238,7 +1441,7 @@ DRLK.S.C1c.Tx=1 DRLK.S.C23.Tx=1 DRLK.S.C25.Tx=1 -#client attributes +# Client attributes DRLK.C.A0000=1 DRLK.C.A0001=1 DRLK.C.A0002=1 @@ -1276,14 +1479,14 @@ DRLK.C.A0032=1 DRLK.C.A0033=1 DRLK.C.A0035=1 -#client Events +# Client Events DRLK.C.E00=1 DRLK.C.E01=1 DRLK.C.E02=1 DRLK.C.E03=1 DRLK.C.E04=1 -#client Features +# Client Features DRLK.C.F00=1 DRLK.C.F01=1 DRLK.C.F02=1 @@ -1293,7 +1496,7 @@ DRLK.C.F06=1 DRLK.C.F07=1 DRLK.C.F08=1 -#client commands +# Client Commands DRLK.C.C00.Tx=1 DRLK.C.C01.Tx=1 DRLK.C.C03.Tx=1 @@ -1319,8 +1522,9 @@ DRLK.C.C1c.Rsp=1 DRLK.C.C23.Rsp=1 DRLK.C.C25.Rsp=1 -#Device Management -#Server Attributes +# Device Management +# Server Attributes +BINFO.S=1 BINFO.S.A0000=1 BINFO.S.A0001=1 BINFO.S.A0002=1 @@ -1342,13 +1546,14 @@ BINFO.S.A0011=1 BINFO.S.A0012=1 BINFO.S.A0013=1 -#Events +# Events BINFO.S.E00=1 BINFO.S.E01=1 BINFO.S.E02=1 BINFO.S.E03=1 -#Client Attributes +# Client Attributes +BINFO.C=1 BINFO.C.A0000=1 BINFO.C.A0001=1 BINFO.C.A0002=1 @@ -1370,14 +1575,15 @@ BINFO.C.A0011=1 BINFO.C.A0012=1 BINFO.C.A0013=1 -#Events +# Events BINFO.C.E00=1 BINFO.C.E01=1 BINFO.C.E02=1 BINFO.C.E03=1 -#NetworkCommissioning Cluster -#Server Attributes +# NetworkCommissioning Cluster +# Server Attributes +CNET.S=1 CNET.S.A0000=1 CNET.S.A0001=1 CNET.S.A0002=1 @@ -1387,12 +1593,12 @@ CNET.S.A0005=1 CNET.S.A0006=1 CNET.S.A0007=1 -#Features +# Features CNET.S.F00=0 CNET.S.F01=0 CNET.S.F02=1 -#Server Commands +# Server Commands CNET.S.C00.Rsp=1 CNET.S.C01.Tx=1 CNET.S.C02.Rsp=1 @@ -1403,7 +1609,9 @@ CNET.S.C06.Rsp=1 CNET.S.C07.Tx=1 CNET.S.C08.Rsp=1 -#Client Attributes +CNET.C=1 + +# Client Attributes CNET.C.A0000=1 CNET.C.A0001=1 CNET.C.A0002=1 @@ -1413,7 +1621,7 @@ CNET.C.A0005=1 CNET.C.A0006=1 CNET.C.A0007=1 -#Client Commands +# Client Commands CNET.C.C00.Tx=1 CNET.C.C02.Tx=1 CNET.C.C03.Tx=1 @@ -1421,19 +1629,22 @@ CNET.C.C04.Tx=1 CNET.C.C06.Tx=1 CNET.C.C08.Tx=1 -#Node Operational Credential -#Server Attributes -MCORE.FACTORY_RESET=1 +# Client Features +CNET.C.F00=0 +CNET.C.F01=0 +CNET.C.F02=0 + +# Node Operational Credential +# Server Attributes +OPCREDS.S=1 OPCREDS.S.A0000=1 OPCREDS.S.A0001=1 OPCREDS.S.A0002=1 OPCREDS.S.A0003=1 OPCREDS.S.A0004=1 OPCREDS.S.A0005=1 -OPCREDS.S.A0006=1 -OPCREDS.S.A0007=1 -#Server Commands +# Server Commands OPCREDS.S.C00.Rsp=1 OPCREDS.S.C01.Tx=1 OPCREDS.S.C02.Rsp=1 @@ -1447,17 +1658,16 @@ OPCREDS.S.C09.Rsp=1 OPCREDS.S.C0a.Rsp=1 OPCREDS.S.C0b.Rsp=1 -#Client Attributes +# Client Attributes +OPCREDS.C=1 OPCREDS.C.A0000=1 OPCREDS.C.A0001=1 OPCREDS.C.A0002=1 OPCREDS.C.A0003=1 OPCREDS.C.A0004=1 OPCREDS.C.A0005=1 -OPCREDS.C.A0006=1 -OPCREDS.C.A0007=1 -#Client Commands +# Client Commands OPCREDS.C.C00.Tx=1 OPCREDS.C.C01.Rsp=1 OPCREDS.C.C02.Tx=1 @@ -1471,8 +1681,9 @@ OPCREDS.C.C09.Tx=1 OPCREDS.C.C0a.Tx=1 OPCREDS.C.C0b.Tx=1 -#Thermostat -#Thermostat Server +# Thermostat +# Server +TSTAT.S=1 TSTAT.S.F00=1 TSTAT.S.F01=1 TSTAT.S.F02=0 @@ -1531,19 +1742,35 @@ TSTAT.S.A0045=0 TSTAT.S.A0046=0 TSTAT.S.A0047=0 TSTAT.S.M.MinSetpointDeadBandWritable=1 +TSTAT.S.M.HVACSystemTypeConfigurationWritable=0 -#Server commands +# Server Commands TSTAT.S.C00.Rsp=1 TSTAT.S.C01.Rsp=0 TSTAT.S.C02.Rsp=0 TSTAT.S.C03.Rsp=0 TSTAT.S.C04.Rsp=0 -#Client Commands +# Client +TSTAT.C=0 +TSTAT.C.AM-READ=0 +TSTAT.C.AM-WRITE=0 +TSTAT.C.AO-READ=0 +TSTAT.C.AO-WRITE=0 +TSTAT.C.C00.Rsp=0 +TSTAT.C.C01.Rsp=0 +TSTAT.C.C01.Tx=0 +TSTAT.C.C02.Tx=0 +TSTAT.C.C03.Tx=0 +TSTAT.S.C00.Tx=0 +TSTAT.S.C01.Tx=0 + +# Client Commands TSTAT.C.C00.Tx=1 TSTAT.C.C04.Tx=0 -#Access Control cluster +# Access Control cluster +ACL.S=1 ACL.S.A0000=1 ACL.S.A0001=1 ACL.S.A0002=1 @@ -1552,7 +1779,12 @@ ACL.S.A0004=1 ACL.S.E00=1 ACL.S.E01=1 +ACL.C=1 +ACL.C.E00=0 +ACL.C.E01=0 + # Mode Select Cluster +MOD.S=1 MOD.S.F00=1 MOD.S.A0000=1 MOD.S.A0001=1 @@ -1560,39 +1792,44 @@ MOD.S.A0002=1 MOD.S.A0003=1 MOD.S.A0004=1 MOD.S.A0005=1 -OO.S.A4003=1 +MOD.S.C00.Rsp=1 + +MOD.C=1 MOD.C.A0002=1 MOD.C.C00.Tx=1 -MOD.S.C00.Rsp=1 +MOD.C.AM-READ=0 +MOD.C.AM-WRITE=0 +MOD.C.AO-READ=0 +MOD.C.AO-WRITE=0 -#Device Attestation +# Device Attestation MCORE.DA.ATTEST_WARNING=1 MCORE.DA.CERTDECL_ORIGIN_VENDORID=1 MCORE.DA.CERTDECL_ORIGIN_PRODUCTID=1 MCORE.DA.CERTDECL_AUTH_PAA=1 MCORE.DA.ATTESTELEMENT_FW_INFO=1 -#Descriptor Cluster TestPlan +# Descriptor Cluster +DESC.S=1 DESC.S.A0000=1 DESC.S.A0001=1 DESC.S.A0002=1 DESC.S.A0003=1 -DESC.S.A0004=1 +DESC.C=1 DESC.C.A0000=1 DESC.C.A0001=1 DESC.C.A0002=1 DESC.C.A0003=1 -DESC.C.A0004=1 -#Secure Channel +# Secure Channel +MCORE.SC.SII_COMM_DISCOVERY_KEY=1 +MCORE.SC.SAI_COMM_DISCOVERY_KEY=1 +MCORE.SC.DT_CONTROLLER=0 +MCORE.SC.LWIP=0 MCORE.SC.SII_OP_DISCOVERY_KEY=1 MCORE.SC.SAI_OP_DISCOVERY_KEY=1 MCORE.SC.T_KEY=1 -MCORE.SC.BLE=1 -MCORE.SC.WIFI=1 -MCORE.SC.ETH=1 -MCORE.SC.THR=1 MCORE.SC.VENDOR_SUBTYPE=1 MCORE.SC.DEVTYPE_SUBTYPE=1 MCORE.SC.VP_KEY=1 @@ -1604,9 +1841,13 @@ MCORE.SC.PI_KEY=1 MCORE.SC.EXTENDED_DISCOVERY=1 MCORE.SC.SED=1 MCORE.SC.ADV=1 +MCORE.ROLE.COMMISSIONEE=1 +MCORE.ROLE.COMMISSIONER=0 +MCORE.ROLE.CONTROLLER=0 -#Bridged Device Basic Information -#server +# Bridged Device Basic Information +# Server +BRBINFO.S=1 BRBINFO.S.A0000=0 BRBINFO.S.A0001=0 BRBINFO.S.A0002=0 @@ -1628,13 +1869,14 @@ BRBINFO.S.A0011=1 BRBINFO.S.A0012=0 BRBINFO.S.A0013=0 -#Events +# Events BRBINFO.S.E00=1 BRBINFO.S.E01=1 BRBINFO.S.E02=1 BRBINFO.S.E03=1 -#Client +# Client +BRBINFO.C=1 BRBINFO.C.A0000=1 BRBINFO.C.A0001=1 BRBINFO.C.A0002=1 @@ -1656,17 +1898,21 @@ BRBINFO.C.A0011=1 BRBINFO.C.A0012=1 BRBINFO.C.A0013=1 -#Events +# Events BRBINFO.C.E00=1 BRBINFO.C.E01=1 BRBINFO.C.E02=1 BRBINFO.C.E03=1 -#Interaction Data Model +# Interaction Data Model +MCORE.IDM.C=1 MCORE.IDM.C.InvokeRequest=1 MCORE.IDM.C.ReadRequest=1 MCORE.IDM.C.WriteRequest=1 MCORE.IDM.C.SubscribeRequest=1 +MCORE.IDM.C.ReadEvent=1 +MCORE.IDM.C.SubscribeEvent=1 +MCORE.IDM.S=1 MCORE.IDM.S.Attribute.DataType_Bool=1 MCORE.IDM.S.Attribute.DataType_String=1 MCORE.IDM.S.Attribute.DataType_UnsignedInteger=1 @@ -1702,7 +1948,6 @@ MCORE.IDM.C.SubscribeRequest.Attribute.DataType_UnsignedInteger=1 MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Integer=1 MCORE.IDM.C.SubscribeRequest.Attribute.DataType_FloatingPoint=1 MCORE.IDM.C.SubscribeRequest.Attribute.DataType_List=1 -MCORE.IDM.S.LargeData=1 MCORE.IDM.C.WriteRequest.Attribute.DataType_Bool=1 MCORE.IDM.C.WriteRequest.Attribute.DataType_String=1 MCORE.IDM.C.WriteRequest.Attribute.DataType_UnsignedInteger=1 @@ -1715,4 +1960,5 @@ MCORE.IDM.C.WriteRequest.Attribute.DataType_Enum=1 MCORE.IDM.C.WriteRequest.Attribute.DataType_Bitmap=1 MCORE.IDM.C.SubscribeRequest.Attribute.DataType_Bool=1 MCORE.IDM.C.SubscribeRequest.MultipleAttributes=1 -PICS_MCORE_UI_FACTORYRESET=1 +MCORE.IDM.S.LargeData=1 +MCORE.IDM.S.PersistentSubscription=1 diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index f90e2077ce7db9..67b61c791e2591 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -30890,7 +30890,7 @@ class Test_TC_MEDIAPLAYBACK_1_7Suite : public TestCommand } case 20: { LogStep(20, "Read the optional command(Seek) in AcceptedCommandList"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0b.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::AcceptedCommandList::Id, true, chip::NullOptional); } @@ -34582,7 +34582,7 @@ class Test_TC_MEDIAPLAYBACK_6_3Suite : public TestCommand } case 2: { LogStep(2, "Sends a Seek command"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0b.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::Seek::Type value; value.position = 10000ULL; @@ -34593,7 +34593,7 @@ class Test_TC_MEDIAPLAYBACK_6_3Suite : public TestCommand } case 3: { LogStep(3, "Verify that the media has moved to 10 seconds from the starting point"); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0b.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span( @@ -34604,7 +34604,7 @@ class Test_TC_MEDIAPLAYBACK_6_3Suite : public TestCommand } case 4: { LogStep(4, "Reads the SampledPosition attribute"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.A0003 && MEDIAPLAYBACK.S.C0B.Rsp"), + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.A0003 && MEDIAPLAYBACK.S.C0b.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); return ReadAttribute(kIdentityAlpha, GetEndpoint(1), MediaPlayback::Id, MediaPlayback::Attributes::SampledPosition::Id, true, chip::NullOptional); @@ -34651,7 +34651,7 @@ class Test_TC_MEDIAPLAYBACK_6_3Suite : public TestCommand } case 9: { LogStep(9, "Sends a Seek command Position value beyond the furthest valid position"); - VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MEDIAPLAYBACK.S.C0b.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::MediaPlayback::Commands::Seek::Type value; value.position = mSeekPosition.HasValue() ? mSeekPosition.Value() : 100000000ULL; @@ -34662,7 +34662,7 @@ class Test_TC_MEDIAPLAYBACK_6_3Suite : public TestCommand } case 10: { LogStep(10, "verify that the media has not moved."); - VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0B.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0b.Rsp"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; value.message = chip::Span("Please enter 'y' if media has not movedgarbage: not in length on purpose", 39); @@ -65933,7 +65933,7 @@ class TestDiscoverySuite : public TestCommand } case 10: { LogStep(10, "Check Vendor ID (_V)"); - VerifyOrDo(!ShouldSkip("VENDOR_SUBTYPE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MCORE.SC.VENDOR_SUBTYPE"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DiscoveryCommands::Commands::FindCommissionableByVendorId::Type value; value.value = mVendorId.HasValue() ? mVendorId.Value() : 65521ULL; @@ -65947,28 +65947,28 @@ class TestDiscoverySuite : public TestCommand } case 12: { LogStep(12, "TXT key for Vendor ID and Product ID (VP)"); - VerifyOrDo(!ShouldSkip("VP_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MCORE.SC.VP_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DiscoveryCommands::Commands::FindCommissionable::Type value; return FindCommissionable(kIdentityAlpha, value); } case 13: { LogStep(13, "TXT key for Vendor ID and Product ID (VP)"); - VerifyOrDo(!ShouldSkip("VP_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MCORE.SC.VP_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DiscoveryCommands::Commands::FindCommissionable::Type value; return FindCommissionable(kIdentityAlpha, value); } case 14: { - LogStep(14, "Optional TXT key for MRP Retry Interval Idle (CRI)"); - VerifyOrDo(!ShouldSkip("CRI_COMM_DISCOVERY_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(14, "Optional TXT key for MRP Sleepy Idle Interval (SII)"); + VerifyOrDo(!ShouldSkip("MCORE.SC.SII_COMM_DISCOVERY_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DiscoveryCommands::Commands::FindCommissionable::Type value; return FindCommissionable(kIdentityAlpha, value); } case 15: { - LogStep(15, "Optional TXT key for MRP Retry Interval Active (CRA)"); - VerifyOrDo(!ShouldSkip("CRA_COMM_DISCOVERY_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + LogStep(15, "Optional TXT key for MRP Sleepy Active Interval (SAI)"); + VerifyOrDo(!ShouldSkip("MCORE.SC.SAI_COMM_DISCOVERY_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DiscoveryCommands::Commands::FindCommissionable::Type value; return FindCommissionable(kIdentityAlpha, value); @@ -65981,28 +65981,28 @@ class TestDiscoverySuite : public TestCommand } case 17: { LogStep(17, "Optional TXT key for device name (DN)"); - VerifyOrDo(!ShouldSkip("DN_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MCORE.SC.DN_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DiscoveryCommands::Commands::FindCommissionable::Type value; return FindCommissionable(kIdentityAlpha, value); } case 18: { LogStep(18, "Optional TXT key for rotating device identifier (RI)"); - VerifyOrDo(!ShouldSkip("RI_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MCORE.SC.RI_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DiscoveryCommands::Commands::FindCommissionable::Type value; return FindCommissionable(kIdentityAlpha, value); } case 19: { LogStep(19, "Optional TXT key for pairing hint (PH)"); - VerifyOrDo(!ShouldSkip("PH_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MCORE.SC.PH_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DiscoveryCommands::Commands::FindCommissionable::Type value; return FindCommissionable(kIdentityAlpha, value); } case 20: { LogStep(20, "Optional TXT key for pairing instructions (PI)"); - VerifyOrDo(!ShouldSkip("PI_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + VerifyOrDo(!ShouldSkip("MCORE.SC.PI_KEY"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); ListFreer listFreer; chip::app::Clusters::DiscoveryCommands::Commands::FindCommissionable::Type value; return FindCommissionable(kIdentityAlpha, value); diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index afb2835d1a3ccd..9f1bb0505634f9 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -39678,7 +39678,7 @@ class Test_TC_MEDIAPLAYBACK_1_7 : public TestCommandBridge { break; case 20: ChipLogProgress(chipTool, " ***** Test Step 20 : Read the optional command(Seek) in AcceptedCommandList\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C0b.Rsp")) { NextTest(); return; } @@ -45539,7 +45539,7 @@ class Test_TC_MEDIAPLAYBACK_6_3 : public TestCommandBridge { break; case 2: ChipLogProgress(chipTool, " ***** Test Step 2 : Sends a Seek command\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C0b.Rsp")) { NextTest(); return; } @@ -45548,7 +45548,7 @@ class Test_TC_MEDIAPLAYBACK_6_3 : public TestCommandBridge { case 3: ChipLogProgress( chipTool, " ***** Test Step 3 : Verify that the media has moved to 10 seconds from the starting point\n"); - if (ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0B.Rsp")) { + if (ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0b.Rsp")) { NextTest(); return; } @@ -45556,7 +45556,7 @@ class Test_TC_MEDIAPLAYBACK_6_3 : public TestCommandBridge { break; case 4: ChipLogProgress(chipTool, " ***** Test Step 4 : Reads the SampledPosition attribute\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.A0003 && MEDIAPLAYBACK.S.C0B.Rsp")) { + if (ShouldSkip("MEDIAPLAYBACK.S.A0003 && MEDIAPLAYBACK.S.C0b.Rsp")) { NextTest(); return; } @@ -45597,7 +45597,7 @@ class Test_TC_MEDIAPLAYBACK_6_3 : public TestCommandBridge { case 9: ChipLogProgress( chipTool, " ***** Test Step 9 : Sends a Seek command Position value beyond the furthest valid position\n"); - if (ShouldSkip("MEDIAPLAYBACK.S.C0B.Rsp")) { + if (ShouldSkip("MEDIAPLAYBACK.S.C0b.Rsp")) { NextTest(); return; } @@ -45605,7 +45605,7 @@ class Test_TC_MEDIAPLAYBACK_6_3 : public TestCommandBridge { break; case 10: ChipLogProgress(chipTool, " ***** Test Step 10 : verify that the media has not moved.\n"); - if (ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0B.Rsp")) { + if (ShouldSkip("PICS_USER_PROMPT && MEDIAPLAYBACK.S.C0b.Rsp")) { NextTest(); return; } From d6bb8c244a5f2ebccb4fc1a8a705f05c86df51d3 Mon Sep 17 00:00:00 2001 From: Steven Cooreman Date: Wed, 8 Feb 2023 23:32:11 +0100 Subject: [PATCH 09/16] [Silabs] Add partial hardware acceleration of SPAKE2+ on EFR32xG2x (#24845) * Reuse curve parameters stored in object instead of recreating * Speed up SPAKE2+ point multiplication on devices with HSE Silicon Labs devices with SEMAILBOX have a feature to return the full result of the ECDH key derivation operation, which is equal to the result of a scalar ECPoint multiplication operation. Leverage that hardware- accelerated primitive to speed up the commissioning process versus doing ECP calculations in pure software. * Speed up SPAKE2+ point multiplication on devices with HSE (2) Now that the base point multiplication operation is accelerated, split up the AddMul function in two (accelerated) multiplications and one software-backed addition. * Speed up SPAKE2+ point multiplication on devices with HSE (3) Replace the last instance of mbedtls_ecp_mul with the accelerated operation * Restyled by clang-format * Add error handling to EFR32 accelerated version of PointAddMul --------- Co-authored-by: Restyled.io --- .../silabs/efr32/CHIPCryptoPALPsaEfr32.cpp | 173 ++++++++++++++++-- 1 file changed, 162 insertions(+), 11 deletions(-) diff --git a/src/platform/silabs/efr32/CHIPCryptoPALPsaEfr32.cpp b/src/platform/silabs/efr32/CHIPCryptoPALPsaEfr32.cpp index f7cde6fd14fe33..6972da95aff7a8 100644 --- a/src/platform/silabs/efr32/CHIPCryptoPALPsaEfr32.cpp +++ b/src/platform/silabs/efr32/CHIPCryptoPALPsaEfr32.cpp @@ -1207,15 +1207,130 @@ CHIP_ERROR Spake2p_P256_SHA256_HKDF_HMAC::PointWrite(const void * R, uint8_t * o return CHIP_NO_ERROR; } +extern "C" { +#include "em_device.h" +} + +#if defined(SEMAILBOX_PRESENT) +// Add inlined optimisation which can use the SE to do point multiplication operations using +// the ECDH primitive as a proxy for scalar multiplication. +extern "C" { +#include "sl_se_manager.h" +#include "sl_se_manager_key_derivation.h" +#include "sl_se_manager_util.h" +#include "sli_se_driver_key_management.h" +#include "sli_se_manager_internal.h" +} +#endif /* SEMAILBOX_PRESENT */ + CHIP_ERROR Spake2p_P256_SHA256_HKDF_HMAC::PointMul(void * R, const void * P1, const void * fe1) { Spake2p_Context * context = to_inner_spake2p_context(&mSpake2pContext); +#if defined(SEMAILBOX_PRESENT) + psa_status_t status = PSA_SUCCESS; + uint8_t point[2 * kP256_FE_Length] = { 0 }; + uint8_t scalar[kP256_FE_Length] = { 0 }; + + // This inlined implementation only supports P256, but check assumptions + if (context->curve.id != MBEDTLS_ECP_DP_SECP256R1) + { + return CHIP_ERROR_INVALID_ARGUMENT; + } + + /* pull out key info from mbedtls structures */ + status = mbedtls_mpi_write_binary((const mbedtls_mpi *) fe1, scalar, sizeof(scalar)); + if (status != PSA_SUCCESS) + { + return CHIP_ERROR_INTERNAL; + } + + status = mbedtls_mpi_write_binary(&((const mbedtls_ecp_point *) P1)->MBEDTLS_PRIVATE(X), point, kP256_FE_Length); + if (status != PSA_SUCCESS) + { + return CHIP_ERROR_INTERNAL; + } + + status = + mbedtls_mpi_write_binary(&((const mbedtls_ecp_point *) P1)->MBEDTLS_PRIVATE(Y), point + kP256_FE_Length, kP256_FE_Length); + if (status != PSA_SUCCESS) + { + return CHIP_ERROR_INTERNAL; + } + + { + sl_se_key_descriptor_t priv_desc = { 0 }; + sl_se_key_descriptor_t pub_desc = { 0 }; + sl_se_key_descriptor_t shared_desc = { 0 }; + sl_se_command_context_t cmd_ctx = SL_SE_COMMAND_CONTEXT_INIT; + sl_status_t sl_status = SL_STATUS_FAIL; + + // Set private key to scalar + priv_desc.type = SL_SE_KEY_TYPE_ECC_P256; + priv_desc.flags |= SL_SE_KEY_FLAG_ASYMMETRIC_BUFFER_HAS_PRIVATE_KEY; + sli_se_key_descriptor_set_plaintext(&priv_desc, scalar, sizeof(scalar)); + + // Set public key to point + pub_desc.type = SL_SE_KEY_TYPE_ECC_P256; + pub_desc.flags |= SL_SE_KEY_FLAG_ASYMMETRIC_BUFFER_HAS_PUBLIC_KEY; + sli_se_key_descriptor_set_plaintext(&pub_desc, point, sizeof(point)); + + // Set output to point + shared_desc.type = SL_SE_KEY_TYPE_SYMMETRIC; + shared_desc.size = sizeof(point); + sli_se_key_descriptor_set_plaintext(&shared_desc, point, sizeof(point)); + + // Re-init SE command context. + sl_status = sl_se_init_command_context(&cmd_ctx); + if (sl_status != SL_STATUS_OK) + { + return CHIP_ERROR_INTERNAL; + } + + // Perform key agreement algorithm (ECDH). + sl_status = sl_se_ecdh_compute_shared_secret(&cmd_ctx, &priv_desc, &pub_desc, &shared_desc); + if (sl_status != SL_STATUS_OK) + { + ChipLogError(Crypto, "ECDH SL failure %lx", sl_status); + if (sl_status == SL_STATUS_COMMAND_IS_INVALID) + { + // This error will be returned if the key type isn't supported. + return CHIP_ERROR_NOT_IMPLEMENTED; + } + else + { + // If the ECDH operation failed, this is most likely due to the peer key + // being an invalid elliptic curve point. Other sources for failure should + // hopefully have been caught during parameter validation. + return CHIP_ERROR_INVALID_ARGUMENT; + } + } + } + + status = mbedtls_mpi_read_binary(&((mbedtls_ecp_point *) R)->MBEDTLS_PRIVATE(X), point, kP256_FE_Length); + if (status != PSA_SUCCESS) + { + return CHIP_ERROR_INTERNAL; + } + + status = mbedtls_mpi_read_binary(&((mbedtls_ecp_point *) R)->MBEDTLS_PRIVATE(Y), point + kP256_FE_Length, kP256_FE_Length); + if (status != PSA_SUCCESS) + { + return CHIP_ERROR_INTERNAL; + } + + status = mbedtls_mpi_lset(&((mbedtls_ecp_point *) R)->MBEDTLS_PRIVATE(Z), 1); + if (status != PSA_SUCCESS) + { + return CHIP_ERROR_INTERNAL; + } +#else /* SEMAILBOX_PRESENT */ if (mbedtls_ecp_mul(&context->curve, (mbedtls_ecp_point *) R, (const mbedtls_mpi *) fe1, (const mbedtls_ecp_point *) P1, CryptoRNG, nullptr) != 0) { return CHIP_ERROR_INTERNAL; } +#endif /* SEMAILBOX_PRESENT */ return CHIP_NO_ERROR; } @@ -1225,6 +1340,36 @@ CHIP_ERROR Spake2p_P256_SHA256_HKDF_HMAC::PointAddMul(void * R, const void * P1, { Spake2p_Context * context = to_inner_spake2p_context(&mSpake2pContext); +#if defined(SEMAILBOX_PRESENT) + CHIP_ERROR error = CHIP_NO_ERROR; + int result; + + // Accelerate 'muladd' using separate point multiplication operations + mbedtls_ecp_point fe1P1, fe2P2; + mbedtls_mpi one; + mbedtls_mpi_init(&one); + mbedtls_ecp_point_init(&fe1P1); + mbedtls_ecp_point_init(&fe2P2); + + result = mbedtls_mpi_lset(&one, 1); + VerifyOrExit(result == 0, error = CHIP_ERROR_NO_MEMORY); + + // Do fe1P1 = fe1 * P1 and fe2P2 = fe2 * P2 since those can be accelerated + SuccessOrExit(error = PointMul(&fe1P1, P1, fe1)); + SuccessOrExit(error = PointMul(&fe2P2, P2, fe2)); + + // Do R = (1 * fe1P1) + (1 * fe2P2) since point addition is not a public mbedTLS API + // mbedTLS will apply a shortcut since (1 * A) == A + result = mbedtls_ecp_muladd(&context->curve, (mbedtls_ecp_point *) R, &one, &fe1P1, &one, &fe2P2); + VerifyOrExit(result == 0, error = CHIP_ERROR_INTERNAL); + +exit: + mbedtls_mpi_free(&one); + mbedtls_ecp_point_free(&fe1P1); + mbedtls_ecp_point_free(&fe2P2); + + return error; +#else /* SEMAILBOX_PRESENT */ if (mbedtls_ecp_muladd(&context->curve, (mbedtls_ecp_point *) R, (const mbedtls_mpi *) fe1, (const mbedtls_ecp_point *) P1, (const mbedtls_mpi *) fe2, (const mbedtls_ecp_point *) P2) != 0) { @@ -1232,6 +1377,7 @@ CHIP_ERROR Spake2p_P256_SHA256_HKDF_HMAC::PointAddMul(void * R, const void * P1, } return CHIP_NO_ERROR; +#endif /* SEMAILBOX_PRESENT */ } CHIP_ERROR Spake2p_P256_SHA256_HKDF_HMAC::PointInvert(void * R) @@ -1254,39 +1400,44 @@ CHIP_ERROR Spake2p_P256_SHA256_HKDF_HMAC::PointCofactorMul(void * R) CHIP_ERROR Spake2p_P256_SHA256_HKDF_HMAC::ComputeL(uint8_t * Lout, size_t * L_len, const uint8_t * w1in, size_t w1in_len) { - CHIP_ERROR error = CHIP_NO_ERROR; - int result = 0; + CHIP_ERROR error = CHIP_NO_ERROR; + int result = 0; + Spake2p_Context * context = to_inner_spake2p_context(&mSpake2pContext); - mbedtls_ecp_group curve; mbedtls_mpi w1_bn; mbedtls_ecp_point Ltemp; - mbedtls_ecp_group_init(&curve); mbedtls_mpi_init(&w1_bn); mbedtls_ecp_point_init(&Ltemp); - result = mbedtls_ecp_group_load(&curve, MBEDTLS_ECP_DP_SECP256R1); - VerifyOrExit(result == 0, error = CHIP_ERROR_INTERNAL); - result = mbedtls_mpi_read_binary(&w1_bn, Uint8::to_const_uchar(w1in), w1in_len); VerifyOrExit(result == 0, error = CHIP_ERROR_INTERNAL); - result = mbedtls_mpi_mod_mpi(&w1_bn, &w1_bn, &curve.N); + result = mbedtls_mpi_mod_mpi(&w1_bn, &w1_bn, &context->curve.N); VerifyOrExit(result == 0, error = CHIP_ERROR_INTERNAL); - result = mbedtls_ecp_mul(&curve, &Ltemp, &w1_bn, &curve.G, CryptoRNG, nullptr); +#if defined(SEMAILBOX_PRESENT) + // Do the point multiplication using hardware acceleration via ECDH primitive + error = PointMul(&Ltemp, &context->curve.G, &w1_bn); + if (error != CHIP_NO_ERROR) + { + goto exit; + } +#else /* SEMAILBOX_PRESENT */ + result = mbedtls_ecp_mul(&context->curve, &Ltemp, &w1_bn, &context->curve.G, CryptoRNG, nullptr); VerifyOrExit(result == 0, error = CHIP_ERROR_INTERNAL); +#endif /* SEMAILBOX_PRESENT */ memset(Lout, 0, *L_len); - result = mbedtls_ecp_point_write_binary(&curve, &Ltemp, MBEDTLS_ECP_PF_UNCOMPRESSED, L_len, Uint8::to_uchar(Lout), *L_len); + result = + mbedtls_ecp_point_write_binary(&context->curve, &Ltemp, MBEDTLS_ECP_PF_UNCOMPRESSED, L_len, Uint8::to_uchar(Lout), *L_len); VerifyOrExit(result == 0, error = CHIP_ERROR_INTERNAL); exit: _log_mbedTLS_error(result); mbedtls_ecp_point_free(&Ltemp); mbedtls_mpi_free(&w1_bn); - mbedtls_ecp_group_free(&curve); return error; } From 1ab43dffb01702e748219b22bf43d59e669c7673 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Wed, 8 Feb 2023 20:40:41 -0500 Subject: [PATCH 10/16] Clarify documentation around DNs in MTRCertificates and MTRCertificateInfo. (#24932) * Clarify documentation around DNs in MTRCertificates and MTRCertificateInfo. Fixes https://github.com/project-chip/connectedhomeip/issues/24908 * Address review comments. --- .../Framework/CHIP/MTRCertificateInfo.h | 36 ++++++++++++++++--- src/darwin/Framework/CHIP/MTRCertificates.h | 14 +++++--- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRCertificateInfo.h b/src/darwin/Framework/CHIP/MTRCertificateInfo.h index 3d4d187f414498..6c92a6576a4903 100644 --- a/src/darwin/Framework/CHIP/MTRCertificateInfo.h +++ b/src/darwin/Framework/CHIP/MTRCertificateInfo.h @@ -35,10 +35,30 @@ API_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) /** * Initializes the receiver with an operational certificate in Matter TLV format. + * + * This can be a node operational certificate, a Matter intermediate + * certificate, or a Matter root certificate. */ - (nullable instancetype)initWithTLVBytes:(MTRCertificateTLVBytes)bytes; +/** + * The Distinguished Name of the issuer of the certificate. + * + * For a node operational certificate, the issuer will match the subject of the + * root certificate or intermediate certificate that represents the entity that + * issued the node operational certificate. + * + * For an intermediate certificate, the issuer will match the subject of the + * root certificate. + * + * Matter root certificates are self-signed, i.e. the issuer and the subject are + * the same. + */ @property (readonly) MTRDistinguishedNameInfo * issuer; + +/** + * The Distinguished Name of the entity represented by the certificate. + */ @property (readonly) MTRDistinguishedNameInfo * subject; @property (readonly) NSDate * notBefore; @@ -57,27 +77,33 @@ API_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) - (instancetype)init NS_UNAVAILABLE; /** - * The Node ID contained in the DN, if any. + * The Node ID contained in the DN, if any. Will be non-nil for the subject of + * a valid node operational certificate. */ @property (readonly, nullable) NSNumber * nodeID; /** - * The Fabric ID contained in the DN, if any. + * The Fabric ID contained in the DN, if any. Will be non-nil for the subject + * of a valid node operational certificate, and may be non-nil for the subject + * of a valid intermediate or root certificate. */ @property (readonly, nullable) NSNumber * fabricID; /** - * The `RCAC` ID contained in the DN, if any. + * The `RCAC` ID contained in the DN, if any. Will be non-nil for the subject + * of a valid root certificate. */ @property (readonly, nullable) NSNumber * rootCACertificateID; /** - * The `ICAC` ID contained in the DN, if any. + * The `ICAC` ID contained in the DN, if any. Will be non-nil for the subject + * of a valid intermediate certificate. */ @property (readonly, nullable) NSNumber * intermediateCACertificateID; /** - * The set of CASE Authenticated Tags contained in the DN. + * The set of CASE Authenticated Tags contained in the DN. Maybe be non-empty for + * the subject of a valid node operational certificate. */ @property (readonly) NSSet * caseAuthenticatedTags; diff --git a/src/darwin/Framework/CHIP/MTRCertificates.h b/src/darwin/Framework/CHIP/MTRCertificates.h index c87f34e3a3d131..fbcb2decced27f 100644 --- a/src/darwin/Framework/CHIP/MTRCertificates.h +++ b/src/darwin/Framework/CHIP/MTRCertificates.h @@ -35,8 +35,11 @@ NS_ASSUME_NONNULL_BEGIN * Create a root (self-signed) X.509 DER encoded certificate that has the * right fields to be a valid Matter root certificate. * - * If issuerID is nil, a random issuer id is generated. Otherwise the provided - * issuer id is used. + * If issuerID is not nil, it's unsignedLongLongValue will be used for the + * matter-rcac-id attribute in the subject distinguished name of the resulting + * certificate. + * + * If issuerID is nil, a random value will be generated for matter-rcac-id. * * If fabricID is not nil, it will be included in the subject DN of the * certificate. In this case it must be a valid Matter fabric id. @@ -54,8 +57,11 @@ NS_ASSUME_NONNULL_BEGIN * Create an intermediate X.509 DER encoded certificate that has the * right fields to be a valid Matter intermediate certificate. * - * If issuerID is nil, a random issuer id is generated. Otherwise the provided - * issuer id is used. + * If issuerID is not nil, it's unsignedLongLongValue will be used for the + * matter-icac-id attribute in the subject distinguished name of the resulting + * certificate. + * + * If issuerID is nil, a random value will be generated for matter-icac-id. * * If fabricID is not nil, it will be included in the subject DN of the * certificate. In this case it must be a valid Matter fabric id. From 738d33cab269e69f287c8ca4e60ce40e93eac6b6 Mon Sep 17 00:00:00 2001 From: Terence Hampson Date: Wed, 8 Feb 2023 21:49:49 -0500 Subject: [PATCH 11/16] Fix TestClusterMultiFabric to run on chip-repl based yamltest (#24925) --- scripts/tests/chiptest/__init__.py | 1 - .../tests/suites/TestClusterMultiFabric.yaml | 20 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/scripts/tests/chiptest/__init__.py b/scripts/tests/chiptest/__init__.py index 9bd4085c317ed1..795cdcdf41a986 100644 --- a/scripts/tests/chiptest/__init__.py +++ b/scripts/tests/chiptest/__init__.py @@ -138,7 +138,6 @@ def _GetInDevelopmentTests() -> Set[str]: "Test_TC_ACL_2_9.yaml", "TestEvents.yaml", - "TestClusterMultiFabric.yaml", # Enum mismatch "TestGroupMessaging.yaml", # Needs group support in repl "TestMultiAdmin.yaml", # chip-repl hang on command expeted to fail } diff --git a/src/app/tests/suites/TestClusterMultiFabric.yaml b/src/app/tests/suites/TestClusterMultiFabric.yaml index 852e9e51a9f5be..97b38ee103df85 100644 --- a/src/app/tests/suites/TestClusterMultiFabric.yaml +++ b/src/app/tests/suites/TestClusterMultiFabric.yaml @@ -135,7 +135,7 @@ tests: { a: 0, b: true, - c: 12, + c: 2, d: "", e: "", f: 11, @@ -155,7 +155,7 @@ tests: { a: 0, b: true, - c: 13, + c: 1, d: "", e: "", f: 12, @@ -235,7 +235,7 @@ tests: { a: 0, b: true, - c: 12, + c: 2, d: "", e: "", f: 11, @@ -255,7 +255,7 @@ tests: { a: 0, b: true, - c: 13, + c: 1, d: "", e: "", f: 12, @@ -420,7 +420,7 @@ tests: { a: 0, b: true, - c: 12, + c: 2, d: "", e: "", f: 11, @@ -440,7 +440,7 @@ tests: { a: 0, b: true, - c: 13, + c: 1, d: "", e: "", f: 12, @@ -470,7 +470,7 @@ tests: { a: 0, b: true, - c: 52, + c: 2, d: "", e: "", f: 51, @@ -500,7 +500,7 @@ tests: { a: 0, b: true, - c: 12, + c: 2, d: "", e: "", f: 11, @@ -520,7 +520,7 @@ tests: { a: 0, b: true, - c: 13, + c: 1, d: "", e: "", f: 12, @@ -550,7 +550,7 @@ tests: { a: 0, b: true, - c: 52, + c: 2, d: "", e: "", f: 51, From bcdf9dda0deab4049521a7d1544cf2c3f5963a9c Mon Sep 17 00:00:00 2001 From: Sharad Binjola <31142146+sharadb-amazon@users.noreply.github.com> Date: Wed, 8 Feb 2023 19:56:20 -0800 Subject: [PATCH 12/16] tv-casting-app: Handle uncaught exceptions before JNI crashes app and make iOS discoverCommissioners API callback based (#24896) * iOS tv-casting-app: Making discovery API callback based * tv-casting-app: Handled uncaught exceptions and null pointer issues * Changing catch-all to catch Throwable instead of just Exception --- .../chip/casting/app/CertTestFragment.java | 55 +++++++++++----- .../casting/app/MediaPlaybackFragment.java | 48 ++++++++------ .../jni/com/chip/casting/FailureCallback.java | 12 +++- .../chip/casting/MatterCallbackHandler.java | 12 +++- .../SubscriptionEstablishedCallback.java | 18 ++++- .../jni/com/chip/casting/SuccessCallback.java | 16 ++++- .../app/src/main/jni/cpp/ConversionUtils.cpp | 3 + .../jni/cpp/MatterCallbackHandler-JNI.cpp | 4 +- .../project.pbxproj | 4 ++ .../CastingServerBridge.h | 3 +- .../CastingServerBridge.mm | 16 ++++- .../CommissionerDiscoveryDelegateImpl.h | 65 +++++++++++++++++++ .../CommissionerDiscoveryViewModel.swift | 28 ++++++-- .../tv-casting-common/include/CastingServer.h | 2 +- .../tv-casting-common/src/CastingServer.cpp | 4 +- .../CHIPCommissionableNodeController.h | 1 + 16 files changed, 235 insertions(+), 56 deletions(-) create mode 100644 examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CommissionerDiscoveryDelegateImpl.h diff --git a/examples/tv-casting-app/android/App/app/src/main/java/com/chip/casting/app/CertTestFragment.java b/examples/tv-casting-app/android/App/app/src/main/java/com/chip/casting/app/CertTestFragment.java index 7540c3a3f8b6c1..16070eb1dfe59e 100644 --- a/examples/tv-casting-app/android/App/app/src/main/java/com/chip/casting/app/CertTestFragment.java +++ b/examples/tv-casting-app/android/App/app/src/main/java/com/chip/casting/app/CertTestFragment.java @@ -81,8 +81,12 @@ public void onClick(View v) { private void runCertTests(Activity activity) { CertTestMatterSuccessFailureCallback successFailureCallback = new CertTestMatterSuccessFailureCallback(activity); - CertTestMatterSuccessFailureCallbackInteger successFailureCallbackInteger = - new CertTestMatterSuccessFailureCallbackInteger(successFailureCallback); + CertTestMatterSuccessCallback successCallback = + new CertTestMatterSuccessCallback(successFailureCallback); + CertTestMatterFailureCallback failureCallback = + new CertTestMatterFailureCallback(successFailureCallback); + CertTestMatterSuccessCallbackInteger successCallbackInteger = + new CertTestMatterSuccessCallbackInteger(successFailureCallback); CertTestMatterCallbackHandler callback = new CertTestMatterCallbackHandler(successFailureCallback); @@ -269,7 +273,7 @@ private void runCertTests(Activity activity) { successFailureCallback, () -> { tvCastingApp.applicationBasic_readApplicationVersion( - kContentApp, successFailureCallback, successFailureCallback); + kContentApp, successCallback, failureCallback); }); runAndWait( @@ -277,7 +281,7 @@ private void runCertTests(Activity activity) { successFailureCallback, () -> { tvCastingApp.applicationBasic_readVendorName( - kContentApp, successFailureCallback, successFailureCallback); + kContentApp, successCallback, failureCallback); }); runAndWait( @@ -285,7 +289,7 @@ private void runCertTests(Activity activity) { successFailureCallback, () -> { tvCastingApp.applicationBasic_readApplicationName( - kContentApp, successFailureCallback, successFailureCallback); + kContentApp, successCallback, failureCallback); }); runAndWait( @@ -293,7 +297,7 @@ private void runCertTests(Activity activity) { successFailureCallback, () -> { tvCastingApp.applicationBasic_readVendorID( - kContentApp, successFailureCallbackInteger, successFailureCallbackInteger); + kContentApp, successCallbackInteger, failureCallback); }); runAndWait( @@ -301,7 +305,7 @@ private void runCertTests(Activity activity) { successFailureCallback, () -> { tvCastingApp.applicationBasic_readProductID( - kContentApp, successFailureCallbackInteger, successFailureCallbackInteger); + kContentApp, successCallbackInteger, failureCallback); }); runAndWait( @@ -320,7 +324,7 @@ public void handle(MediaPlaybackTypes.PlaybackStateEnum response) { activity, MatterError.NO_ERROR, "mediaPlayback_subscribeToCurrentState"); } }, - successFailureCallback, + failureCallback, 0, 20, new SubscriptionEstablishedCallback() { @@ -415,8 +419,7 @@ public void handle(MatterError error) { } } - class CertTestMatterSuccessFailureCallback extends FailureCallback - implements SuccessCallback { + class CertTestMatterSuccessFailureCallback { private Activity activity; private String testMethod; private CountDownLatch cdl; @@ -433,7 +436,6 @@ public void setCountDownLatch(CountDownLatch cdl) { this.cdl = cdl; } - @Override public void handle(MatterError error) { try { cdl.countDown(); @@ -446,7 +448,6 @@ public void handle(MatterError error) { } } - @Override public void handle(String response) { try { cdl.countDown(); @@ -460,18 +461,38 @@ public void handle(String response) { } } - class CertTestMatterSuccessFailureCallbackInteger extends FailureCallback - implements SuccessCallback { + class CertTestMatterSuccessCallback extends SuccessCallback { + private CertTestMatterSuccessFailureCallback delegate; + + CertTestMatterSuccessCallback(CertTestMatterSuccessFailureCallback delegate) { + this.delegate = delegate; + } + + @Override + public void handle(String response) { + delegate.handle(response); + } + } + class CertTestMatterFailureCallback extends FailureCallback { private CertTestMatterSuccessFailureCallback delegate; - CertTestMatterSuccessFailureCallbackInteger(CertTestMatterSuccessFailureCallback delegate) { + CertTestMatterFailureCallback(CertTestMatterSuccessFailureCallback delegate) { this.delegate = delegate; } @Override - public void handle(MatterError error) { - delegate.handle(error); + public void handle(MatterError err) { + delegate.handle(err); + } + } + + class CertTestMatterSuccessCallbackInteger extends SuccessCallback { + + private CertTestMatterSuccessFailureCallback delegate; + + CertTestMatterSuccessCallbackInteger(CertTestMatterSuccessFailureCallback delegate) { + this.delegate = delegate; } @Override diff --git a/examples/tv-casting-app/android/App/app/src/main/java/com/chip/casting/app/MediaPlaybackFragment.java b/examples/tv-casting-app/android/App/app/src/main/java/com/chip/casting/app/MediaPlaybackFragment.java index 7e9070665b74b4..325b33e85b79f4 100644 --- a/examples/tv-casting-app/android/App/app/src/main/java/com/chip/casting/app/MediaPlaybackFragment.java +++ b/examples/tv-casting-app/android/App/app/src/main/java/com/chip/casting/app/MediaPlaybackFragment.java @@ -8,6 +8,7 @@ import android.widget.TextView; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; import com.chip.casting.ContentApp; import com.chip.casting.FailureCallback; import com.chip.casting.MatterError; @@ -63,13 +64,16 @@ public void onClick(View v) { TextView currentStateValue = getView().findViewById(R.id.currentStateValue); SuccessCallback successCallback = - playbackStateEnum -> { - Log.d( - TAG, - "handle() called on SuccessCallback with " - + playbackStateEnum); - getActivity() - .runOnUiThread( + new SuccessCallback() { + @Override + public void handle(MediaPlaybackTypes.PlaybackStateEnum playbackStateEnum) { + Log.d( + TAG, + "handle() called on SuccessCallback with " + + playbackStateEnum); + FragmentActivity fragmentActivity = getActivity(); + if (fragmentActivity != null) { + fragmentActivity.runOnUiThread( new Runnable() { @Override public void run() { @@ -78,6 +82,8 @@ public void run() { } } }); + } + } }; FailureCallback failureCallback = @@ -97,18 +103,22 @@ public void run() { }; SubscriptionEstablishedCallback subscriptionEstablishedCallback = - (SubscriptionEstablishedCallback) - () -> { - Log.d(TAG, "handle() called on SubscriptionEstablishedCallback"); - getActivity() - .runOnUiThread( - new Runnable() { - @Override - public void run() { - subscriptionStatus.setText("Subscription established!"); - } - }); - }; + new SubscriptionEstablishedCallback() { + @Override + public void handle() { + Log.d(TAG, "handle() called on SubscriptionEstablishedCallback"); + FragmentActivity fragmentActivity = getActivity(); + if (fragmentActivity != null) { + fragmentActivity.runOnUiThread( + new Runnable() { + @Override + public void run() { + subscriptionStatus.setText("Subscription established!"); + } + }); + } + } + }; boolean retVal = tvCastingApp.mediaPlayback_subscribeToCurrentState( diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/FailureCallback.java b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/FailureCallback.java index 1d6b4097e77cbc..698d091ca06896 100644 --- a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/FailureCallback.java +++ b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/FailureCallback.java @@ -17,10 +17,18 @@ */ package com.chip.casting; +import android.util.Log; + public abstract class FailureCallback { + private static final String TAG = FailureCallback.class.getSimpleName(); + public abstract void handle(MatterError err); - public final void handle(int errorCode, String errorMessage) { - handle(new MatterError(errorCode, errorMessage)); + private final void handleInternal(int errorCode, String errorMessage) { + try { + handle(new MatterError(errorCode, errorMessage)); + } catch (Throwable t) { + Log.e(TAG, "FailureCallback::Caught an unhandled Throwable from the client: " + t); + } } } diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/MatterCallbackHandler.java b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/MatterCallbackHandler.java index a06f12248883db..8eb3d2c4f1318e 100644 --- a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/MatterCallbackHandler.java +++ b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/MatterCallbackHandler.java @@ -17,10 +17,18 @@ */ package com.chip.casting; +import android.util.Log; + public abstract class MatterCallbackHandler { + private static final String TAG = MatterCallbackHandler.class.getSimpleName(); + public abstract void handle(MatterError err); - public final void handle(int errorCode, String errorMessage) { - handle(new MatterError(errorCode, errorMessage)); + private final void handleInternal(int errorCode, String errorMessage) { + try { + handle(new MatterError(errorCode, errorMessage)); + } catch (Throwable t) { + Log.e(TAG, "MatterCallbackHandler::Caught an unhandled Throwable from the client: " + t); + } } } diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/SubscriptionEstablishedCallback.java b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/SubscriptionEstablishedCallback.java index e182c80e7ccdef..6bac295871e18c 100644 --- a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/SubscriptionEstablishedCallback.java +++ b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/SubscriptionEstablishedCallback.java @@ -17,6 +17,20 @@ */ package com.chip.casting; -public interface SubscriptionEstablishedCallback { - void handle(); +import android.util.Log; + +public abstract class SubscriptionEstablishedCallback { + private static final String TAG = SubscriptionEstablishedCallback.class.getSimpleName(); + + public abstract void handle(); + + private void handleInternal() { + try { + handle(); + } catch (Throwable t) { + Log.e( + TAG, + "SubscriptionEstablishedCallback::Caught an unhandled Throwable from the client: " + t); + } + } } diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/SuccessCallback.java b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/SuccessCallback.java index 125ce4daabfc90..8f10aa72cce16e 100644 --- a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/SuccessCallback.java +++ b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/SuccessCallback.java @@ -17,6 +17,18 @@ */ package com.chip.casting; -public interface SuccessCallback { - void handle(R response); +import android.util.Log; + +public abstract class SuccessCallback { + private static final String TAG = SuccessCallback.class.getSimpleName(); + + public abstract void handle(R response); + + public void handleInternal(R response) { + try { + handle(response); + } catch (Throwable t) { + Log.e(TAG, "SuccessCallback::Caught an unhandled Throwable from the client: " + t); + } + } } diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/cpp/ConversionUtils.cpp b/examples/tv-casting-app/android/App/app/src/main/jni/cpp/ConversionUtils.cpp index cff8ddd8ba9677..3b5832af055963 100644 --- a/examples/tv-casting-app/android/App/app/src/main/jni/cpp/ConversionUtils.cpp +++ b/examples/tv-casting-app/android/App/app/src/main/jni/cpp/ConversionUtils.cpp @@ -61,6 +61,7 @@ CHIP_ERROR convertJAppParametersToCppAppParams(jobject appParameters, AppParams CHIP_ERROR convertJContentAppToTargetEndpointInfo(jobject contentApp, TargetEndpointInfo & outTargetEndpointInfo) { ChipLogProgress(AppServer, "convertJContentAppToTargetEndpointInfo called"); + VerifyOrReturnError(contentApp != nullptr, CHIP_ERROR_INVALID_ARGUMENT); JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); jclass jContentAppClass; @@ -124,6 +125,7 @@ CHIP_ERROR convertTargetEndpointInfoToJContentApp(TargetEndpointInfo * targetEnd CHIP_ERROR convertJVideoPlayerToTargetVideoPlayerInfo(jobject videoPlayer, TargetVideoPlayerInfo & outTargetVideoPlayerInfo) { ChipLogProgress(AppServer, "convertJVideoPlayerToTargetVideoPlayerInfo called"); + VerifyOrReturnError(videoPlayer != nullptr, CHIP_ERROR_INVALID_ARGUMENT); JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); jclass jVideoPlayerClass; @@ -241,6 +243,7 @@ CHIP_ERROR convertJDiscoveredNodeDataToCppDiscoveredNodeData(jobject jDiscovered chip::Dnssd::DiscoveredNodeData & outCppDiscoveredNodeData) { ChipLogProgress(AppServer, "convertJDiscoveredNodeDataToCppDiscoveredNodeData called"); + VerifyOrReturnError(jDiscoveredNodeData != nullptr, CHIP_ERROR_INVALID_ARGUMENT); JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/cpp/MatterCallbackHandler-JNI.cpp b/examples/tv-casting-app/android/App/app/src/main/jni/cpp/MatterCallbackHandler-JNI.cpp index eb19010ea33853..0c841c4f19039f 100644 --- a/examples/tv-casting-app/android/App/app/src/main/jni/cpp/MatterCallbackHandler-JNI.cpp +++ b/examples/tv-casting-app/android/App/app/src/main/jni/cpp/MatterCallbackHandler-JNI.cpp @@ -31,10 +31,10 @@ CHIP_ERROR CallbackBaseJNI::SetUp(JNIEnv * env, jobject inHandler) mClazz = env->GetObjectClass(mObject); VerifyOrExit(mClazz != nullptr, ChipLogError(AppServer, "Failed to get handler Java class")); - mMethod = env->GetMethodID(mClazz, "handle", mMethodSignature); + mMethod = env->GetMethodID(mClazz, "handleInternal", mMethodSignature); if (mMethod == nullptr) { - ChipLogError(AppServer, "Failed to access 'handle' method with signature %s", mMethodSignature); + ChipLogError(AppServer, "Failed to access 'handleInternal' method with signature %s", mMethodSignature); env->ExceptionClear(); } diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj index ae049529c753e9..8672a747f4442d 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge.xcodeproj/project.pbxproj @@ -26,6 +26,7 @@ 3CCB8742286A593700771BAD /* ConversionUtils.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3CCB873C286A593700771BAD /* ConversionUtils.hpp */; }; 3CCB8743286A593700771BAD /* CastingServerBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3CCB873D286A593700771BAD /* CastingServerBridge.mm */; }; 3CCB8744286A593700771BAD /* ConversionUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3CCB873E286A593700771BAD /* ConversionUtils.mm */; }; + 3CD6D01A298CDA2100D7569A /* CommissionerDiscoveryDelegateImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6D019298CDA2100D7569A /* CommissionerDiscoveryDelegateImpl.h */; }; 3CE868F42946D76200FCB92B /* CommissionableDataProviderImpl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3CE868F32946D76200FCB92B /* CommissionableDataProviderImpl.mm */; }; 3CF8532728E37F1000F07B9F /* MatterError.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3CF8532628E37F1000F07B9F /* MatterError.mm */; }; /* End PBXBuildFile section */ @@ -60,6 +61,7 @@ 3CCB873C286A593700771BAD /* ConversionUtils.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ConversionUtils.hpp; sourceTree = ""; }; 3CCB873D286A593700771BAD /* CastingServerBridge.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CastingServerBridge.mm; sourceTree = ""; }; 3CCB873E286A593700771BAD /* ConversionUtils.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ConversionUtils.mm; sourceTree = ""; }; + 3CD6D019298CDA2100D7569A /* CommissionerDiscoveryDelegateImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommissionerDiscoveryDelegateImpl.h; sourceTree = ""; }; 3CE868F32946D76200FCB92B /* CommissionableDataProviderImpl.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = CommissionableDataProviderImpl.mm; sourceTree = ""; }; 3CF8532528E37ED800F07B9F /* MatterError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MatterError.h; sourceTree = ""; }; 3CF8532628E37F1000F07B9F /* MatterError.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MatterError.mm; sourceTree = ""; }; @@ -128,6 +130,7 @@ 3C26AC8F2927008900BA6881 /* DeviceAttestationCredentialsProviderImpl.mm */, 3C0D9CDF2920A30C00D3332B /* CommissionableDataProviderImpl.hpp */, 3CE868F32946D76200FCB92B /* CommissionableDataProviderImpl.mm */, + 3CD6D019298CDA2100D7569A /* CommissionerDiscoveryDelegateImpl.h */, ); path = MatterTvCastingBridge; sourceTree = ""; @@ -139,6 +142,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 3CD6D01A298CDA2100D7569A /* CommissionerDiscoveryDelegateImpl.h in Headers */, 3C26AC8C2926FE0C00BA6881 /* DeviceAttestationCredentialsProviderImpl.hpp in Headers */, 3CCB8740286A593700771BAD /* CastingServerBridge.h in Headers */, 3CCB8742286A593700771BAD /* ConversionUtils.hpp in Headers */, diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.h b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.h index b306e39072d617..0a8fa240e6e1c1 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.h +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.h @@ -45,7 +45,8 @@ @param discoveryRequestSentHandler Handler to call after the Commissioner discovery request has been sent */ - (void)discoverCommissioners:(dispatch_queue_t _Nonnull)clientQueue - discoveryRequestSentHandler:(nullable void (^)(bool))discoveryRequestSentHandler; + discoveryRequestSentHandler:(nullable void (^)(bool))discoveryRequestSentHandler + discoveredCommissionerHandler:(nullable void (^)(DiscoveredNodeData * _Nonnull))discoveredCommissionerHandler; /*! @brief Retrieve a discovered commissioner TV diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm index 9d37390b084023..3b9204cdaf5436 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm @@ -19,6 +19,7 @@ #import "CastingServer.h" #import "CommissionableDataProviderImpl.hpp" +#import "CommissionerDiscoveryDelegateImpl.h" #import "ConversionUtils.hpp" #import "DeviceAttestationCredentialsProviderImpl.hpp" #import "MatterCallbacks.h" @@ -44,6 +45,8 @@ @interface CastingServerBridge () @property chip::CommonCaseDeviceServerInitParams * serverInitParams; +@property CommissionerDiscoveryDelegateImpl * commissionerDiscoveryDelegate; + @property TargetVideoPlayerInfo * previouslyConnectedVideoPlayer; // queue used to serialize all work performed by the CastingServerBridge @@ -98,6 +101,8 @@ - (instancetype)init return nil; } + _commissionerDiscoveryDelegate = new CommissionerDiscoveryDelegateImpl(); + _commandResponseCallbacks = [NSMutableDictionary dictionary]; _subscriptionEstablishedCallbacks = [NSMutableDictionary dictionary]; _subscriptionReadSuccessCallbacks = [NSMutableDictionary dictionary]; @@ -268,12 +273,19 @@ - (MatterError *)initializeApp:(AppParameters * _Nullable)appParameters } - (void)discoverCommissioners:(dispatch_queue_t _Nonnull)clientQueue - discoveryRequestSentHandler:(nullable void (^)(bool))discoveryRequestSentHandler + discoveryRequestSentHandler:(nullable void (^)(bool))discoveryRequestSentHandler + discoveredCommissionerHandler:(nullable void (^)(DiscoveredNodeData *))discoveredCommissionerHandler { ChipLogProgress(AppServer, "CastingServerBridge().discoverCommissioners() called"); dispatch_async(_chipWorkQueue, ^{ bool discoveryRequestStatus = true; - CHIP_ERROR err = CastingServer::GetInstance()->DiscoverCommissioners(); + + if (discoveredCommissionerHandler != nil) { + TargetVideoPlayerInfo * cachedTargetVideoPlayerInfos = CastingServer::GetInstance()->ReadCachedTargetVideoPlayerInfos(); + self->_commissionerDiscoveryDelegate->SetUp(clientQueue, discoveredCommissionerHandler, cachedTargetVideoPlayerInfos); + } + CHIP_ERROR err = CastingServer::GetInstance()->DiscoverCommissioners( + discoveredCommissionerHandler != nil ? self->_commissionerDiscoveryDelegate : nullptr); if (err != CHIP_NO_ERROR) { ChipLogError(AppServer, "CastingServerBridge().discoverCommissioners() failed: %" CHIP_ERROR_FORMAT, err.Format()); discoveryRequestStatus = false; diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CommissionerDiscoveryDelegateImpl.h b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CommissionerDiscoveryDelegateImpl.h new file mode 100644 index 00000000000000..56ac24526d831c --- /dev/null +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CommissionerDiscoveryDelegateImpl.h @@ -0,0 +1,65 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef CommissionerDiscoveryDelegateImpl_h +#define CommissionerDiscoveryDelegateImpl_h + +#import "ConversionUtils.hpp" +#include + +class CommissionerDiscoveryDelegateImpl : public chip::Controller::DeviceDiscoveryDelegate { +public: + void SetUp(dispatch_queue_t _Nonnull clientQueue, + void (^_Nonnull objCDiscoveredCommissionerHandler)(DiscoveredNodeData * _Nonnull), + TargetVideoPlayerInfo * cachedTargetVideoPlayerInfos) + { + mClientQueue = clientQueue; + mObjCDiscoveredCommissionerHandler = objCDiscoveredCommissionerHandler; + mCachedTargetVideoPlayerInfos = cachedTargetVideoPlayerInfos; + } + + void OnDiscoveredDevice(const chip::Dnssd::DiscoveredNodeData & nodeData) + { + ChipLogProgress(AppServer, "CommissionerDiscoveryDelegateImpl().OnDiscoveredDevice() called"); + __block const chip::Dnssd::DiscoveredNodeData cppNodeData = nodeData; + dispatch_async(mClientQueue, ^{ + DiscoveredNodeData * objCDiscoveredNodeData = [ConversionUtils convertToObjCDiscoveredNodeDataFrom:&cppNodeData]; + + // set associated connectable video player from cache, if any + if (mCachedTargetVideoPlayerInfos != nullptr) { + for (size_t i = 0; i < kMaxCachedVideoPlayers && mCachedTargetVideoPlayerInfos[i].IsInitialized(); i++) { + if (mCachedTargetVideoPlayerInfos[i].IsSameAs(&cppNodeData)) { + VideoPlayer * connectableVideoPlayer = + [ConversionUtils convertToObjCVideoPlayerFrom:&mCachedTargetVideoPlayerInfos[i]]; + [objCDiscoveredNodeData setConnectableVideoPlayer:connectableVideoPlayer]; + } + } + } + + // make the callback + mObjCDiscoveredCommissionerHandler(objCDiscoveredNodeData); + }); + } + +private: + void (^_Nonnull mObjCDiscoveredCommissionerHandler)(DiscoveredNodeData * _Nonnull); + dispatch_queue_t _Nonnull mClientQueue; + TargetVideoPlayerInfo * mCachedTargetVideoPlayerInfos; +}; + +#endif /* CommissionerDiscoveryDelegateImpl_h */ diff --git a/examples/tv-casting-app/darwin/TvCasting/TvCasting/CommissionerDiscoveryViewModel.swift b/examples/tv-casting-app/darwin/TvCasting/TvCasting/CommissionerDiscoveryViewModel.swift index 5defa202520d7a..4438759922949f 100644 --- a/examples/tv-casting-app/darwin/TvCasting/TvCasting/CommissionerDiscoveryViewModel.swift +++ b/examples/tv-casting-app/darwin/TvCasting/TvCasting/CommissionerDiscoveryViewModel.swift @@ -29,15 +29,33 @@ class CommissionerDiscoveryViewModel: ObservableObject { func discoverAndUpdate() { if let castingServerBridge = CastingServerBridge.getSharedInstance() { - castingServerBridge.discoverCommissioners(DispatchQueue.main, discoveryRequestSentHandler: { (result: Bool) -> () in - self.discoveryRequestStatus = result - }) + castingServerBridge.discoverCommissioners(DispatchQueue.main, + discoveryRequestSentHandler: { (result: Bool) -> () in + self.discoveryRequestStatus = result + }, + discoveredCommissionerHandler: { (commissioner: DiscoveredNodeData) -> () in + self.Log.info("discoveredCommissionerHandler called with \(commissioner)") + if(self.commissioners.contains(commissioner)) + { + self.Log.info("Skipping previously discovered commissioner \(commissioner.description)") + } + else if(commissioner.numIPs == 0) + { + self.Log.info("Skipping commissioner because it does not have any resolved IP addresses \(commissioner.description)") + } + else + { + self.commissioners.append(commissioner) + } + } + ) } - Task { + /* Deprecated usage + Task { try? await Task.sleep(nanoseconds: 5_000_000_000) // Wait for commissioners to respond updateCommissioners() - } + }*/ } private func updateCommissioners() { diff --git a/examples/tv-casting-app/tv-casting-common/include/CastingServer.h b/examples/tv-casting-app/tv-casting-common/include/CastingServer.h index 205978e1788cf4..f67b4d9df93456 100644 --- a/examples/tv-casting-app/tv-casting-common/include/CastingServer.h +++ b/examples/tv-casting-app/tv-casting-common/include/CastingServer.h @@ -57,7 +57,7 @@ class CastingServer CHIP_ERROR Init(AppParams * AppParams = nullptr); CHIP_ERROR InitBindingHandlers(); - CHIP_ERROR DiscoverCommissioners(); + CHIP_ERROR DiscoverCommissioners(chip::Controller::DeviceDiscoveryDelegate * deviceDiscoveryDelegate = nullptr); const chip::Dnssd::DiscoveredNodeData * GetDiscoveredCommissioner(int index, chip::Optional & outAssociatedConnectableVideoPlayer); CHIP_ERROR OpenBasicCommissioningWindow(std::function commissioningCompleteCallback, diff --git a/examples/tv-casting-app/tv-casting-common/src/CastingServer.cpp b/examples/tv-casting-app/tv-casting-common/src/CastingServer.cpp index 2c7a34e92795f5..56c6845eb5bbf7 100644 --- a/examples/tv-casting-app/tv-casting-common/src/CastingServer.cpp +++ b/examples/tv-casting-app/tv-casting-common/src/CastingServer.cpp @@ -112,7 +112,7 @@ CHIP_ERROR CastingServer::TargetVideoPlayerInfoInit(NodeId nodeId, FabricIndex f mOnConnectionFailureClientCallback); } -CHIP_ERROR CastingServer::DiscoverCommissioners() +CHIP_ERROR CastingServer::DiscoverCommissioners(DeviceDiscoveryDelegate * deviceDiscoveryDelegate) { TargetVideoPlayerInfo * connectableVideoPlayerList = ReadCachedTargetVideoPlayerInfos(); if (connectableVideoPlayerList == nullptr || !connectableVideoPlayerList[0].IsInitialized()) @@ -120,6 +120,8 @@ CHIP_ERROR CastingServer::DiscoverCommissioners() ChipLogProgress(AppServer, "No cached video players found during discovery"); } + mCommissionableNodeController.RegisterDeviceDiscoveryDelegate(deviceDiscoveryDelegate); + // Send discover commissioners request return mCommissionableNodeController.DiscoverCommissioners( Dnssd::DiscoveryFilter(Dnssd::DiscoveryFilterType::kDeviceType, static_cast(35))); diff --git a/src/controller/CHIPCommissionableNodeController.h b/src/controller/CHIPCommissionableNodeController.h index f6bf2532b53b09..a31e14309af367 100644 --- a/src/controller/CHIPCommissionableNodeController.h +++ b/src/controller/CHIPCommissionableNodeController.h @@ -39,6 +39,7 @@ class DLL_EXPORT CommissionableNodeController : public AbstractDnssdDiscoveryCon CommissionableNodeController(chip::Dnssd::Resolver * resolver = nullptr) : mResolver(resolver) {} ~CommissionableNodeController() override; + void RegisterDeviceDiscoveryDelegate(DeviceDiscoveryDelegate * delegate) { mDeviceDiscoveryDelegate = delegate; } CHIP_ERROR DiscoverCommissioners(Dnssd::DiscoveryFilter discoveryFilter = Dnssd::DiscoveryFilter()); /** From a69991333afdaebb1b52219926bf1f38dc71edba Mon Sep 17 00:00:00 2001 From: Yufeng Wang Date: Wed, 8 Feb 2023 21:16:40 -0800 Subject: [PATCH 13/16] [chip-tool] Add pairing already-discovered command (#24917) * [chip-tool] Add pairing already-discovered command * Address review comments * Use PairingNetworkType::None instead of PairingNetworkType::Network --- examples/chip-tool/commands/pairing/Commands.h | 9 +++++++++ examples/chip-tool/commands/pairing/PairingCommand.cpp | 3 +++ examples/chip-tool/commands/pairing/PairingCommand.h | 8 ++++++++ 3 files changed, 20 insertions(+) diff --git a/examples/chip-tool/commands/pairing/Commands.h b/examples/chip-tool/commands/pairing/Commands.h index 25ddf5dd5a2593..4ac57177bf806f 100644 --- a/examples/chip-tool/commands/pairing/Commands.h +++ b/examples/chip-tool/commands/pairing/Commands.h @@ -173,6 +173,14 @@ class PairSoftAP : public PairingCommand {} }; +class PairAlreadyDiscovered : public PairingCommand +{ +public: + PairAlreadyDiscovered(CredentialIssuerCommands * credsIssuerConfig) : + PairingCommand("already-discovered", PairingMode::AlreadyDiscovered, PairingNetworkType::None, credsIssuerConfig) + {} +}; + class StartUdcServerCommand : public CHIPCommand { public: @@ -199,6 +207,7 @@ void registerCommandsPairing(Commands & commands, CredentialIssuerCommands * cre make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), + make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), make_unique(credsIssuerConfig), diff --git a/examples/chip-tool/commands/pairing/PairingCommand.cpp b/examples/chip-tool/commands/pairing/PairingCommand.cpp index 1c64a872371c26..c0cefcd3420af3 100644 --- a/examples/chip-tool/commands/pairing/PairingCommand.cpp +++ b/examples/chip-tool/commands/pairing/PairingCommand.cpp @@ -75,6 +75,9 @@ CHIP_ERROR PairingCommand::RunInternal(NodeId remoteId) case PairingMode::SoftAP: err = Pair(remoteId, PeerAddress::UDP(mRemoteAddr.address, mRemotePort, mRemoteAddr.interfaceId)); break; + case PairingMode::AlreadyDiscovered: + err = Pair(remoteId, PeerAddress::UDP(mRemoteAddr.address, mRemotePort, mRemoteAddr.interfaceId)); + break; } return err; diff --git a/examples/chip-tool/commands/pairing/PairingCommand.h b/examples/chip-tool/commands/pairing/PairingCommand.h index 0f8dbf4ad5fa71..516d5f68b56110 100644 --- a/examples/chip-tool/commands/pairing/PairingCommand.h +++ b/examples/chip-tool/commands/pairing/PairingCommand.h @@ -34,6 +34,7 @@ enum class PairingMode CodePaseOnly, Ble, SoftAP, + AlreadyDiscovered, OnNetwork, }; @@ -106,6 +107,13 @@ class PairingCommand : public CHIPCommand, AddArgument("device-remote-port", 0, UINT16_MAX, &mRemotePort); AddArgument("pase-only", 0, 1, &mPaseOnly); break; + case PairingMode::AlreadyDiscovered: + AddArgument("skip-commissioning-complete", 0, 1, &mSkipCommissioningComplete); + AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode); + AddArgument("device-remote-ip", &mRemoteAddr); + AddArgument("device-remote-port", 0, UINT16_MAX, &mRemotePort); + AddArgument("pase-only", 0, 1, &mPaseOnly); + break; } switch (filterType) From cc0f0d86b036208f72418ee04ad513d0da4a3a7b Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Thu, 9 Feb 2023 07:28:59 +0100 Subject: [PATCH 14/16] Fix some building issues with src/darwin/Framework (#24922) --- src/darwin/Framework/chip_xcode_build_connector.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/darwin/Framework/chip_xcode_build_connector.sh b/src/darwin/Framework/chip_xcode_build_connector.sh index 5d8459b835681b..3843effbc4b52c 100755 --- a/src/darwin/Framework/chip_xcode_build_connector.sh +++ b/src/darwin/Framework/chip_xcode_build_connector.sh @@ -81,7 +81,10 @@ for arch in "${archs[@]}"; do done [[ $ENABLE_BITCODE == YES ]] && { - target_cflags+=',"-flto"' + if [ -n "$target_cflags" ]; then + target_cflags+=',' + fi + target_cflags+='"-flto"' } declare -a args=( From 19f7965253607e0978be1b7db664f967080f7062 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Thu, 9 Feb 2023 11:20:11 +0100 Subject: [PATCH 15/16] Remove AttributeWritePermission from types-silabs.xml and makes it a not generated enum (#24926) --- src/app/common/templates/weak-enum-list.yaml | 1 - src/app/util/attribute-metadata.h | 11 +++++++++++ src/app/util/attribute-table.cpp | 8 ++++---- src/app/util/generic-callback-stubs.cpp | 2 +- .../zcl/data-model/silabs/types-silabs.xml | 9 --------- .../app-common/app-common/zap-generated/enums.h | 12 ------------ 6 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/app/common/templates/weak-enum-list.yaml b/src/app/common/templates/weak-enum-list.yaml index 515e30bde00831..06501dff5f4f0c 100644 --- a/src/app/common/templates/weak-enum-list.yaml +++ b/src/app/common/templates/weak-enum-list.yaml @@ -1,6 +1,5 @@ # Allow-list of enums that we generate as enums, not enum classes. The goal is # to drive this down to 0. -- AttributeWritePermission - BarrierControlBarrierPosition - BarrierControlMovingState - ColorControlOptions diff --git a/src/app/util/attribute-metadata.h b/src/app/util/attribute-metadata.h index 0f9c9b26258758..f957e51c0ad14a 100644 --- a/src/app/util/attribute-metadata.h +++ b/src/app/util/attribute-metadata.h @@ -105,6 +105,17 @@ union EmberAfDefaultOrMinMaxAttributeValue const EmberAfAttributeMinMaxValue * ptrToMinMaxValue; }; +enum class EmberAfAttributeWritePermission +{ + DenyWrite = 0, + AllowWriteNormal = 1, + AllowWriteOfReadOnly = 2, + UnsupportedAttribute = 0x86, // Protocols::InteractionModel::Status::UnsupportedAttribute + InvalidValue = 0x87, // Protocols::InteractionModel::Status::ConstraintError + ReadOnly = 0x88, // Protocols::InteractionModel::Status::UnsupportedWrite + InvalidDataType = 0x8d, // Protocols::InteractionModel::Status::InvalidDataType +}; + // Attribute masks modify how attributes are used by the framework // // Attribute that has this mask is NOT read-only diff --git a/src/app/util/attribute-table.cpp b/src/app/util/attribute-table.cpp index 6e4106ead2d02d..8cbb47e5b70d77 100644 --- a/src/app/util/attribute-table.cpp +++ b/src/app/util/attribute-table.cpp @@ -48,12 +48,12 @@ EmberAfStatus emberAfWriteAttributeExternal(EndpointId endpoint, ClusterId clust emberAfAllowNetworkWriteAttributeCallback(endpoint, cluster, attributeID, dataPtr, dataType); switch (extWritePermission) { - case EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_DENY_WRITE: + case EmberAfAttributeWritePermission::DenyWrite: return EMBER_ZCL_STATUS_FAILURE; - case EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_NORMAL: - case EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_OF_READ_ONLY: + case EmberAfAttributeWritePermission::AllowWriteNormal: + case EmberAfAttributeWritePermission::AllowWriteOfReadOnly: return emAfWriteAttribute(endpoint, cluster, attributeID, dataPtr, dataType, - (extWritePermission == EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_OF_READ_ONLY), false); + (extWritePermission == EmberAfAttributeWritePermission::AllowWriteOfReadOnly), false); default: return (EmberAfStatus) extWritePermission; } diff --git a/src/app/util/generic-callback-stubs.cpp b/src/app/util/generic-callback-stubs.cpp index ba8ee45b766ed5..c9c332b71fc1bd 100644 --- a/src/app/util/generic-callback-stubs.cpp +++ b/src/app/util/generic-callback-stubs.cpp @@ -28,7 +28,7 @@ EmberAfAttributeWritePermission __attribute__((weak)) emberAfAllowNetworkWriteAttributeCallback(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId, uint8_t * value, uint8_t type) { - return EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_NORMAL; // Default + return EmberAfAttributeWritePermission::AllowWriteNormal; // Default } bool __attribute__((weak)) emberAfAttributeReadAccessCallback(EndpointId endpoint, ClusterId clusterId, AttributeId attributeId) diff --git a/src/app/zap-templates/zcl/data-model/silabs/types-silabs.xml b/src/app/zap-templates/zcl/data-model/silabs/types-silabs.xml index 2ba27133278bcd..7b3cdee16e6ed9 100644 --- a/src/app/zap-templates/zcl/data-model/silabs/types-silabs.xml +++ b/src/app/zap-templates/zcl/data-model/silabs/types-silabs.xml @@ -23,15 +23,6 @@ limitations under the License. - - - - - - - - - diff --git a/zzz_generated/app-common/app-common/zap-generated/enums.h b/zzz_generated/app-common/app-common/zap-generated/enums.h index 2e20556e1826d9..1492f34440ce89 100644 --- a/zzz_generated/app-common/app-common/zap-generated/enums.h +++ b/zzz_generated/app-common/app-common/zap-generated/enums.h @@ -24,18 +24,6 @@ // ZCL enums -// Enum for AttributeWritePermission -enum EmberAfAttributeWritePermission : uint8_t -{ - EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_DENY_WRITE = 0, - EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_NORMAL = 1, - EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_OF_READ_ONLY = 2, - EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_UNSUPPORTED_ATTRIBUTE = 134, - EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_INVALID_VALUE = 135, - EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_READ_ONLY = 136, - EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_INVALID_DATA_TYPE = 141, -}; - // Enum for BarrierControlBarrierPosition enum EmberAfBarrierControlBarrierPosition : uint8_t { From a55b245449e0bdd04337acf3aac79b630f5bd07f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Kr=C3=B3lik?= <66667989+Damian-Nordic@users.noreply.github.com> Date: Thu, 9 Feb 2023 12:54:40 +0100 Subject: [PATCH 16/16] [Zephyr] Fix General Diagnostics Hardware Address (#24941) 15.4 drivers in Zephyr set EUI-64 as the link-layer address of the corresponding interface. However, Hardware Address field in the General Diagnostics cluster is supposed to return Extended Address for Thread interfaces according to the specification. Make sure the diagnostic data provider returns the extended address for the concerned field. Signed-off-by: Damian Krolik --- .../Zephyr/DiagnosticDataProviderImpl.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/platform/Zephyr/DiagnosticDataProviderImpl.cpp b/src/platform/Zephyr/DiagnosticDataProviderImpl.cpp index 9398359f1cb021..a735d3e0162b79 100644 --- a/src/platform/Zephyr/DiagnosticDataProviderImpl.cpp +++ b/src/platform/Zephyr/DiagnosticDataProviderImpl.cpp @@ -282,8 +282,23 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetNetworkInterfaces(NetworkInterface ** ifp->offPremiseServicesReachableIPv4.SetNull(); ifp->offPremiseServicesReachableIPv6.SetNull(); + CHIP_ERROR error; uint8_t addressSize; - if (interfaceIterator.GetHardwareAddress(ifp->MacAddress, addressSize, sizeof(ifp->MacAddress)) != CHIP_NO_ERROR) + +#if CHIP_DEVICE_CONFIG_ENABLE_THREAD + if (interfaceType == Inet::InterfaceType::Thread) + { + static_assert(OT_EXT_ADDRESS_SIZE <= sizeof(ifp->MacAddress), "Unexpected extended address size"); + error = ThreadStackMgr().GetPrimary802154MACAddress(ifp->MacAddress); + addressSize = OT_EXT_ADDRESS_SIZE; + } + else +#endif + { + error = interfaceIterator.GetHardwareAddress(ifp->MacAddress, addressSize, sizeof(ifp->MacAddress)); + } + + if (error != CHIP_NO_ERROR) { ChipLogError(DeviceLayer, "Failed to get network hardware address"); }