From c9d21481eafc861969f47416e133d8c977ed54a7 Mon Sep 17 00:00:00 2001 From: Yufeng Wang Date: Thu, 18 Aug 2022 15:51:42 -0700 Subject: [PATCH 01/44] Add FailRandomlyAtFault command to Fault Injection cluster (#22008) * Add FailRandomlyAtFault command to Fault Injection cluster * Run codegen * Address review comments --- .../all-clusters-app.matter | 7 ++ .../all-clusters-common/all-clusters-app.zap | 8 ++ .../fault-injection-server.cpp | 82 ++++++++++--- .../chip/fault-injection-cluster.xml | 7 ++ .../python/chip/clusters/Objects.py | 19 +++ .../CHIP/zap-generated/MTRBaseClusters.h | 2 + .../CHIP/zap-generated/MTRBaseClusters.mm | 30 +++++ .../CHIP/zap-generated/MTRClusterConstants.h | 1 + .../CHIP/zap-generated/MTRClusters.h | 4 + .../CHIP/zap-generated/MTRClusters.mm | 35 ++++++ .../zap-generated/MTRCommandPayloadsObjc.h | 26 +++++ .../zap-generated/MTRCommandPayloadsObjc.mm | 35 ++++++ .../zap-generated/IMClusterCommandHandler.cpp | 9 ++ .../all-clusters-app/zap-generated/access.h | 3 + .../zap-generated/endpoint_config.h | 109 +++++++++--------- .../app-common/zap-generated/callback.h | 6 + .../zap-generated/cluster-objects.cpp | 45 ++++++++ .../zap-generated/cluster-objects.h | 43 +++++++ .../app-common/zap-generated/command-id.h | 1 + .../app-common/zap-generated/ids/Commands.h | 4 + .../zap-generated/cluster/Commands.h | 39 ++++++- .../zap-generated/cluster/Commands.h | 52 +++++++++ 22 files changed, 498 insertions(+), 69 deletions(-) diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index ba13b42667e261..18d7c48c099ad3 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -3850,7 +3850,14 @@ server cluster FaultInjection = 4294048774 { BOOLEAN takeMutex = 4; } + request struct FailRandomlyAtFaultRequest { + FaultType type = 0; + INT32U id = 1; + INT8U percentage = 2; + } + command access(invoke: manage) FailAtFault(FailAtFaultRequest): DefaultSuccess = 0; + command access(invoke: manage) FailRandomlyAtFault(FailRandomlyAtFaultRequest): DefaultSuccess = 1; } endpoint 0 { diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index baefdc4cf4a07c..a77c6e149bdbb6 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -8461,6 +8461,14 @@ "source": "client", "incoming": 1, "outgoing": 1 + }, + { + "name": "FailRandomlyAtFault", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 } ], "attributes": [ diff --git a/src/app/clusters/fault-injection-server/fault-injection-server.cpp b/src/app/clusters/fault-injection-server/fault-injection-server.cpp index 83e1e678f8e8e2..925640c8ce8d00 100644 --- a/src/app/clusters/fault-injection-server/fault-injection-server.cpp +++ b/src/app/clusters/fault-injection-server/fault-injection-server.cpp @@ -36,21 +36,14 @@ using namespace chip::app; using namespace chip::app::Clusters::FaultInjection; using chip::Protocols::InteractionModel::Status; -bool emberAfFaultInjectionClusterFailAtFaultCallback(CommandHandler * commandObj, const ConcreteCommandPath & commandPath, - const Commands::FailAtFault::DecodableType & commandData) -{ - if (commandPath.mClusterId != Clusters::FaultInjection::Id) - { - // We shouldn't have been called at all. - commandObj->AddStatus(commandPath, Status::UnsupportedCluster); - return true; - } +namespace { #if CHIP_WITH_NLFAULTINJECTION - Status returnStatus = Status::Success; +nl::FaultInjection::Manager * GetFaultInjectionManager(FaultType type) +{ nl::FaultInjection::Manager * faultInjectionMgr = nullptr; - switch (commandData.type) + switch (type) { case FaultType::kSystemFault: faultInjectionMgr = &chip::System::FaultInjection::GetManager(); @@ -62,11 +55,29 @@ bool emberAfFaultInjectionClusterFailAtFaultCallback(CommandHandler * commandObj faultInjectionMgr = &chip::FaultInjection::GetManager(); break; default: - ChipLogError(Zcl, "FaultInjection: Unsupported Fault type received"); - returnStatus = Status::InvalidCommand; break; } + return faultInjectionMgr; +} +#endif + +} // anonymous namespace + +bool emberAfFaultInjectionClusterFailAtFaultCallback(CommandHandler * commandObj, const ConcreteCommandPath & commandPath, + const Commands::FailAtFault::DecodableType & commandData) +{ + if (commandPath.mClusterId != Clusters::FaultInjection::Id) + { + // We shouldn't have been called at all. + commandObj->AddStatus(commandPath, Status::UnsupportedCluster); + return true; + } + +#if CHIP_WITH_NLFAULTINJECTION + Status returnStatus = Status::Success; + nl::FaultInjection::Manager * faultInjectionMgr = GetFaultInjectionManager(commandData.type); + if (faultInjectionMgr != nullptr) { ChipLogProgress(Zcl, "FaultInjection: Configure a fault of type: %d and Id: %d to be triggered deterministically", @@ -93,4 +104,49 @@ bool emberAfFaultInjectionClusterFailAtFaultCallback(CommandHandler * commandObj return true; } +bool emberAfFaultInjectionClusterFailRandomlyAtFaultCallback(CommandHandler * commandObj, const ConcreteCommandPath & commandPath, + const Commands::FailRandomlyAtFault::DecodableType & commandData) +{ + if (commandPath.mClusterId != Clusters::FaultInjection::Id) + { + // We shouldn't have been called at all. + commandObj->AddStatus(commandPath, Status::UnsupportedCluster); + return true; + } + + if (commandData.percentage > 100) + { + commandObj->AddStatus(commandPath, Status::InvalidCommand); + return true; + } + +#if CHIP_WITH_NLFAULTINJECTION + Status returnStatus = Status::Success; + nl::FaultInjection::Manager * faultInjectionMgr = GetFaultInjectionManager(commandData.type); + + if (faultInjectionMgr != nullptr) + { + ChipLogProgress(Zcl, "FaultInjection: Configure a fault of type: %d and Id: %d to be triggered randomly", + static_cast(commandData.type), commandData.id); + int32_t err = faultInjectionMgr->FailRandomlyAtFault(commandData.id, commandData.percentage); + + if (err != 0) + { + ChipLogError(Zcl, "FaultInjection: Pass invalid inputs to FailAtFault"); + returnStatus = Status::InvalidCommand; + } + } + else + { + ChipLogError(Zcl, "FaultInjection: Failed to get Fault Injection manager"); + returnStatus = Status::Failure; + } +#else + Status returnStatus = Status::UnsupportedCommand; +#endif // CHIP_WITH_NLFAULTINJECTION + + commandObj->AddStatus(commandPath, returnStatus); + return true; +} + void MatterFaultInjectionPluginServerInitCallback() {} diff --git a/src/app/zap-templates/zcl/data-model/chip/fault-injection-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/fault-injection-cluster.xml index f8c764d8e139c6..e4e92aee68ea0c 100644 --- a/src/app/zap-templates/zcl/data-model/chip/fault-injection-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/fault-injection-cluster.xml @@ -39,5 +39,12 @@ limitations under the License. + + Configure a fault to be triggered randomly, with a given probability defined as a percentage + + + + + diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index 4397258fed9dcb..d8032d8f508063 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -29040,6 +29040,25 @@ def descriptor(cls) -> ClusterObjectDescriptor: numCallsToFail: 'uint' = 0 takeMutex: 'bool' = False + @dataclass + class FailRandomlyAtFault(ClusterCommand): + cluster_id: typing.ClassVar[int] = 0xFFF1FC06 + command_id: typing.ClassVar[int] = 0x0001 + is_client: typing.ClassVar[bool] = True + + @ChipUtility.classproperty + def descriptor(cls) -> ClusterObjectDescriptor: + return ClusterObjectDescriptor( + Fields = [ + ClusterObjectFieldDescriptor(Label="type", Tag=0, Type=FaultInjection.Enums.FaultType), + ClusterObjectFieldDescriptor(Label="id", Tag=1, Type=uint), + ClusterObjectFieldDescriptor(Label="percentage", Tag=2, Type=uint), + ]) + + type: 'FaultInjection.Enums.FaultType' = 0 + id: 'uint' = 0 + percentage: 'uint' = 0 + class Attributes: @dataclass diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h index 43e1ddc4bf0516..201b0844d66305 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h @@ -21998,6 +21998,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)failAtFaultWithParams:(MTRFaultInjectionClusterFailAtFaultParams *)params completionHandler:(StatusCompletion)completionHandler; +- (void)failRandomlyAtFaultWithParams:(MTRFaultInjectionClusterFailRandomlyAtFaultParams *)params + completionHandler:(StatusCompletion)completionHandler; - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm index e043a252d51acc..1d1c90e8e4359c 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm @@ -93615,6 +93615,36 @@ new MTRCommandSuccessCallbackBridge( }); } +- (void)failRandomlyAtFaultWithParams:(MTRFaultInjectionClusterFailRandomlyAtFaultParams *)params + completionHandler:(StatusCompletion)completionHandler +{ + // Make a copy of params before we go async. + params = [params copy]; + new MTRCommandSuccessCallbackBridge( + self.callbackQueue, self.device, + ^(id _Nullable value, NSError * _Nullable error) { + completionHandler(error); + }, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + chip::Optional timedInvokeTimeoutMs; + ListFreer listFreer; + FaultInjection::Commands::FailRandomlyAtFault::Type request; + if (params != nil) { + if (params.timedInvokeTimeoutMs != nil) { + timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue); + } + } + request.type = static_cast>(params.type.unsignedCharValue); + request.id = params.id.unsignedIntValue; + request.percentage = params.percentage.unsignedCharValue; + + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + chip::Controller::FaultInjectionCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + }); +} + - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler { diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h index dbcc34b4f7e45f..869f034e3b2b92 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h @@ -1702,6 +1702,7 @@ typedef NS_ENUM(uint32_t, MTRClusterCommandIDType) { // Cluster FaultInjection commands MTRClusterFaultInjectionCommandFailAtFaultID = 0x00000000, + MTRClusterFaultInjectionCommandFailRandomlyAtFaultID = 0x00000001, }; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h index 38664c17e71687..bd815031aa0bc2 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h @@ -5297,6 +5297,10 @@ NS_ASSUME_NONNULL_BEGIN expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completionHandler:(StatusCompletion)completionHandler; +- (void)failRandomlyAtFaultWithParams:(MTRFaultInjectionClusterFailRandomlyAtFaultParams *)params + expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries + expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs + completionHandler:(StatusCompletion)completionHandler; - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params; diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm index 26f39666023990..32d77c731b7dc3 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm @@ -22088,6 +22088,41 @@ new MTRCommandSuccessCallbackBridge( [self.device setExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs]; } +- (void)failRandomlyAtFaultWithParams:(MTRFaultInjectionClusterFailRandomlyAtFaultParams *)params + expectedValues:(NSArray *> *)expectedValues + expectedValueInterval:(NSNumber *)expectedValueIntervalMs + completionHandler:(StatusCompletion)completionHandler +{ + // Make a copy of params before we go async. + params = [params copy]; + MTRBaseDevice * baseDevice = [[MTRBaseDevice alloc] initWithNodeID:self.device.nodeID controller:self.device.deviceController]; + new MTRCommandSuccessCallbackBridge( + self.callbackQueue, baseDevice, + ^(id _Nullable value, NSError * _Nullable error) { + completionHandler(error); + }, + ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { + chip::Optional timedInvokeTimeoutMs; + ListFreer listFreer; + FaultInjection::Commands::FailRandomlyAtFault::Type request; + if (params != nil) { + if (params.timedInvokeTimeoutMs != nil) { + timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue); + } + } + request.type = static_cast>(params.type.unsignedCharValue); + request.id = params.id.unsignedIntValue; + request.percentage = params.percentage.unsignedCharValue; + + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + chip::Controller::FaultInjectionCluster cppCluster(exchangeManager, session, self->_endpoint); + return cppCluster.InvokeCommand(request, successFn->mContext, successFn->mCall, failureFn->mCall, timedInvokeTimeoutMs); + }); + + [self.device setExpectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs]; +} + - (NSDictionary *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params { return [self.device readAttributeWithEndpointID:@(_endpoint) diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h index bfdc4a5aecdfb3..bdd49c7c83214c 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h @@ -6075,6 +6075,32 @@ NS_ASSUME_NONNULL_BEGIN */ @property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs; +- (instancetype)init; +- (id)copyWithZone:(nullable NSZone *)zone; +@end +@interface MTRFaultInjectionClusterFailRandomlyAtFaultParams : NSObject + +@property (nonatomic, copy) NSNumber * _Nonnull type; + +@property (nonatomic, copy) NSNumber * _Nonnull id; + +@property (nonatomic, copy) NSNumber * _Nonnull percentage; +/** + * Controls whether the command is a timed command (using Timed Invoke). + * + * If nil (the default value), a regular invoke is done for commands that do + * not require a timed invoke and a timed invoke with some default timed request + * timeout is done for commands that require a timed invoke. + * + * If not nil, a timed invoke is done, with the provided value used as the timed + * request timeout. The value should be chosen small enough to provide the + * desired security properties but large enough that it will allow a round-trip + * from the sever to the client (for the status response and actual invoke + * request) within the timeout window. + * + */ +@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs; + - (instancetype)init; - (id)copyWithZone:(nullable NSZone *)zone; @end diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm index 004f2f29070299..9ea1ae5cf02d39 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm @@ -8157,6 +8157,41 @@ - (NSString *)description return descriptionString; } +@end +@implementation MTRFaultInjectionClusterFailRandomlyAtFaultParams +- (instancetype)init +{ + if (self = [super init]) { + + _type = @(0); + + _id = @(0); + + _percentage = @(0); + _timedInvokeTimeoutMs = nil; + } + return self; +} + +- (id)copyWithZone:(nullable NSZone *)zone; +{ + auto other = [[MTRFaultInjectionClusterFailRandomlyAtFaultParams alloc] init]; + + other.type = self.type; + other.id = self.id; + other.percentage = self.percentage; + other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs; + + return other; +} + +- (NSString *)description +{ + NSString * descriptionString = [NSString + stringWithFormat:@"<%@: type:%@; id:%@; percentage:%@; >", NSStringFromClass([self class]), _type, _id, _percentage]; + return descriptionString; +} + @end NS_ASSUME_NONNULL_END diff --git a/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp b/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp index 411c19ff34c510..5d65d8f8775339 100644 --- a/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp +++ b/zzz_generated/all-clusters-app/zap-generated/IMClusterCommandHandler.cpp @@ -591,6 +591,15 @@ void DispatchServerCommand(CommandHandler * apCommandObj, const ConcreteCommandP } break; } + case Commands::FailRandomlyAtFault::Id: { + Commands::FailRandomlyAtFault::DecodableType commandData; + TLVError = DataModel::Decode(aDataTlv, commandData); + if (TLVError == CHIP_NO_ERROR) + { + wasHandled = emberAfFaultInjectionClusterFailRandomlyAtFaultCallback(apCommandObj, aCommandPath, commandData); + } + break; + } default: { // Unrecognized command ID, error status will apply. apCommandObj->AddStatus(aCommandPath, Protocols::InteractionModel::Status::UnsupportedCommand); diff --git a/zzz_generated/all-clusters-app/zap-generated/access.h b/zzz_generated/all-clusters-app/zap-generated/access.h index 5c5f1df7633748..5c6aba484890ac 100644 --- a/zzz_generated/all-clusters-app/zap-generated/access.h +++ b/zzz_generated/all-clusters-app/zap-generated/access.h @@ -431,6 +431,7 @@ 257, /* Cluster: Door Lock, Command: GetCredentialStatus, Privilege: administer */ \ 257, /* Cluster: Door Lock, Command: ClearCredential, Privilege: administer */ \ 4294048774, /* Cluster: Fault Injection, Command: FailAtFault, Privilege: manage */ \ + 4294048774, /* Cluster: Fault Injection, Command: FailRandomlyAtFault, Privilege: manage */ \ } // Parallel array data (cluster, *command*, privilege) for invoke command @@ -482,6 +483,7 @@ 36, /* Cluster: Door Lock, Command: GetCredentialStatus, Privilege: administer */ \ 38, /* Cluster: Door Lock, Command: ClearCredential, Privilege: administer */ \ 0, /* Cluster: Fault Injection, Command: FailAtFault, Privilege: manage */ \ + 1, /* Cluster: Fault Injection, Command: FailRandomlyAtFault, Privilege: manage */ \ } // Parallel array data (cluster, command, *privilege*) for invoke command @@ -533,6 +535,7 @@ kMatterAccessPrivilegeAdminister, /* Cluster: Door Lock, Command: GetCredentialStatus, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Door Lock, Command: ClearCredential, Privilege: administer */ \ kMatterAccessPrivilegeManage, /* Cluster: Fault Injection, Command: FailAtFault, Privilege: manage */ \ + kMatterAccessPrivilegeManage, /* Cluster: Fault Injection, Command: FailRandomlyAtFault, Privilege: manage */ \ } //////////////////////////////////////////////////////////////////////////////// diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h index 2ec296db48ed69..64446dd4aec170 100644 --- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h @@ -1675,14 +1675,15 @@ /* Endpoint: 0, Cluster: Fault Injection (server) */\ /* AcceptedCommandList (index=76) */ \ 0x00000000 /* FailAtFault */, \ + 0x00000001 /* FailRandomlyAtFault */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Identify (server) */\ - /* AcceptedCommandList (index=78) */ \ + /* AcceptedCommandList (index=79) */ \ 0x00000000 /* Identify */, \ 0x00000040 /* TriggerEffect */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Groups (server) */\ - /* AcceptedCommandList (index=81) */ \ + /* AcceptedCommandList (index=82) */ \ 0x00000000 /* AddGroup */, \ 0x00000001 /* ViewGroup */, \ 0x00000002 /* GetGroupMembership */, \ @@ -1690,14 +1691,14 @@ 0x00000004 /* RemoveAllGroups */, \ 0x00000005 /* AddGroupIfIdentifying */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=88)*/ \ + /* GeneratedCommandList (index=89)*/ \ 0x00000000 /* AddGroupResponse */, \ 0x00000001 /* ViewGroupResponse */, \ 0x00000002 /* GetGroupMembershipResponse */, \ 0x00000003 /* RemoveGroupResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Scenes (server) */\ - /* AcceptedCommandList (index=93) */ \ + /* AcceptedCommandList (index=94) */ \ 0x00000000 /* AddScene */, \ 0x00000001 /* ViewScene */, \ 0x00000002 /* RemoveScene */, \ @@ -1706,7 +1707,7 @@ 0x00000005 /* RecallScene */, \ 0x00000006 /* GetSceneMembership */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=101)*/ \ + /* GeneratedCommandList (index=102)*/ \ 0x00000000 /* AddSceneResponse */, \ 0x00000001 /* ViewSceneResponse */, \ 0x00000002 /* RemoveSceneResponse */, \ @@ -1715,7 +1716,7 @@ 0x00000006 /* GetSceneMembershipResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: On/Off (server) */\ - /* AcceptedCommandList (index=108) */ \ + /* AcceptedCommandList (index=109) */ \ 0x00000000 /* Off */, \ 0x00000001 /* On */, \ 0x00000002 /* Toggle */, \ @@ -1724,7 +1725,7 @@ 0x00000042 /* OnWithTimedOff */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Level Control (server) */\ - /* AcceptedCommandList (index=115) */ \ + /* AcceptedCommandList (index=116) */ \ 0x00000000 /* MoveToLevel */, \ 0x00000001 /* Move */, \ 0x00000002 /* Step */, \ @@ -1735,11 +1736,11 @@ 0x00000007 /* StopWithOnOff */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Mode Select (server) */\ - /* AcceptedCommandList (index=124) */ \ + /* AcceptedCommandList (index=125) */ \ 0x00000000 /* ChangeToMode */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Door Lock (server) */\ - /* AcceptedCommandList (index=126) */ \ + /* AcceptedCommandList (index=127) */ \ 0x00000000 /* LockDoor */, \ 0x00000001 /* UnlockDoor */, \ 0x00000003 /* UnlockWithTimeout */, \ @@ -1755,7 +1756,7 @@ 0x00000024 /* GetCredentialStatus */, \ 0x00000026 /* ClearCredential */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=141)*/ \ + /* GeneratedCommandList (index=142)*/ \ 0x0000000C /* GetWeekDayScheduleResponse */, \ 0x0000000F /* GetYearDayScheduleResponse */, \ 0x0000001C /* GetUserResponse */, \ @@ -1763,7 +1764,7 @@ 0x00000025 /* GetCredentialStatusResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Window Covering (server) */\ - /* AcceptedCommandList (index=147) */ \ + /* AcceptedCommandList (index=148) */ \ 0x00000000 /* UpOrOpen */, \ 0x00000001 /* DownOrClose */, \ 0x00000002 /* StopMotion */, \ @@ -1773,16 +1774,16 @@ 0x00000008 /* GoToTiltPercentage */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Barrier Control (server) */\ - /* AcceptedCommandList (index=155) */ \ + /* AcceptedCommandList (index=156) */ \ 0x00000000 /* BarrierControlGoToPercent */, \ 0x00000001 /* BarrierControlStop */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Thermostat (server) */\ - /* AcceptedCommandList (index=158) */ \ + /* AcceptedCommandList (index=159) */ \ 0x00000000 /* SetpointRaiseLower */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Color Control (server) */\ - /* AcceptedCommandList (index=160) */ \ + /* AcceptedCommandList (index=161) */ \ 0x00000000 /* MoveToHue */, \ 0x00000001 /* MoveHue */, \ 0x00000002 /* StepHue */, \ @@ -1804,32 +1805,32 @@ 0x0000004C /* StepColorTemperature */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Target Navigator (server) */\ - /* AcceptedCommandList (index=180) */ \ + /* AcceptedCommandList (index=181) */ \ 0x00000000 /* NavigateTarget */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=182)*/ \ + /* GeneratedCommandList (index=183)*/ \ 0x00000001 /* NavigateTargetResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Media Input (server) */\ - /* AcceptedCommandList (index=184) */ \ + /* AcceptedCommandList (index=185) */ \ 0x00000000 /* SelectInput */, \ 0x00000001 /* ShowInputStatus */, \ 0x00000002 /* HideInputStatus */, \ 0x00000003 /* RenameInput */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Low Power (server) */\ - /* AcceptedCommandList (index=189) */ \ + /* AcceptedCommandList (index=190) */ \ 0x00000000 /* Sleep */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Keypad Input (server) */\ - /* AcceptedCommandList (index=191) */ \ + /* AcceptedCommandList (index=192) */ \ 0x00000000 /* SendKey */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=193)*/ \ + /* GeneratedCommandList (index=194)*/ \ 0x00000001 /* SendKeyResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 1, Cluster: Test Cluster (server) */\ - /* AcceptedCommandList (index=195) */ \ + /* AcceptedCommandList (index=196) */ \ 0x00000000 /* Test */, \ 0x00000001 /* TestNotHandled */, \ 0x00000002 /* TestSpecific */, \ @@ -1849,7 +1850,7 @@ 0x00000014 /* TestEmitTestEventRequest */, \ 0x00000015 /* TestEmitTestFabricScopedEventRequest */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=214)*/ \ + /* GeneratedCommandList (index=215)*/ \ 0x00000000 /* TestSpecificResponse */, \ 0x00000001 /* TestAddArgumentsResponse */, \ 0x00000004 /* TestListInt8UReverseResponse */, \ @@ -1861,7 +1862,7 @@ 0x0000000B /* TestEmitTestFabricScopedEventResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 2, Cluster: Groups (server) */\ - /* AcceptedCommandList (index=224) */ \ + /* AcceptedCommandList (index=225) */ \ 0x00000000 /* AddGroup */, \ 0x00000001 /* ViewGroup */, \ 0x00000002 /* GetGroupMembership */, \ @@ -1869,20 +1870,20 @@ 0x00000004 /* RemoveAllGroups */, \ 0x00000005 /* AddGroupIfIdentifying */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=231)*/ \ + /* GeneratedCommandList (index=232)*/ \ 0x00000000 /* AddGroupResponse */, \ 0x00000001 /* ViewGroupResponse */, \ 0x00000002 /* GetGroupMembershipResponse */, \ 0x00000003 /* RemoveGroupResponse */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 2, Cluster: On/Off (server) */\ - /* AcceptedCommandList (index=236) */ \ + /* AcceptedCommandList (index=237) */ \ 0x00000000 /* Off */, \ 0x00000001 /* On */, \ 0x00000002 /* Toggle */, \ chip::kInvalidCommandId /* end of list */, \ /* Endpoint: 65534, Cluster: Network Commissioning (server) */\ - /* AcceptedCommandList (index=240) */ \ + /* AcceptedCommandList (index=241) */ \ 0x00000000 /* ScanNetworks */, \ 0x00000002 /* AddOrUpdateWiFiNetwork */, \ 0x00000003 /* AddOrUpdateThreadNetwork */, \ @@ -1890,7 +1891,7 @@ 0x00000006 /* ConnectNetwork */, \ 0x00000008 /* ReorderNetwork */, \ chip::kInvalidCommandId /* end of list */, \ - /* GeneratedCommandList (index=247)*/ \ + /* GeneratedCommandList (index=248)*/ \ 0x00000001 /* ScanNetworksResponse */, \ 0x00000005 /* NetworkConfigResponse */, \ 0x00000007 /* ConnectNetworkResponse */, \ @@ -2220,7 +2221,7 @@ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayIdentifyServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 78 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 79 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2231,8 +2232,8 @@ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayGroupsServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 81 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 88 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 82 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 89 ) ,\ },\ { \ /* Endpoint: 1, Cluster: Scenes (server) */ \ @@ -2242,8 +2243,8 @@ .clusterSize = 12, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayScenesServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 93 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 101 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 94 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 102 ) ,\ },\ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ @@ -2253,7 +2254,7 @@ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayOnOffServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 108 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 109 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2275,7 +2276,7 @@ .clusterSize = 27, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayLevelControlServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 115 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 116 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2385,7 +2386,7 @@ .clusterSize = 45, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayModeSelectServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 124 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 125 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2396,8 +2397,8 @@ .clusterSize = 55, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayDoorLockServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 126 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 141 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 127 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 142 ) ,\ },\ { \ /* Endpoint: 1, Cluster: Window Covering (server) */ \ @@ -2407,7 +2408,7 @@ .clusterSize = 43, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayWindowCoveringServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 147 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 148 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2418,7 +2419,7 @@ .clusterSize = 11, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 155 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 156 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2440,7 +2441,7 @@ .clusterSize = 31, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ .functions = chipFuncArrayThermostatServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 158 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 159 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2473,7 +2474,7 @@ .clusterSize = 345, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayColorControlServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 160 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 161 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2572,8 +2573,8 @@ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 180 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 182 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 181 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 183 ) ,\ },\ { \ /* Endpoint: 1, Cluster: Media Playback (server) */ \ @@ -2594,7 +2595,7 @@ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 184 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 185 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2605,7 +2606,7 @@ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 189 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 190 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2616,8 +2617,8 @@ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 191 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 193 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 192 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 194 ) ,\ },\ { \ /* Endpoint: 1, Cluster: Content Launcher (server) */ \ @@ -2693,8 +2694,8 @@ .clusterSize = 2289, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 195 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 214 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 196 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 215 ) ,\ },\ { \ /* Endpoint: 2, Cluster: Groups (server) */ \ @@ -2704,8 +2705,8 @@ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayGroupsServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 224 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 231 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 225 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 232 ) ,\ },\ { \ /* Endpoint: 2, Cluster: On/Off (server) */ \ @@ -2715,7 +2716,7 @@ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayOnOffServer, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 236 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 237 ) ,\ .generatedCommandList = nullptr ,\ },\ { \ @@ -2759,8 +2760,8 @@ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ - .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 240 ) ,\ - .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 247 ) ,\ + .acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 241 ) ,\ + .generatedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 248 ) ,\ },\ } diff --git a/zzz_generated/app-common/app-common/zap-generated/callback.h b/zzz_generated/app-common/app-common/zap-generated/callback.h index 26c16148347095..8a674cd17d6c30 100644 --- a/zzz_generated/app-common/app-common/zap-generated/callback.h +++ b/zzz_generated/app-common/app-common/zap-generated/callback.h @@ -8919,6 +8919,12 @@ bool emberAfTestClusterClusterTestEmitTestFabricScopedEventRequestCallback( bool emberAfFaultInjectionClusterFailAtFaultCallback( chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, const chip::app::Clusters::FaultInjection::Commands::FailAtFault::DecodableType & commandData); +/** + * @brief Fault Injection Cluster FailRandomlyAtFault Command callback (from client) + */ +bool emberAfFaultInjectionClusterFailRandomlyAtFaultCallback( + chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, + const chip::app::Clusters::FaultInjection::Commands::FailRandomlyAtFault::DecodableType & commandData); /** @brief Add To Current App Tasks * diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp index ec0eb5147c7f97..1c0bf9098cda3e 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp @@ -20939,6 +20939,51 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) return CHIP_NO_ERROR; } } // namespace FailAtFault. +namespace FailRandomlyAtFault { +CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const +{ + TLV::TLVType outer; + ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer)); + ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kType)), type)); + ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kId)), id)); + ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kPercentage)), percentage)); + ReturnErrorOnFailure(writer.EndContainer(outer)); + return CHIP_NO_ERROR; +} + +CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + TLV::TLVType outer; + VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE); + ReturnErrorOnFailure(reader.EnterContainer(outer)); + while ((err = reader.Next()) == CHIP_NO_ERROR) + { + if (!TLV::IsContextTag(reader.GetTag())) + { + continue; + } + switch (TLV::TagNumFromTag(reader.GetTag())) + { + case to_underlying(Fields::kType): + ReturnErrorOnFailure(DataModel::Decode(reader, type)); + break; + case to_underlying(Fields::kId): + ReturnErrorOnFailure(DataModel::Decode(reader, id)); + break; + case to_underlying(Fields::kPercentage): + ReturnErrorOnFailure(DataModel::Decode(reader, percentage)); + break; + default: + break; + } + } + + VerifyOrReturnError(err == CHIP_END_OF_TLV, err); + ReturnErrorOnFailure(reader.ExitContainer(outer)); + return CHIP_NO_ERROR; +} +} // namespace FailRandomlyAtFault. } // namespace Commands namespace Attributes { diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h index 17019d9d8b12a5..5500c0d3c8ce28 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h @@ -28095,6 +28095,11 @@ struct Type; struct DecodableType; } // namespace FailAtFault +namespace FailRandomlyAtFault { +struct Type; +struct DecodableType; +} // namespace FailRandomlyAtFault + } // namespace Commands namespace Commands { @@ -28142,6 +28147,44 @@ struct DecodableType CHIP_ERROR Decode(TLV::TLVReader & reader); }; }; // namespace FailAtFault +namespace FailRandomlyAtFault { +enum class Fields +{ + kType = 0, + kId = 1, + kPercentage = 2, +}; + +struct Type +{ +public: + // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand + static constexpr CommandId GetCommandId() { return Commands::FailRandomlyAtFault::Id; } + static constexpr ClusterId GetClusterId() { return Clusters::FaultInjection::Id; } + + FaultType type = static_cast(0); + uint32_t id = static_cast(0); + uint8_t percentage = static_cast(0); + + CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const; + + using ResponseType = DataModel::NullObjectType; + + static constexpr bool MustUseTimedInvoke() { return false; } +}; + +struct DecodableType +{ +public: + static constexpr CommandId GetCommandId() { return Commands::FailRandomlyAtFault::Id; } + static constexpr ClusterId GetClusterId() { return Clusters::FaultInjection::Id; } + + FaultType type = static_cast(0); + uint32_t id = static_cast(0); + uint8_t percentage = static_cast(0); + CHIP_ERROR Decode(TLV::TLVReader & reader); +}; +}; // namespace FailRandomlyAtFault } // namespace Commands namespace Attributes { diff --git a/zzz_generated/app-common/app-common/zap-generated/command-id.h b/zzz_generated/app-common/app-common/zap-generated/command-id.h index 95b03a5e717fa4..9dea02553be7cb 100644 --- a/zzz_generated/app-common/app-common/zap-generated/command-id.h +++ b/zzz_generated/app-common/app-common/zap-generated/command-id.h @@ -355,3 +355,4 @@ // Commands for cluster: Fault Injection #define ZCL_FAIL_AT_FAULT_COMMAND_ID (0x00) +#define ZCL_FAIL_RANDOMLY_AT_FAULT_COMMAND_ID (0x01) diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h index cf911dedc35e02..41c5ed62ddb1f0 100644 --- a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h +++ b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h @@ -1240,6 +1240,10 @@ namespace FailAtFault { static constexpr CommandId Id = 0x00000000; } // namespace FailAtFault +namespace FailRandomlyAtFault { +static constexpr CommandId Id = 0x00000001; +} // namespace FailRandomlyAtFault + } // namespace Commands } // namespace FaultInjection diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index 5c25721dfc3bdd..897d45dff7d486 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -8149,6 +8149,7 @@ class TestClusterTestEmitTestFabricScopedEventRequest : public ClusterCommand |------------------------------------------------------------------------------| | Commands: | | | * FailAtFault | 0x00 | +| * FailRandomlyAtFault | 0x01 | |------------------------------------------------------------------------------| | Attributes: | | | * GeneratedCommandList | 0xFFF8 | @@ -8194,6 +8195,39 @@ class FaultInjectionFailAtFault : public ClusterCommand chip::app::Clusters::FaultInjection::Commands::FailAtFault::Type mRequest; }; +/* + * Command FailRandomlyAtFault + */ +class FaultInjectionFailRandomlyAtFault : public ClusterCommand +{ +public: + FaultInjectionFailRandomlyAtFault(CredentialIssuerCommands * credsIssuerConfig) : + ClusterCommand("fail-randomly-at-fault", credsIssuerConfig) + { + AddArgument("Type", 0, UINT8_MAX, &mRequest.type); + AddArgument("Id", 0, UINT32_MAX, &mRequest.id); + AddArgument("Percentage", 0, UINT8_MAX, &mRequest.percentage); + ClusterCommand::AddArguments(); + } + + CHIP_ERROR SendCommand(chip::DeviceProxy * device, std::vector endpointIds) override + { + ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC06) command (0x00000001) on endpoint %u", endpointIds.at(0)); + + return ClusterCommand::SendCommand(device, endpointIds.at(0), 0xFFF1FC06, 0x00000001, mRequest); + } + + CHIP_ERROR SendGroupCommand(chip::GroupId groupId, chip::FabricIndex fabricIndex) override + { + ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC06) command (0x00000001) on Group %u", groupId); + + return ClusterCommand::SendGroupCommand(groupId, fabricIndex, 0xFFF1FC06, 0x00000001, mRequest); + } + +private: + chip::app::Clusters::FaultInjection::Commands::FailRandomlyAtFault::Type mRequest; +}; + /*----------------------------------------------------------------------------*\ | Register all Clusters commands | \*----------------------------------------------------------------------------*/ @@ -13266,8 +13300,9 @@ void registerClusterFaultInjection(Commands & commands, CredentialIssuerCommands // // Commands // - make_unique(Id, credsIssuerConfig), // - make_unique(credsIssuerConfig), // + make_unique(Id, credsIssuerConfig), // + make_unique(credsIssuerConfig), // + make_unique(credsIssuerConfig), // // // Attributes // diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h index b29a4a8455674d..59a1a11c980eb2 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h @@ -93054,6 +93054,7 @@ class SubscribeAttributeTestClusterClusterRevision : public SubscribeAttribute { |------------------------------------------------------------------------------| | Commands: | | | * FailAtFault | 0x00 | +| * FailRandomlyAtFault | 0x01 | |------------------------------------------------------------------------------| | Attributes: | | | * GeneratedCommandList | 0xFFF8 | @@ -93119,6 +93120,56 @@ class FaultInjectionFailAtFault : public ClusterCommand { chip::app::Clusters::FaultInjection::Commands::FailAtFault::Type mRequest; }; +/* + * Command FailRandomlyAtFault + */ +class FaultInjectionFailRandomlyAtFault : public ClusterCommand { +public: + FaultInjectionFailRandomlyAtFault() + : ClusterCommand("fail-randomly-at-fault") + { + AddArgument("Type", 0, UINT8_MAX, &mRequest.type); + AddArgument("Id", 0, UINT32_MAX, &mRequest.id); + AddArgument("Percentage", 0, UINT8_MAX, &mRequest.percentage); + ClusterCommand::AddArguments(); + } + + CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0xFFF1FC06) command (0x00000001) on endpoint %u", endpointId); + + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + MTRBaseClusterFaultInjection * cluster = [[MTRBaseClusterFaultInjection alloc] initWithDevice:device + endpoint:endpointId + queue:callbackQueue]; + __auto_type * params = [[MTRFaultInjectionClusterFailRandomlyAtFaultParams alloc] init]; + params.timedInvokeTimeoutMs + = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil; + params.type = [NSNumber numberWithUnsignedChar:chip::to_underlying(mRequest.type)]; + params.id = [NSNumber numberWithUnsignedInt:mRequest.id]; + params.percentage = [NSNumber numberWithUnsignedChar:mRequest.percentage]; + uint16_t repeatCount = mRepeatCount.ValueOr(1); + uint16_t __block responsesNeeded = repeatCount; + while (repeatCount--) { + [cluster failRandomlyAtFaultWithParams:params + completionHandler:^(NSError * _Nullable error) { + responsesNeeded--; + if (error != nil) { + mError = error; + LogNSError("Error", error); + } + if (responsesNeeded == 0) { + SetCommandExitStatus(mError); + } + }]; + } + return CHIP_NO_ERROR; + } + +private: + chip::app::Clusters::FaultInjection::Commands::FailRandomlyAtFault::Type mRequest; +}; + /* * Attribute GeneratedCommandList */ @@ -97018,6 +97069,7 @@ void registerClusterFaultInjection(Commands & commands) commands_list clusterCommands = { make_unique(Id), // make_unique(), // + make_unique(), // make_unique(Id), // make_unique(), // make_unique(Id), // From 2a5f7fe21521014507377a8a216b9bf5e07f045c Mon Sep 17 00:00:00 2001 From: Nivi Sarkar <55898241+nivi-apple@users.noreply.github.com> Date: Thu, 18 Aug 2022 16:50:33 -0700 Subject: [PATCH 02/44] Check the onboarding payload code type in MTROnboardingPayloadParser (#22024) --- .../payload/SetupPayloadParseCommand.mm | 7 +- .../CHIP/MTROnboardingPayloadParser.h | 1 - .../CHIP/MTROnboardingPayloadParser.m | 6 +- .../CHIPTests/MTRSetupPayloadParserTests.m | 71 +------------------ 4 files changed, 5 insertions(+), 80 deletions(-) diff --git a/examples/darwin-framework-tool/commands/payload/SetupPayloadParseCommand.mm b/examples/darwin-framework-tool/commands/payload/SetupPayloadParseCommand.mm index 9cb8aba4fdde80..5b98ddf03840b6 100644 --- a/examples/darwin-framework-tool/commands/payload/SetupPayloadParseCommand.mm +++ b/examples/darwin-framework-tool/commands/payload/SetupPayloadParseCommand.mm @@ -62,12 +62,7 @@ NSError * error; MTRSetupPayload * payload; MTROnboardingPayloadType codeType; - if (IsQRCode(codeString)) { - codeType = MTROnboardingPayloadTypeQRCode; - } else { - codeType = MTROnboardingPayloadTypeManualCode; - } - payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:codeString ofType:codeType error:&error]; + payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:codeString error:&error]; if (error) { LogNSError("Error: ", error); return CHIP_ERROR_INTERNAL; diff --git a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h index cb812ddc41e67a..a2509e233bee3f 100644 --- a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h +++ b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h @@ -31,7 +31,6 @@ typedef NS_ENUM(NSUInteger, MTROnboardingPayloadType) { @interface MTROnboardingPayloadParser : NSObject + (nullable MTRSetupPayload *)setupPayloadForOnboardingPayload:(NSString *)onboardingPayload - ofType:(MTROnboardingPayloadType)type error:(NSError * __autoreleasing *)error; @end diff --git a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m index 3af4fe1a38bb9c..2a81d81b5f5539 100644 --- a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m +++ b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m @@ -23,17 +23,17 @@ @implementation MTROnboardingPayloadParser + (nullable MTRSetupPayload *)setupPayloadForOnboardingPayload:(NSString *)onboardingPayload - ofType:(MTROnboardingPayloadType)type error:(NSError * __autoreleasing *)error { MTRSetupPayload * payload; + // MTROnboardingPayloadTypeNFC is of type QR code and handled same as QR code + MTROnboardingPayloadType type + = isQRCode(onboardingPayload) ? MTROnboardingPayloadTypeQRCode : MTROnboardingPayloadTypeManualCode; switch (type) { case MTROnboardingPayloadTypeManualCode: - case MTROnboardingPayloadTypeAdmin: payload = [self setupPayloadForManualCodeOnboardingPayload:onboardingPayload error:error]; break; case MTROnboardingPayloadTypeQRCode: - case MTROnboardingPayloadTypeNFC: payload = [self setupPayloadForQRCodeOnboardingPayload:onboardingPayload error:error]; break; default: diff --git a/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m b/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m index aae5f60ead6575..67b6a9caad9c6a 100644 --- a/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m +++ b/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m @@ -38,40 +38,7 @@ @implementation MTRSetupPayloadParserTests - (void)testOnboardingPayloadParser_Manual_NoError { NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" - ofType:MTROnboardingPayloadTypeManualCode - error:&error]; - - XCTAssertNotNil(payload); - XCTAssertNil(error); - - XCTAssertTrue(payload.hasShortDiscriminator); - XCTAssertEqual(payload.discriminator.unsignedIntegerValue, 10); - XCTAssertEqual(payload.setUpPINCode.unsignedIntegerValue, 123456780); - XCTAssertEqual(payload.vendorID.unsignedIntegerValue, 1); - XCTAssertEqual(payload.productID.unsignedIntegerValue, 1); - XCTAssertEqual(payload.commissioningFlow, MTRCommissioningFlowCustom); - XCTAssertEqual(payload.version.unsignedIntegerValue, 0); - XCTAssertNil(payload.rendezvousInformation); -} - -- (void)testOnboardingPayloadParser_Manual_WrongType -{ - NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" - ofType:MTROnboardingPayloadTypeQRCode - error:&error]; - - XCTAssertNil(payload); - XCTAssertEqual(error.code, MTRErrorCodeInvalidArgument); -} - -- (void)testOnboardingPayloadParser_Admin_NoError -{ - NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" - ofType:MTROnboardingPayloadTypeAdmin - error:&error]; + MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" error:&error]; XCTAssertNotNil(payload); XCTAssertNil(error); @@ -86,22 +53,10 @@ - (void)testOnboardingPayloadParser_Admin_NoError XCTAssertNil(payload.rendezvousInformation); } -- (void)testOnboardingPayloadParser_Admin_WrongType -{ - NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" - ofType:MTROnboardingPayloadTypeQRCode - error:&error]; - - XCTAssertNil(payload); - XCTAssertEqual(error.code, MTRErrorCodeInvalidArgument); -} - - (void)testOnboardingPayloadParser_QRCode_NoError { NSError * error; MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J00000" - ofType:MTROnboardingPayloadTypeQRCode error:&error]; XCTAssertNotNil(payload); @@ -118,23 +73,11 @@ - (void)testOnboardingPayloadParser_QRCode_NoError XCTAssertEqual([payload.rendezvousInformation unsignedLongValue], MTRDiscoveryCapabilitiesSoftAP); } -- (void)testOnboardingPayloadParser_QRCode_WrongType -{ - NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J00000" - ofType:MTROnboardingPayloadTypeAdmin - error:&error]; - - XCTAssertNil(payload); - XCTAssertEqual(error.code, MTRErrorCodeIntegrityCheckFailed); -} - - (void)testOnboardingPayloadParser_NFC_NoError { NSError * error; MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J0A33P0SET70.QT52B.E23-WZE0WISA0DK5N1K8SQ1RYCU1O0" - ofType:MTROnboardingPayloadTypeNFC error:&error]; XCTAssertNotNil(payload); @@ -151,18 +94,6 @@ - (void)testOnboardingPayloadParser_NFC_NoError XCTAssertEqual([payload.rendezvousInformation unsignedLongValue], MTRDiscoveryCapabilitiesSoftAP); } -- (void)testOnboardingPayloadParser_NFC_WrongType -{ - NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser - setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J0A33P0SET70.QT52B.E23-WZE0WISA0DK5N1K8SQ1RYCU1O0" - ofType:MTROnboardingPayloadTypeManualCode - error:&error]; - - XCTAssertNil(payload); - XCTAssertEqual(error.code, MTRErrorCodeIntegrityCheckFailed); -} - - (void)testManualParser { NSError * error; From b506a86efb67efffa3533f6bc66df8d34e93628a Mon Sep 17 00:00:00 2001 From: Justin Wood Date: Thu, 18 Aug 2022 18:34:20 -0700 Subject: [PATCH 03/44] Revert "Check the onboarding payload code type in MTROnboardingPayloadParser (#22024)" (#22026) This reverts commit 2a5f7fe21521014507377a8a216b9bf5e07f045c. --- .../payload/SetupPayloadParseCommand.mm | 7 +- .../CHIP/MTROnboardingPayloadParser.h | 1 + .../CHIP/MTROnboardingPayloadParser.m | 6 +- .../CHIPTests/MTRSetupPayloadParserTests.m | 71 ++++++++++++++++++- 4 files changed, 80 insertions(+), 5 deletions(-) diff --git a/examples/darwin-framework-tool/commands/payload/SetupPayloadParseCommand.mm b/examples/darwin-framework-tool/commands/payload/SetupPayloadParseCommand.mm index 5b98ddf03840b6..9cb8aba4fdde80 100644 --- a/examples/darwin-framework-tool/commands/payload/SetupPayloadParseCommand.mm +++ b/examples/darwin-framework-tool/commands/payload/SetupPayloadParseCommand.mm @@ -62,7 +62,12 @@ NSError * error; MTRSetupPayload * payload; MTROnboardingPayloadType codeType; - payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:codeString error:&error]; + if (IsQRCode(codeString)) { + codeType = MTROnboardingPayloadTypeQRCode; + } else { + codeType = MTROnboardingPayloadTypeManualCode; + } + payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:codeString ofType:codeType error:&error]; if (error) { LogNSError("Error: ", error); return CHIP_ERROR_INTERNAL; diff --git a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h index a2509e233bee3f..cb812ddc41e67a 100644 --- a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h +++ b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h @@ -31,6 +31,7 @@ typedef NS_ENUM(NSUInteger, MTROnboardingPayloadType) { @interface MTROnboardingPayloadParser : NSObject + (nullable MTRSetupPayload *)setupPayloadForOnboardingPayload:(NSString *)onboardingPayload + ofType:(MTROnboardingPayloadType)type error:(NSError * __autoreleasing *)error; @end diff --git a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m index 2a81d81b5f5539..3af4fe1a38bb9c 100644 --- a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m +++ b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m @@ -23,17 +23,17 @@ @implementation MTROnboardingPayloadParser + (nullable MTRSetupPayload *)setupPayloadForOnboardingPayload:(NSString *)onboardingPayload + ofType:(MTROnboardingPayloadType)type error:(NSError * __autoreleasing *)error { MTRSetupPayload * payload; - // MTROnboardingPayloadTypeNFC is of type QR code and handled same as QR code - MTROnboardingPayloadType type - = isQRCode(onboardingPayload) ? MTROnboardingPayloadTypeQRCode : MTROnboardingPayloadTypeManualCode; switch (type) { case MTROnboardingPayloadTypeManualCode: + case MTROnboardingPayloadTypeAdmin: payload = [self setupPayloadForManualCodeOnboardingPayload:onboardingPayload error:error]; break; case MTROnboardingPayloadTypeQRCode: + case MTROnboardingPayloadTypeNFC: payload = [self setupPayloadForQRCodeOnboardingPayload:onboardingPayload error:error]; break; default: diff --git a/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m b/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m index 67b6a9caad9c6a..aae5f60ead6575 100644 --- a/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m +++ b/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m @@ -38,7 +38,40 @@ @implementation MTRSetupPayloadParserTests - (void)testOnboardingPayloadParser_Manual_NoError { NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" error:&error]; + MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" + ofType:MTROnboardingPayloadTypeManualCode + error:&error]; + + XCTAssertNotNil(payload); + XCTAssertNil(error); + + XCTAssertTrue(payload.hasShortDiscriminator); + XCTAssertEqual(payload.discriminator.unsignedIntegerValue, 10); + XCTAssertEqual(payload.setUpPINCode.unsignedIntegerValue, 123456780); + XCTAssertEqual(payload.vendorID.unsignedIntegerValue, 1); + XCTAssertEqual(payload.productID.unsignedIntegerValue, 1); + XCTAssertEqual(payload.commissioningFlow, MTRCommissioningFlowCustom); + XCTAssertEqual(payload.version.unsignedIntegerValue, 0); + XCTAssertNil(payload.rendezvousInformation); +} + +- (void)testOnboardingPayloadParser_Manual_WrongType +{ + NSError * error; + MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" + ofType:MTROnboardingPayloadTypeQRCode + error:&error]; + + XCTAssertNil(payload); + XCTAssertEqual(error.code, MTRErrorCodeInvalidArgument); +} + +- (void)testOnboardingPayloadParser_Admin_NoError +{ + NSError * error; + MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" + ofType:MTROnboardingPayloadTypeAdmin + error:&error]; XCTAssertNotNil(payload); XCTAssertNil(error); @@ -53,10 +86,22 @@ - (void)testOnboardingPayloadParser_Manual_NoError XCTAssertNil(payload.rendezvousInformation); } +- (void)testOnboardingPayloadParser_Admin_WrongType +{ + NSError * error; + MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" + ofType:MTROnboardingPayloadTypeQRCode + error:&error]; + + XCTAssertNil(payload); + XCTAssertEqual(error.code, MTRErrorCodeInvalidArgument); +} + - (void)testOnboardingPayloadParser_QRCode_NoError { NSError * error; MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J00000" + ofType:MTROnboardingPayloadTypeQRCode error:&error]; XCTAssertNotNil(payload); @@ -73,11 +118,23 @@ - (void)testOnboardingPayloadParser_QRCode_NoError XCTAssertEqual([payload.rendezvousInformation unsignedLongValue], MTRDiscoveryCapabilitiesSoftAP); } +- (void)testOnboardingPayloadParser_QRCode_WrongType +{ + NSError * error; + MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J00000" + ofType:MTROnboardingPayloadTypeAdmin + error:&error]; + + XCTAssertNil(payload); + XCTAssertEqual(error.code, MTRErrorCodeIntegrityCheckFailed); +} + - (void)testOnboardingPayloadParser_NFC_NoError { NSError * error; MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J0A33P0SET70.QT52B.E23-WZE0WISA0DK5N1K8SQ1RYCU1O0" + ofType:MTROnboardingPayloadTypeNFC error:&error]; XCTAssertNotNil(payload); @@ -94,6 +151,18 @@ - (void)testOnboardingPayloadParser_NFC_NoError XCTAssertEqual([payload.rendezvousInformation unsignedLongValue], MTRDiscoveryCapabilitiesSoftAP); } +- (void)testOnboardingPayloadParser_NFC_WrongType +{ + NSError * error; + MTRSetupPayload * payload = [MTROnboardingPayloadParser + setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J0A33P0SET70.QT52B.E23-WZE0WISA0DK5N1K8SQ1RYCU1O0" + ofType:MTROnboardingPayloadTypeManualCode + error:&error]; + + XCTAssertNil(payload); + XCTAssertEqual(error.code, MTRErrorCodeIntegrityCheckFailed); +} + - (void)testManualParser { NSError * error; From 18247f49e9016e0170eeda30001465a752fc6698 Mon Sep 17 00:00:00 2001 From: Justin Wood Date: Thu, 18 Aug 2022 18:35:26 -0700 Subject: [PATCH 04/44] Removing invalid type (#22023) --- .../CHIP/MTROnboardingPayloadParser.h | 3 +- .../CHIP/MTROnboardingPayloadParser.m | 1 - .../CHIPTests/MTRSetupPayloadParserTests.m | 31 ------------------- 3 files changed, 1 insertion(+), 34 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h index cb812ddc41e67a..ce59ff7922bdec 100644 --- a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h +++ b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.h @@ -24,8 +24,7 @@ NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSUInteger, MTROnboardingPayloadType) { MTROnboardingPayloadTypeQRCode = 0, MTROnboardingPayloadTypeManualCode, - MTROnboardingPayloadTypeNFC, - MTROnboardingPayloadTypeAdmin, + MTROnboardingPayloadTypeNFC }; @interface MTROnboardingPayloadParser : NSObject diff --git a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m index 3af4fe1a38bb9c..df68311d700914 100644 --- a/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m +++ b/src/darwin/Framework/CHIP/MTROnboardingPayloadParser.m @@ -29,7 +29,6 @@ + (nullable MTRSetupPayload *)setupPayloadForOnboardingPayload:(NSString *)onboa MTRSetupPayload * payload; switch (type) { case MTROnboardingPayloadTypeManualCode: - case MTROnboardingPayloadTypeAdmin: payload = [self setupPayloadForManualCodeOnboardingPayload:onboardingPayload error:error]; break; case MTROnboardingPayloadTypeQRCode: diff --git a/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m b/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m index aae5f60ead6575..beb638f777528c 100644 --- a/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m +++ b/src/darwin/Framework/CHIPTests/MTRSetupPayloadParserTests.m @@ -66,26 +66,6 @@ - (void)testOnboardingPayloadParser_Manual_WrongType XCTAssertEqual(error.code, MTRErrorCodeInvalidArgument); } -- (void)testOnboardingPayloadParser_Admin_NoError -{ - NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"636108753500001000015" - ofType:MTROnboardingPayloadTypeAdmin - error:&error]; - - XCTAssertNotNil(payload); - XCTAssertNil(error); - - XCTAssertTrue(payload.hasShortDiscriminator); - XCTAssertEqual(payload.discriminator.unsignedIntegerValue, 10); - XCTAssertEqual(payload.setUpPINCode.unsignedIntegerValue, 123456780); - XCTAssertEqual(payload.vendorID.unsignedIntegerValue, 1); - XCTAssertEqual(payload.productID.unsignedIntegerValue, 1); - XCTAssertEqual(payload.commissioningFlow, MTRCommissioningFlowCustom); - XCTAssertEqual(payload.version.unsignedIntegerValue, 0); - XCTAssertNil(payload.rendezvousInformation); -} - - (void)testOnboardingPayloadParser_Admin_WrongType { NSError * error; @@ -118,17 +98,6 @@ - (void)testOnboardingPayloadParser_QRCode_NoError XCTAssertEqual([payload.rendezvousInformation unsignedLongValue], MTRDiscoveryCapabilitiesSoftAP); } -- (void)testOnboardingPayloadParser_QRCode_WrongType -{ - NSError * error; - MTRSetupPayload * payload = [MTROnboardingPayloadParser setupPayloadForOnboardingPayload:@"MT:R5L90MP500K64J00000" - ofType:MTROnboardingPayloadTypeAdmin - error:&error]; - - XCTAssertNil(payload); - XCTAssertEqual(error.code, MTRErrorCodeIntegrityCheckFailed); -} - - (void)testOnboardingPayloadParser_NFC_NoError { NSError * error; From 3f69587863e92405c0c9d99667be0b4ab200ed70 Mon Sep 17 00:00:00 2001 From: Jerry Johns Date: Thu, 18 Aug 2022 20:25:15 -0700 Subject: [PATCH 05/44] Python CAT Value support for Controllers (#22019) * Python CAT Value support for Controllers * Review feedback --- src/controller/python/OpCredsBinding.cpp | 16 ++++++++-- src/controller/python/chip/ChipDeviceCtrl.py | 29 +++++++++++------ src/controller/python/chip/FabricAdmin.py | 9 +++--- .../python/test/test_scripts/base.py | 31 +++++++++++++++++++ .../test/test_scripts/mobile-device-test.py | 3 ++ 5 files changed, 72 insertions(+), 16 deletions(-) diff --git a/src/controller/python/OpCredsBinding.cpp b/src/controller/python/OpCredsBinding.cpp index fa779e3d383fc0..e6ed27a6da1db3 100644 --- a/src/controller/python/OpCredsBinding.cpp +++ b/src/controller/python/OpCredsBinding.cpp @@ -321,7 +321,8 @@ void pychip_OnCommissioningStatusUpdate(chip::PeerId peerId, chip::Controller::C ChipError::StorageType pychip_OpCreds_AllocateController(OpCredsContext * context, chip::Controller::DeviceCommissioner ** outDevCtrl, FabricId fabricId, chip::NodeId nodeId, chip::VendorId adminVendorId, - const char * paaTrustStorePath, bool useTestCommissioner) + const char * paaTrustStorePath, bool useTestCommissioner, + CASEAuthTag * caseAuthTags, uint32_t caseAuthTagLen) { ChipLogDetail(Controller, "Creating New Device Controller"); @@ -357,8 +358,17 @@ ChipError::StorageType pychip_OpCreds_AllocateController(OpCredsContext * contex ReturnErrorCodeIf(!rcac.Alloc(Controller::kMaxCHIPDERCertLength), CHIP_ERROR_NO_MEMORY.AsInteger()); MutableByteSpan rcacSpan(rcac.Get(), Controller::kMaxCHIPDERCertLength); - err = context->mAdapter->GenerateNOCChain(nodeId, fabricId, chip::kUndefinedCATs, ephemeralKey.Pubkey(), rcacSpan, icacSpan, - nocSpan); + CATValues catValues; + + if ((caseAuthTagLen + 1) > kMaxSubjectCATAttributeCount) + { + ChipLogError(Controller, "# of CASE Tags exceeds kMaxSubjectCATAttributeCount"); + return CHIP_ERROR_INVALID_ARGUMENT.AsInteger(); + } + + memcpy(catValues.values.data(), caseAuthTags, caseAuthTagLen * sizeof(CASEAuthTag)); + + err = context->mAdapter->GenerateNOCChain(nodeId, fabricId, catValues, ephemeralKey.Pubkey(), rcacSpan, icacSpan, nocSpan); VerifyOrReturnError(err == CHIP_NO_ERROR, err.AsInteger()); Controller::SetupParams initParams; diff --git a/src/controller/python/chip/ChipDeviceCtrl.py b/src/controller/python/chip/ChipDeviceCtrl.py index edac6bc8f516dc..8e11f27a953b16 100644 --- a/src/controller/python/chip/ChipDeviceCtrl.py +++ b/src/controller/python/chip/ChipDeviceCtrl.py @@ -157,7 +157,7 @@ class DiscoveryFilterType(enum.IntEnum): class ChipDeviceController(): activeList = set() - def __init__(self, opCredsContext: ctypes.c_void_p, fabricId: int, nodeId: int, adminVendorId: int, paaTrustStorePath: str = "", useTestCommissioner: bool = False, fabricAdmin: FabricAdmin = None, name: str = None): + def __init__(self, opCredsContext: ctypes.c_void_p, fabricId: int, nodeId: int, adminVendorId: int, catTags: typing.List[int] = [], paaTrustStorePath: str = "", useTestCommissioner: bool = False, fabricAdmin: FabricAdmin = None, name: str = None): self.state = DCState.NOT_INITIALIZED self.devCtrl = None self._ChipStack = builtins.chipStack @@ -169,9 +169,18 @@ def __init__(self, opCredsContext: ctypes.c_void_p, fabricId: int, nodeId: int, devCtrl = c_void_p(None) + c_catTags = (c_uint32 * len(catTags))() + + for i, item in enumerate(catTags): + c_catTags[i] = item + + self._dmLib.pychip_OpCreds_AllocateController.argtypes = [c_void_p, POINTER( + c_void_p), c_uint64, c_uint64, c_uint16, c_char_p, c_bool, POINTER(c_uint32), c_uint32] + self._dmLib.pychip_OpCreds_AllocateController.restype = c_uint32 + res = self._ChipStack.Call( - lambda: self._dmLib.pychip_OpCreds_AllocateController(ctypes.c_void_p( - opCredsContext), pointer(devCtrl), fabricId, nodeId, adminVendorId, ctypes.c_char_p(None if len(paaTrustStorePath) == 0 else str.encode(paaTrustStorePath)), useTestCommissioner) + lambda: self._dmLib.pychip_OpCreds_AllocateController(c_void_p( + opCredsContext), pointer(devCtrl), fabricId, nodeId, adminVendorId, c_char_p(None if len(paaTrustStorePath) == 0 else str.encode(paaTrustStorePath)), useTestCommissioner, c_catTags, len(catTags)) ) if res != 0: @@ -233,7 +242,7 @@ def HandlePASEEstablishmentComplete(err): self.devCtrl, self.cbHandleCommissioningCompleteFunct) self.state = DCState.IDLE - self.isActive = True + self._isActive = True # Validate FabricID/NodeID followed from NOC Chain self._fabricId = self.GetFabricIdInternal() @@ -249,12 +258,10 @@ def fabricAdmin(self) -> FabricAdmin: @property def nodeId(self) -> int: - self.CheckIsActive() return self._nodeId @property def fabricId(self) -> int: - self.CheckIsActive() return self._fabricId @property @@ -269,11 +276,15 @@ def name(self) -> str: def name(self, new_name: str): self._name = new_name + @property + def isActive(self) -> bool: + return self._isActive + def Shutdown(self): ''' Shuts down this controller and reclaims any used resources, including the bound C++ constructor instance in the SDK. ''' - if (self.isActive): + if (self._isActive): if self.devCtrl != None: self._ChipStack.Call( lambda: self._dmLib.pychip_DeviceController_DeleteDeviceController( @@ -282,7 +293,7 @@ def Shutdown(self): self.devCtrl = None ChipDeviceController.activeList.remove(self) - self.isActive = False + self._isActive = False def ShutdownAll(): ''' Shut down all active controllers and reclaim any used resources. @@ -304,7 +315,7 @@ def ShutdownAll(): ChipDeviceController.activeList.clear() def CheckIsActive(self): - if (not self.isActive): + if (not self._isActive): raise RuntimeError( "DeviceCtrl instance was already shutdown previously!") diff --git a/src/controller/python/chip/FabricAdmin.py b/src/controller/python/chip/FabricAdmin.py index 216da4ebad7646..3cfe03ffdb7e95 100644 --- a/src/controller/python/chip/FabricAdmin.py +++ b/src/controller/python/chip/FabricAdmin.py @@ -73,7 +73,7 @@ def __init__(self, certificateAuthority: CertificateAuthority, vendorId: int, fa self._isActive = True self._activeControllers = [] - def NewController(self, nodeId: int = None, paaTrustStorePath: str = "", useTestCommissioner: bool = False): + def NewController(self, nodeId: int = None, paaTrustStorePath: str = "", useTestCommissioner: bool = False, catTags: List[int] = []): ''' Create a new chip.ChipDeviceCtrl.ChipDeviceController instance on this fabric. When vending ChipDeviceController instances on a given fabric, each controller instance @@ -85,12 +85,13 @@ def NewController(self, nodeId: int = None, paaTrustStorePath: str = "", useTest paaTrustStorePath: Path to the PAA trust store. If one isn't provided, a suitable default is selected. useTestCommissioner: If a test commmisioner is to be created. + catTags: A list of 32-bit CAT tags that will added to the NOC generated for this controller. ''' if (not(self._isActive)): raise RuntimeError( f"FabricAdmin object was previously shutdown and is no longer valid!") - nodeIdList = [controller.nodeId for controller in self._activeControllers] + nodeIdList = [controller.nodeId for controller in self._activeControllers if controller.isActive] if (nodeId is None): if (len(nodeIdList) != 0): nodeId = max(nodeIdList) + 1 @@ -103,8 +104,8 @@ def NewController(self, nodeId: int = None, paaTrustStorePath: str = "", useTest self.logger().warning( f"Allocating new controller with CaIndex: {self._certificateAuthority.caIndex}, FabricId: 0x{self._fabricId:016X}, NodeId: 0x{nodeId:016X}") - controller = ChipDeviceCtrl.ChipDeviceController( - self._certificateAuthority.GetOpCredsContext(), self._fabricId, nodeId, self._vendorId, paaTrustStorePath, useTestCommissioner, fabricAdmin=self) + controller = ChipDeviceCtrl.ChipDeviceController(opCredsContext=self._certificateAuthority.GetOpCredsContext(), fabricId=self._fabricId, nodeId=nodeId, + adminVendorId=self._vendorId, paaTrustStorePath=paaTrustStorePath, useTestCommissioner=useTestCommissioner, fabricAdmin=self, catTags=catTags) self._activeControllers.append(controller) return controller diff --git a/src/controller/python/test/test_scripts/base.py b/src/controller/python/test/test_scripts/base.py index 3b9f3d9288a7ba..8488b2e80b6ce6 100644 --- a/src/controller/python/test/test_scripts/base.py +++ b/src/controller/python/test/test_scripts/base.py @@ -386,6 +386,37 @@ def TestFailsafe(self, nodeid: int): return True return False + async def TestControllerCATValues(self, nodeid: int): + ''' This tests controllers using CAT Values + ''' + + # Allocate a new controller instance with a CAT tag. + newController = self.fabricAdmin.NewController(nodeId=300, catTags=[0x00010001]) + + # Read out an attribute using the new controller. It has no privileges, so this should fail with an UnsupportedAccess error. + res = await newController.ReadAttribute(nodeid=nodeid, attributes=[(0, Clusters.AccessControl.Attributes.Acl)]) + if(res[0][Clusters.AccessControl][Clusters.AccessControl.Attributes.Acl].Reason.status != IM.Status.UnsupportedAccess): + self.logger.error(f"1: Received data instead of an error:{res}") + return False + + # Do a read-modify-write operation on the ACL list to add the CAT tag to the ACL list. + aclList = (await self.devCtrl.ReadAttribute(nodeid, [(0, Clusters.AccessControl.Attributes.Acl)]))[0][Clusters.AccessControl][Clusters.AccessControl.Attributes.Acl] + origAclList = copy.deepcopy(aclList) + aclList[0].subjects.append(0xFFFFFFFD00010001) + await self.devCtrl.WriteAttribute(nodeid, [(0, Clusters.AccessControl.Attributes.Acl(aclList))]) + + # Read out the attribute again - this time, it should succeed. + res = await newController.ReadAttribute(nodeid=nodeid, attributes=[(0, Clusters.AccessControl.Attributes.Acl)]) + if (type(res[0][Clusters.AccessControl][Clusters.AccessControl.Attributes.Acl][0]) != Clusters.AccessControl.Structs.AccessControlEntry): + self.logger.error(f"2: Received something other than data:{res}") + return False + + # Write back the old entry to reset ACL list back. + await self.devCtrl.WriteAttribute(nodeid, [(0, Clusters.AccessControl.Attributes.Acl(origAclList))]) + newController.Shutdown() + + return True + async def TestMultiControllerFabric(self, nodeid: int): ''' This tests having multiple controller instances on the same fabric. ''' diff --git a/src/controller/python/test/test_scripts/mobile-device-test.py b/src/controller/python/test/test_scripts/mobile-device-test.py index ffea217fa526c9..99f17aabe27363 100755 --- a/src/controller/python/test/test_scripts/mobile-device-test.py +++ b/src/controller/python/test/test_scripts/mobile-device-test.py @@ -77,6 +77,9 @@ def ethernet_commissioning(test: BaseTestHelper, discriminator: int, setup_pin: logger.info("Testing multi-controller setup on the same fabric") FailIfNot(asyncio.run(test.TestMultiControllerFabric(nodeid=device_nodeid)), "Failed the multi-controller test") + logger.info("Testing CATs used on controllers") + FailIfNot(asyncio.run(test.TestControllerCATValues(nodeid=device_nodeid)), "Failed the controller CAT test") + ok = asyncio.run(test.TestMultiFabric(ip=address, setuppin=20202021, nodeid=1)) From 67d6821e887701c6794ca790461699e5fcdc02de Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Fri, 19 Aug 2022 09:10:12 -0400 Subject: [PATCH 06/44] Add a recursive submodule checkout for cloudbuild builds (#22015) * Add a recursive submodule checkout for cloudbuild builds * Restyle --- integrations/cloudbuild/build-all.yaml | 9 +++++++++ integrations/cloudbuild/smoke-test.yaml | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/integrations/cloudbuild/build-all.yaml b/integrations/cloudbuild/build-all.yaml index 3326bb4ac1ce16..c8c09ad722319f 100644 --- a/integrations/cloudbuild/build-all.yaml +++ b/integrations/cloudbuild/build-all.yaml @@ -1,4 +1,11 @@ steps: + - name: gcr.io/cloud-builders/git + args: + - submodule + - update + - "--init" + - "--recursive" + id: Submodules - name: "connectedhomeip/chip-build-vscode:0.5.91" env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -6,6 +13,8 @@ steps: - "-c" - source ./scripts/bootstrap.sh id: Bootstrap + waitFor: + - Submodules entrypoint: /usr/bin/bash volumes: - name: pwenv diff --git a/integrations/cloudbuild/smoke-test.yaml b/integrations/cloudbuild/smoke-test.yaml index 72dc9aa5678706..b0333fab36f327 100644 --- a/integrations/cloudbuild/smoke-test.yaml +++ b/integrations/cloudbuild/smoke-test.yaml @@ -1,4 +1,11 @@ steps: + - name: gcr.io/cloud-builders/git + args: + - submodule + - update + - "--init" + - "--recursive" + id: Submodules - name: "connectedhomeip/chip-build-vscode:0.5.91" env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -6,6 +13,8 @@ steps: - "-c" - source ./scripts/bootstrap.sh id: Bootstrap + waitFor: + - Submodules entrypoint: /usr/bin/bash volumes: - name: pwenv From b191211ebc3192501073d5d1159e52df4c7a3ef5 Mon Sep 17 00:00:00 2001 From: Evgeny Margolis Date: Fri, 19 Aug 2022 09:43:59 -0700 Subject: [PATCH 07/44] Removed Unused Third Party Android Dependency (#22025) --- src/inet/BUILD.gn | 8 - .../include/LocalArray.h | 75 ------ .../include/ScopedFd.h | 46 ---- .../luni/src/main/native/ifaddrs-android.h | 233 ------------------ 4 files changed, 362 deletions(-) delete mode 100644 third_party/android/platform-libcore/android-platform-libcore/include/LocalArray.h delete mode 100644 third_party/android/platform-libcore/android-platform-libcore/include/ScopedFd.h delete mode 100644 third_party/android/platform-libcore/android-platform-libcore/luni/src/main/native/ifaddrs-android.h diff --git a/src/inet/BUILD.gn b/src/inet/BUILD.gn index 5a85beb667c25b..10852750646742 100644 --- a/src/inet/BUILD.gn +++ b/src/inet/BUILD.gn @@ -137,12 +137,4 @@ static_library("inet") { } cflags = [ "-Wconversion" ] - - include_dirs = [] - if (current_os == "android") { - include_dirs += [ - "${chip_root}/third_party/android/platform-libcore/android-platform-libcore/luni/src/main/native", - "${chip_root}/third_party/android/platform-libcore/android-platform-libcore/include", - ] - } } diff --git a/third_party/android/platform-libcore/android-platform-libcore/include/LocalArray.h b/third_party/android/platform-libcore/android-platform-libcore/include/LocalArray.h deleted file mode 100644 index 2ab708affc69af..00000000000000 --- a/third_party/android/platform-libcore/android-platform-libcore/include/LocalArray.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * 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 LOCAL_ARRAY_H_included -#define LOCAL_ARRAY_H_included - -#include -#include - -/** - * A fixed-size array with a size hint. That number of bytes will be allocated - * on the stack, and used if possible, but if more bytes are requested at - * construction time, a buffer will be allocated on the heap (and deallocated - * by the destructor). - * - * The API is intended to be a compatible subset of C++0x's std::array. - */ -template -class LocalArray { -public: - /** - * Allocates a new fixed-size array of the given size. If this size is - * less than or equal to the template parameter STACK_BYTE_COUNT, an - * internal on-stack buffer will be used. Otherwise a heap buffer will - * be allocated. - */ - LocalArray(size_t desiredByteCount) : mSize(desiredByteCount) { - if (desiredByteCount > STACK_BYTE_COUNT) { - mPtr = new char[mSize]; - } else { - mPtr = &mOnStackBuffer[0]; - } - } - - /** - * Frees the heap-allocated buffer, if there was one. - */ - ~LocalArray() { - if (mPtr != &mOnStackBuffer[0]) { - delete[] mPtr; - } - } - - // Capacity. - size_t size() { return mSize; } - bool empty() { return mSize == 0; } - - // Element access. - char& operator[](size_t n) { return mPtr[n]; } - const char& operator[](size_t n) const { return mPtr[n]; } - -private: - char mOnStackBuffer[STACK_BYTE_COUNT]; - char* mPtr; - size_t mSize; - - // Disallow copy and assignment. - LocalArray(const LocalArray&); - void operator=(const LocalArray&); -}; - -#endif // LOCAL_ARRAY_H_included diff --git a/third_party/android/platform-libcore/android-platform-libcore/include/ScopedFd.h b/third_party/android/platform-libcore/android-platform-libcore/include/ScopedFd.h deleted file mode 100644 index d2b7935fab55dd..00000000000000 --- a/third_party/android/platform-libcore/android-platform-libcore/include/ScopedFd.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * 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 SCOPED_FD_H_included -#define SCOPED_FD_H_included - -#include - -// A smart pointer that closes the given fd on going out of scope. -// Use this when the fd is incidental to the purpose of your function, -// but needs to be cleaned up on exit. -class ScopedFd { -public: - explicit ScopedFd(int fd) : fd(fd) { - } - - ~ScopedFd() { - close(fd); - } - - int get() const { - return fd; - } - -private: - int fd; - - // Disallow copy and assignment. - ScopedFd(const ScopedFd&); - void operator=(const ScopedFd&); -}; - -#endif // SCOPED_FD_H_included diff --git a/third_party/android/platform-libcore/android-platform-libcore/luni/src/main/native/ifaddrs-android.h b/third_party/android/platform-libcore/android-platform-libcore/luni/src/main/native/ifaddrs-android.h deleted file mode 100644 index a993c9ea2a66fd..00000000000000 --- a/third_party/android/platform-libcore/android-platform-libcore/luni/src/main/native/ifaddrs-android.h +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * 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 IFADDRS_ANDROID_H_included -#define IFADDRS_ANDROID_H_included - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "LocalArray.h" -#include "ScopedFd.h" - -// Android (bionic) doesn't have getifaddrs(3)/freeifaddrs(3). -// We fake it here, so java_net_NetworkInterface.cpp can use that API -// with all the non-portable code being in this file. - -// Source-compatible subset of the BSD struct. -struct ifaddrs { - // Pointer to next struct in list, or NULL at end. - ifaddrs* ifa_next; - - // Interface name. - char* ifa_name; - - // Interface flags. - unsigned int ifa_flags; - - // Interface network address. - sockaddr* ifa_addr; - - // Interface netmask. - sockaddr* ifa_netmask; - - ifaddrs(ifaddrs* next) - : ifa_next(next), ifa_name(NULL), ifa_flags(0), ifa_addr(NULL), ifa_netmask(NULL) - { - } - - ~ifaddrs() { - delete ifa_next; - delete[] ifa_name; - delete ifa_addr; - delete ifa_netmask; - } - - // Sadly, we can't keep the interface index for portability with BSD. - // We'll have to keep the name instead, and re-query the index when - // we need it later. - bool setNameAndFlagsByIndex(unsigned int interfaceIndex) { - // Get the name. - char buf[IFNAMSIZ]; - char* name = if_indextoname(interfaceIndex, buf); - if (name == NULL) { - return false; - } - ifa_name = new char[strlen(name) + 1]; - strcpy(ifa_name, name); - - // Get the flags. - ScopedFd fd(socket(AF_INET, SOCK_DGRAM, 0)); - if (fd.get() == -1) { - return false; - } - ifreq ifr; - memset(&ifr, 0, sizeof(ifr)); - strcpy(ifr.ifr_name, name); - int rc = ioctl(fd.get(), SIOCGIFFLAGS, &ifr); - if (rc == -1) { - return false; - } - // ifr_flags is a bitmask, so really should be unsigned short. But it's - // a short, and we're assigning into an unsigned member here, so make - // the casting explicit. - ifa_flags = (unsigned int)ifr.ifr_flags; - return true; - } - - // Netlink gives us the address family in the header, and the - // sockaddr_in or sockaddr_in6 bytes as the payload. We need to - // stitch the two bits together into the sockaddr that's part of - // our portable interface. - void setAddress(unsigned char family, void* data, size_t byteCount) { - // Set the address proper... - sockaddr_storage* ss = new sockaddr_storage; - memset(ss, 0, sizeof(*ss)); - ifa_addr = reinterpret_cast(ss); - ss->ss_family = family; - uint8_t* dst = sockaddrBytes(family, ss); - memcpy(dst, data, byteCount); - } - - // Netlink gives us the prefix length as a bit count. We need to turn - // that into a BSD-compatible netmask represented by a sockaddr*. - void setNetmask(unsigned char family, size_t prefixLength) { - // ...and work out the netmask from the prefix length. - sockaddr_storage* ss = new sockaddr_storage; - memset(ss, 0, sizeof(*ss)); - ifa_netmask = reinterpret_cast(ss); - ss->ss_family = family; - uint8_t* dst = sockaddrBytes(family, ss); - memset(dst, 0xff, prefixLength / 8); - if ((prefixLength % 8) != 0) { - // We're explicitly dropping any bits left after we bitshift that - // don't fit into a uint8_t. - dst[prefixLength/8] = (uint8_t)(0xffu << (8 - (prefixLength % 8))); - } - } - - // Returns a pointer to the first byte in the address data (which is - // stored in network byte order). - uint8_t* sockaddrBytes(int family, sockaddr_storage* ss) { - if (family == AF_INET) { - sockaddr_in* ss4 = reinterpret_cast(ss); - return reinterpret_cast(&ss4->sin_addr); - } else if (family == AF_INET6) { - sockaddr_in6* ss6 = reinterpret_cast(ss); - return reinterpret_cast(&ss6->sin6_addr); - } - return NULL; - } - -private: - // Disallow copy and assignment. - ifaddrs(const ifaddrs&); - void operator=(const ifaddrs&); -}; - -// FIXME: use iovec instead. -struct addrReq_struct { - nlmsghdr netlinkHeader; - ifaddrmsg msg; -}; - -inline bool sendNetlinkMessage(int fd, const void* data, size_t byteCount) { - ssize_t sentByteCount = TEMP_FAILURE_RETRY(send(fd, data, byteCount, 0)); - return (sentByteCount == static_cast(byteCount)); -} - -inline ssize_t recvNetlinkMessage(int fd, char* buf, size_t byteCount) { - return TEMP_FAILURE_RETRY(recv(fd, buf, byteCount, 0)); -} - -// Source-compatible with the BSD function. -inline int getifaddrs(ifaddrs** result) { - // Simplify cleanup for callers. - *result = NULL; - - // Create a netlink socket. - ScopedFd fd(socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE)); - if (fd.get() < 0) { - return -1; - } - - // Ask for the address information. - addrReq_struct addrRequest; - memset(&addrRequest, 0, sizeof(addrRequest)); - addrRequest.netlinkHeader.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH; - addrRequest.netlinkHeader.nlmsg_type = RTM_GETADDR; - addrRequest.netlinkHeader.nlmsg_len = NLMSG_ALIGN(NLMSG_LENGTH(sizeof(addrRequest))); - addrRequest.msg.ifa_family = AF_UNSPEC; // All families. - addrRequest.msg.ifa_index = 0; // All interfaces. - if (!sendNetlinkMessage(fd.get(), &addrRequest, addrRequest.netlinkHeader.nlmsg_len)) { - return -1; - } - - // Read the responses. - LocalArray<0> buf(65536); // We don't necessarily have std::vector. - ssize_t bytesRead; - while ((bytesRead = recvNetlinkMessage(fd.get(), &buf[0], buf.size())) > 0) { - nlmsghdr* hdr = reinterpret_cast(&buf[0]); - for (; NLMSG_OK(hdr, (size_t)bytesRead); hdr = NLMSG_NEXT(hdr, bytesRead)) { - switch (hdr->nlmsg_type) { - case NLMSG_DONE: - return 0; - case NLMSG_ERROR: - return -1; - case RTM_NEWADDR: - { - ifaddrmsg* address = reinterpret_cast(NLMSG_DATA(hdr)); - rtattr* rta = IFA_RTA(address); - size_t ifaPayloadLength = IFA_PAYLOAD(hdr); - while (RTA_OK(rta, ifaPayloadLength)) { - if (rta->rta_type == IFA_LOCAL) { - unsigned char family = address->ifa_family; - if (family == AF_INET || family == AF_INET6) { - *result = new ifaddrs(*result); - if (!(*result)->setNameAndFlagsByIndex(address->ifa_index)) { - return -1; - } - (*result)->setAddress(family, RTA_DATA(rta), RTA_PAYLOAD(rta)); - (*result)->setNetmask(family, address->ifa_prefixlen); - } - } - rta = RTA_NEXT(rta, ifaPayloadLength); - } - } - break; - } - } - } - // We only get here if recv fails before we see a NLMSG_DONE. - return -1; -} - -// Source-compatible with the BSD function. -inline void freeifaddrs(ifaddrs* addresses) { - delete addresses; -} - -#endif // IFADDRS_ANDROID_H_included From 6ca1f85f284e4545c55ab45d21e619d2e6573e5a Mon Sep 17 00:00:00 2001 From: chirag-silabs <100861685+chirag-silabs@users.noreply.github.com> Date: Fri, 19 Aug 2022 22:54:03 +0530 Subject: [PATCH 08/44] Increasing the heap size for wifi] (#21992) --- examples/platform/efr32/FreeRTOSConfig.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/platform/efr32/FreeRTOSConfig.h b/examples/platform/efr32/FreeRTOSConfig.h index 3408b5667aa9bc..f42179230d6bb0 100644 --- a/examples/platform/efr32/FreeRTOSConfig.h +++ b/examples/platform/efr32/FreeRTOSConfig.h @@ -198,7 +198,7 @@ See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ #ifndef configTOTAL_HEAP_SIZE #ifdef SL_WIFI -#define configTOTAL_HEAP_SIZE ((size_t)(30 * 1024)) +#define configTOTAL_HEAP_SIZE ((size_t)(34 * 1024)) #else #define configTOTAL_HEAP_SIZE ((size_t)(20 * 1024)) #endif From b94c8edc7f898ac55917f8128ef736351cbf0ab8 Mon Sep 17 00:00:00 2001 From: Jean-Francois Penven <67962328+jepenven-silabs@users.noreply.github.com> Date: Fri, 19 Aug 2022 14:42:43 -0400 Subject: [PATCH 09/44] [EFR32] Upgrade LCD (#22016) * Upgrade LCD EFR32 * fix CI --- .github/workflows/examples-efr32.yaml | 2 +- examples/chef/efr32/BUILD.gn | 6 +- examples/light-switch-app/efr32/BUILD.gn | 11 +- .../light-switch-app/efr32/src/AppTask.cpp | 21 +- examples/lighting-app/efr32/BUILD.gn | 12 +- examples/lighting-app/efr32/src/AppTask.cpp | 27 +- examples/lock-app/efr32/BUILD.gn | 11 +- examples/lock-app/efr32/src/AppTask.cpp | 20 +- examples/platform/efr32/BaseApplication.cpp | 17 +- examples/platform/efr32/BaseApplication.h | 18 +- .../platform/efr32/display/demo-ui-bitmaps.h | 326 ++++++++++++++++++ examples/platform/efr32/display/demo-ui.c | 136 ++++++++ examples/platform/efr32/display/demo-ui.h | 139 ++++++++ .../platform/efr32/display/{lcd.c => lcd.cpp} | 90 ++++- examples/platform/efr32/display/lcd.h | 71 ++++ examples/platform/efr32/init_efrPlatform.cpp | 8 - examples/platform/efr32/lcd.h | 38 -- examples/window-app/efr32/BUILD.gn | 4 +- .../window-app/efr32/include/LcdPainter.h | 4 +- examples/window-app/efr32/src/LcdPainter.cpp | 11 +- .../window-app/efr32/src/WindowAppImpl.cpp | 13 +- 21 files changed, 877 insertions(+), 108 deletions(-) create mode 100644 examples/platform/efr32/display/demo-ui-bitmaps.h create mode 100644 examples/platform/efr32/display/demo-ui.c create mode 100644 examples/platform/efr32/display/demo-ui.h rename examples/platform/efr32/display/{lcd.c => lcd.cpp} (62%) create mode 100644 examples/platform/efr32/display/lcd.h delete mode 100644 examples/platform/efr32/lcd.h diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml index 320dad29dadd31..acb4e6b18e96b3 100644 --- a/.github/workflows/examples-efr32.yaml +++ b/.github/workflows/examples-efr32.yaml @@ -94,7 +94,7 @@ jobs: - name: Build example EFR32 Lighting App for BRD4161A with RPCs timeout-minutes: 15 run: | - scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/lighting_app_debug_rpc BRD4161A \ + scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/lighting_app_debug_rpc BRD4161A "is_debug=false" \ 'import("//with_pw_rpc.gni")' .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+rpc lighting-app \ out/lighting_app_debug_rpc/BRD4161A/chip-efr32-lighting-example.out /tmp/bloat_reports/ diff --git a/examples/chef/efr32/BUILD.gn b/examples/chef/efr32/BUILD.gn index efaace05910a0b..662933081bc331 100644 --- a/examples/chef/efr32/BUILD.gn +++ b/examples/chef/efr32/BUILD.gn @@ -246,7 +246,11 @@ efr32_executable("chef_app") { } if (!disable_lcd) { - sources += [ "${examples_plat_dir}/display/lcd.c" ] + sources += [ + "${examples_plat_dir}/display/demo-ui.c", + "${examples_plat_dir}/display/lcd.cpp", + ] + include_dirs += [ "${examples_plat_dir}/display" ] defines += [ "DISPLAY_ENABLED" ] if (show_qr_code) { defines += [ "QR_CODE_ENABLED" ] diff --git a/examples/light-switch-app/efr32/BUILD.gn b/examples/light-switch-app/efr32/BUILD.gn index 026dc46d13195c..3118b7a6dadc18 100644 --- a/examples/light-switch-app/efr32/BUILD.gn +++ b/examples/light-switch-app/efr32/BUILD.gn @@ -253,8 +253,15 @@ efr32_executable("light_switch_app") { } if (!disable_lcd) { - sources += [ "${examples_plat_dir}/display/lcd.c" ] - defines += [ "DISPLAY_ENABLED" ] + sources += [ + "${examples_plat_dir}/display/demo-ui.c", + "${examples_plat_dir}/display/lcd.cpp", + ] + include_dirs += [ "${examples_plat_dir}/display" ] + defines += [ + "DISPLAY_ENABLED", + "IS_DEMO_SWITCH=1", + ] if (show_qr_code) { defines += [ "QR_CODE_ENABLED" ] deps += [ "${chip_root}/examples/common/QRCode" ] diff --git a/examples/light-switch-app/efr32/src/AppTask.cpp b/examples/light-switch-app/efr32/src/AppTask.cpp index 29d9e6527ea8e9..83ac3ac8c94ec7 100644 --- a/examples/light-switch-app/efr32/src/AppTask.cpp +++ b/examples/light-switch-app/efr32/src/AppTask.cpp @@ -70,6 +70,8 @@ namespace { EmberAfIdentifyEffectIdentifier sIdentifyEffect = EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_STOP_EFFECT; +bool mCurrentButtonState = false; + /********************************************************** * Identify Callbacks *********************************************************/ @@ -146,6 +148,9 @@ AppTask AppTask::sAppTask; CHIP_ERROR AppTask::Init() { CHIP_ERROR err = CHIP_NO_ERROR; +#ifdef DISPLAY_ENABLED + GetLCD().Init((uint8_t *) "Light Switch"); +#endif err = BaseApplication::Init(&gIdentify); if (err != CHIP_NO_ERROR) @@ -221,9 +226,23 @@ void AppTask::SwitchActionEventHandler(AppEvent * aEvent) if (aEvent->Type == AppEvent::kEventType_Button) { BindingCommandData * data = Platform::New(); - data->commandId = chip::app::Clusters::OnOff::Commands::Toggle::Id; data->clusterId = chip::app::Clusters::OnOff::Id; + if (mCurrentButtonState) + { + mCurrentButtonState = false; + data->commandId = chip::app::Clusters::OnOff::Commands::Off::Id; + } + else + { + data->commandId = chip::app::Clusters::OnOff::Commands::On::Id; + mCurrentButtonState = true; + } + +#ifdef DISPLAY_ENABLED + sAppTask.GetLCD().WriteDemoUI(mCurrentButtonState); +#endif + DeviceLayer::PlatformMgr().ScheduleWork(SwitchWorkerFunction, reinterpret_cast(data)); } } diff --git a/examples/lighting-app/efr32/BUILD.gn b/examples/lighting-app/efr32/BUILD.gn index 81a25554eb9ba2..76430e8586e8d3 100644 --- a/examples/lighting-app/efr32/BUILD.gn +++ b/examples/lighting-app/efr32/BUILD.gn @@ -253,8 +253,16 @@ efr32_executable("lighting_app") { } if (!disable_lcd) { - sources += [ "${examples_plat_dir}/display/lcd.c" ] - defines += [ "DISPLAY_ENABLED" ] + sources += [ + "${examples_plat_dir}/display/demo-ui.c", + "${examples_plat_dir}/display/lcd.cpp", + ] + + include_dirs += [ "${examples_plat_dir}/display" ] + defines += [ + "DISPLAY_ENABLED", + "IS_DEMO_LIGHT=1", + ] if (show_qr_code) { defines += [ "QR_CODE_ENABLED" ] diff --git a/examples/lighting-app/efr32/src/AppTask.cpp b/examples/lighting-app/efr32/src/AppTask.cpp index d8fe8940ce3434..89963785b8f02b 100644 --- a/examples/lighting-app/efr32/src/AppTask.cpp +++ b/examples/lighting-app/efr32/src/AppTask.cpp @@ -21,12 +21,7 @@ #include "AppConfig.h" #include "AppEvent.h" #include "LEDWidget.h" -#ifdef DISPLAY_ENABLED -#include "lcd.h" -#ifdef QR_CODE_ENABLED -#include "qrcodegen.h" -#endif // QR_CODE_ENABLED -#endif // DISPLAY_ENABLED + #include "sl_simple_led_instances.h" #include #include @@ -132,6 +127,9 @@ AppTask AppTask::sAppTask; CHIP_ERROR AppTask::Init() { CHIP_ERROR err = CHIP_NO_ERROR; +#ifdef DISPLAY_ENABLED + GetLCD().Init((uint8_t *) "Lighting-App"); +#endif err = BaseApplication::Init(&gIdentify); if (err != CHIP_NO_ERROR) @@ -266,16 +264,13 @@ void AppTask::ButtonEventHandler(const sl_button_t * buttonHandle, uint8_t btnAc void AppTask::ActionInitiated(LightingManager::Action_t aAction, int32_t aActor) { // Action initiated, update the light led - if (aAction == LightingManager::ON_ACTION) - { - EFR32_LOG("Turning light ON") - sLightLED.Set(true); - } - else if (aAction == LightingManager::OFF_ACTION) - { - EFR32_LOG("Turning light OFF") - sLightLED.Set(false); - } + bool lightOn = aAction == LightingManager::ON_ACTION; + EFR32_LOG("Turning light %s", (lightOn) ? "On" : "Off") + sLightLED.Set(lightOn); + +#ifdef DISPLAY_ENABLED + sAppTask.GetLCD().WriteDemoUI(lightOn); +#endif if (aActor == AppEvent::kEventType_Button) { diff --git a/examples/lock-app/efr32/BUILD.gn b/examples/lock-app/efr32/BUILD.gn index c98bebfed6d942..bb6530f56e5313 100644 --- a/examples/lock-app/efr32/BUILD.gn +++ b/examples/lock-app/efr32/BUILD.gn @@ -250,8 +250,15 @@ efr32_executable("lock_app") { } if (!disable_lcd) { - sources += [ "${examples_plat_dir}/display/lcd.c" ] - defines += [ "DISPLAY_ENABLED" ] + sources += [ + "${examples_plat_dir}/display/demo-ui.c", + "${examples_plat_dir}/display/lcd.cpp", + ] + include_dirs += [ "${examples_plat_dir}/display" ] + defines += [ + "DISPLAY_ENABLED", + "IS_DEMO_LOCK=1", + ] if (show_qr_code) { defines += [ "QR_CODE_ENABLED" ] deps += [ "${chip_root}/examples/common/QRCode" ] diff --git a/examples/lock-app/efr32/src/AppTask.cpp b/examples/lock-app/efr32/src/AppTask.cpp index 8b72c5aac4a28f..33a331c752920b 100644 --- a/examples/lock-app/efr32/src/AppTask.cpp +++ b/examples/lock-app/efr32/src/AppTask.cpp @@ -142,6 +142,10 @@ CHIP_ERROR AppTask::Init() { CHIP_ERROR err = CHIP_NO_ERROR; +#ifdef DISPLAY_ENABLED + GetLCD().Init((uint8_t *) "Lock-App", true); +#endif + err = BaseApplication::Init(&gIdentify); if (err != CHIP_NO_ERROR) { @@ -354,16 +358,14 @@ void AppTask::ButtonEventHandler(const sl_button_t * buttonHandle, uint8_t btnAc void AppTask::ActionInitiated(LockManager::Action_t aAction, int32_t aActor) { - // Action initiated, update the light led - if (aAction == LockManager::LOCK_ACTION) + if (aAction == LockManager::UNLOCK_ACTION || aAction == LockManager::LOCK_ACTION) { - EFR32_LOG("Lock Action has been initiated") - sLockLED.Set(false); - } - else if (aAction == LockManager::UNLOCK_ACTION) - { - EFR32_LOG("Unlock Action has been initiated") - sLockLED.Set(true); + bool locked = (aAction == LockManager::LOCK_ACTION); + EFR32_LOG("%s Action has been initiated", (locked) ? "Lock" : "Unlock"); + sLockLED.Set(!locked); +#ifdef DISPLAY_ENABLED + sAppTask.GetLCD().WriteDemoUI(locked); +#endif } if (aActor == AppEvent::kEventType_Button) diff --git a/examples/platform/efr32/BaseApplication.cpp b/examples/platform/efr32/BaseApplication.cpp index 47dbb9c001361d..2cdc4753ef572b 100644 --- a/examples/platform/efr32/BaseApplication.cpp +++ b/examples/platform/efr32/BaseApplication.cpp @@ -120,6 +120,10 @@ bool mFunctionTimerActive; Identify * gIdentifyptr = nullptr; +#ifdef DISPLAY_ENABLED +SilabsLCD slLCD; +#endif + } // namespace /********************************************************** @@ -214,7 +218,8 @@ CHIP_ERROR BaseApplication::Init(Identify * identifyObj) if (GetQRCode(QRCode, chip::RendezvousInformationFlags(chip::RendezvousInformationFlag::kBLE)) == CHIP_NO_ERROR) { - LCDWriteQRCode((uint8_t *) QRCode.data()); + slLCD.SetQRCode((uint8_t *) QRCode.data(), QRCode.size()); + slLCD.ShowQRCode(true, true); } else { @@ -386,6 +391,9 @@ void BaseApplication::ButtonHandler(AppEvent * aEvent) CancelFunctionTimer(); mFunction = kFunction_NoneSelected; + // TOGGLE QRCode/LCD demo UI + slLCD.ToggleQRCode(); + #ifdef SL_WIFI if (!ConnectivityMgr().IsWiFiStationProvisioned()) #else @@ -469,6 +477,13 @@ void BaseApplication::LightTimerEventHandler(TimerHandle_t xTimer) LightEventHandler(); } +#ifdef DISPLAY_ENABLED +SilabsLCD & BaseApplication::GetLCD(void) +{ + return slLCD; +} +#endif + void BaseApplication::PostEvent(const AppEvent * aEvent) { if (sAppEventQueue != NULL) diff --git a/examples/platform/efr32/BaseApplication.h b/examples/platform/efr32/BaseApplication.h index 41e2c1dbe64ffd..9c7ef22d8fe7d6 100644 --- a/examples/platform/efr32/BaseApplication.h +++ b/examples/platform/efr32/BaseApplication.h @@ -35,6 +35,14 @@ #include #include +#ifdef DISPLAY_ENABLED +#include "demo-ui.h" +#include "lcd.h" +#ifdef QR_CODE_ENABLED +#include "qrcodegen.h" +#endif // QR_CODE_ENABLED +#endif // DISPLAY_ENABLED + /********************************************************** * Defines *********************************************************/ @@ -73,6 +81,13 @@ class BaseApplication */ static void PostEvent(const AppEvent * event); +#ifdef DISPLAY_ENABLED + /** + * @brief Return LCD object + */ + static SilabsLCD & GetLCD(void); +#endif + /** * @brief Event handler when a button is pressed * Function posts an event for button processing @@ -165,8 +180,7 @@ class BaseApplication static void LightEventHandler(); /********************************************************** - * Private Attributes declaration + * Protected Attributes declaration *********************************************************/ - bool mSyncClusterToButtonAction; }; diff --git a/examples/platform/efr32/display/demo-ui-bitmaps.h b/examples/platform/efr32/display/demo-ui-bitmaps.h new file mode 100644 index 00000000000000..6f77ce4b733139 --- /dev/null +++ b/examples/platform/efr32/display/demo-ui-bitmaps.h @@ -0,0 +1,326 @@ +/***************************************************************************/ /** + * @file + * @brief User Interface bitmaps for demo. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. + *www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon + *Laboratories Inc. Your use of this software is + *governed by the terms of Silicon Labs Master + *Software License Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. + *This software is distributed to you in Source Code + *format and is governed by the sections of the MSLA + *applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SILABS_DEMO_UI_BITMAPS_H +#define SILABS_DEMO_UI_BITMAPS_H + +#define SILICONLABS_BITMAP_WIDTH 128 +#define SILICONLABS_BITMAP_HEIGHT 45 + +#define ZIGBEE_BITMAP_WIDTH 16 +#define ZIGBEE_BITMAP_HEIGHT 16 + +#define RAIL_BITMAP_WIDTH 16 +#define RAIL_BITMAP_HEIGHT 16 + +#define CONNECT_BITMAP_WIDTH 16 +#define CONNECT_BITMAP_HEIGHT 16 + +#define BLUETOOTH_BITMAP_WIDTH 16 +#define BLUETOOTH_BITMAP_HEIGHT 18 + +#define SILABS_BITMAP \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xfd, 0xff, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x3f, 0x00, \ + 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, \ + 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0xf0, 0xff, \ + 0xff, 0xff, 0x1f, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0xe0, 0xff, 0xff, 0xff, 0xc3, 0xff, \ + 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0xc0, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, \ + 0xff, 0x01, 0xc0, 0xff, 0xff, 0x07, 0xfc, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x80, 0xff, \ + 0xff, 0x01, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0xff, 0xff, \ + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x80, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf0, \ + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x80, 0xff, 0xff, 0xff, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x01, \ + 0x00, 0x00, 0xc0, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0xff, \ + 0x01, 0xc0, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xff, 0x00, 0xc0, 0xff, 0xff, \ + 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xf0, 0x7f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x0f, 0xfc, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xf8, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, \ + 0x0f, 0x00, 0xfc, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xc0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0xfe, 0x0f, \ + 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x1f, 0x00, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0x1f, 0x80, 0xff, 0x07, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0x3f, 0xf8, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, \ + 0x0f, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x0f, 0xfc, 0xff, 0x03, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x3f, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x83, 0xff, 0xff, 0x01, 0x00, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0xfc, 0xff, 0xff, 0xe1, 0xff, 0xff, 0x03, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, \ + 0xf8, 0xff, 0xff, 0x03, 0x00, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x03, \ + 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0x01, \ + 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x80, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, \ + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, \ + 0x1f, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + +#define THREAD_BITMAP_WIDTH 16 +#define THREAD_BITMAP_HEIGHT 18 + +#define THREAD_BITMAP \ + 0x1F, 0xF8, 0x07, 0xE0, 0x03, 0xCE, 0x01, 0x9F, 0x01, 0xB3, 0x00, 0x33, 0xF0, 0x3F, 0xF8, 0x1F, 0x0C, 0x03, 0x0C, 0x03, 0x18, \ + 0x03, 0x11, 0x83, 0x01, 0x83, 0x03, 0xC3, 0x07, 0xE3, 0x1F, 0xFB, 0x7f, 0xff, 0xff, 0xff + +#define WIFI_BITMAP_WIDTH 18 +#define WIFI_BITMAP_HEIGHT 18 + +#define WIFI_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0x01, 0xE0, 0x03, 0x00, 0xC7, 0xFF, 0xB8, 0xFF, 0xF7, 0x07, 0xF8, 0x0F, 0xC0, 0x3F, \ + 0x3F, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0x7F, 0xF8, 0xFF, 0xE1, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F + +#define MATTER_LOGO_WIDTH 18 +#define MATTER_LOGO_HEIGHT 17 + +#define MATTER_LOGO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xCF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFC, 0x3F, 0x12, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xF3, 0x3F, 0x8F, \ + 0x7F, 0xFC, 0xFC, 0xFC, 0xE3, 0xF1, 0x87, 0x87, 0xC7, 0xDE, 0x88, 0x33, 0xC7, 0xCF, 0xFC, 0xFF, 0xFF, 0x03 + +// APP Logo, boolean only. must be 64x64 +#if IS_DEMO_SWITCH +#define ON_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0xC0, 0xFF, 0xFF, 0x03, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, \ + 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, \ + 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0x1F, 0xE0, 0xFF, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0xC0, 0xFF, 0xFF, 0x03, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + +#define OFF_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, \ + 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0x3C, 0x00, 0x00, \ + 0x3C, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0xFF, \ + 0x3F, 0xF8, 0xFF, 0xFF, 0x1F, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +#elif IS_DEMO_LIGHT +#define ON_DEMO_BITMAP \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, \ + 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0x1f, 0xfe, 0x07, 0xe0, \ + 0x7f, 0xf8, 0xff, 0xff, 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xfc, 0xff, 0xff, 0x7f, 0x3c, 0xe0, 0x07, 0x3c, 0xfe, 0xff, 0xff, \ + 0xff, 0x1f, 0xfe, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, \ + 0xe3, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, \ + 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, \ + 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xff, 0x0f, 0x38, 0xfe, 0xff, 0xff, 0x7f, 0x1c, 0xf0, 0x0f, 0x38, 0xfe, 0x03, 0xc0, 0x7f, 0x1c, 0xf0, 0x0f, \ + 0x38, 0xfe, 0x27, 0xe9, 0x7f, 0x1c, 0xf0, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xe7, 0xe7, 0x7f, 0xfc, 0xff, 0xff, 0x7f, 0xfe, 0xef, 0xf7, 0x7f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xef, 0xf7, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xef, 0xf3, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xcf, 0xf3, \ + 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xdf, 0xfb, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xdf, 0xfb, 0x8f, 0xff, 0xff, 0xff, \ + 0xff, 0xe3, 0x9f, 0xf9, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x9f, 0xf9, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x9f, 0xfd, \ + 0xe3, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xbf, 0xfd, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x3f, 0xfc, 0xf8, 0xff, 0xff, 0xff, \ + 0xff, 0x3f, 0x3e, 0x7c, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, \ + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x8f, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + +#define OFF_DEMO_BITMAP \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x07, 0xfc, 0xff, 0xff, 0xff, \ + 0xff, 0x1f, 0xfe, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, \ + 0xe3, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, \ + 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, \ + 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, \ + 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, \ + 0x7f, 0xfc, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, \ + 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, \ + 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, \ + 0xe3, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, \ + 0xff, 0x3f, 0xfe, 0x7f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfc, 0x3f, \ + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x8f, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0x3f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +#elif IS_DEMO_LOCK +#define ON_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, \ + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xE0, 0x07, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x0F, 0xFC, 0x3F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x7F, \ + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, \ + 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x80, 0x01, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xFC, 0x3F, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0xFC, 0x3F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x80, 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + +#define OFF_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, \ + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xE0, 0x07, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x0F, 0xFC, 0x3F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x7F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x7F, \ + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x80, 0x01, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xFC, 0x3F, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0xFC, 0x3F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF8, 0x1F, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0xE0, 0x07, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x80, 0x01, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, \ + 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, \ + 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +#else // Unknown demo.... +#define ON_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, \ + 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0x0F, \ + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0xF8, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xF0, \ + 0x0F, 0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0xE0, 0x07, 0xFE, 0xFF, 0xFF, 0x7F, 0xC0, 0x03, 0xC0, 0x03, 0xFE, 0xFF, 0xFF, \ + 0x7F, 0xC0, 0x03, 0xC0, 0x03, 0xFE, 0xFF, 0xFF, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, \ + 0x8F, 0x01, 0x80, 0x01, 0x80, 0xF1, 0xFF, 0xFF, 0xCF, 0x03, 0xC0, 0x03, 0xC0, 0xF3, 0xFF, 0xFF, 0xEF, 0x07, 0xE0, 0x07, \ + 0xE0, 0xF7, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0x1F, 0xF8, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x3F, 0xFC, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0xFE, 0xFF, 0xFF, 0x3F, 0xFC, 0x3F, 0xFC, \ + 0x3F, 0xFC, 0xFF, 0xFF, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0xFF, 0xFF, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0xE0, 0x07, 0xE0, 0x07, 0xF8, 0xFF, 0xFF, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xFC, 0xFF, 0xFF, 0x3F, 0x80, 0x01, 0x80, \ + 0x01, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, \ + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + +#define OFF_DEMO_BITMAP \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, \ + 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, \ + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, \ + 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, \ + 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, \ + 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, \ + 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, \ + 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, \ + 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, \ + 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, \ + 0x00, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, \ + 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, \ + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0x1F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + +#endif + +#endif // SILABS_DEMO_UI_BITMAPS_H diff --git a/examples/platform/efr32/display/demo-ui.c b/examples/platform/efr32/display/demo-ui.c new file mode 100644 index 00000000000000..73a8d52ea71090 --- /dev/null +++ b/examples/platform/efr32/display/demo-ui.c @@ -0,0 +1,136 @@ +/** + * @file + * @brief User Interface core logic for demo. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. + *www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon + *Laboratories Inc. Your use of this software is + *governed by the terms of Silicon Labs Master + *Software License Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. + *This software is distributed to you in Source Code + *format and is governed by the sections of the MSLA + *applicable to Source Code. + * + ******************************************************************************/ + +#include "demo-ui.h" +#include "demo-ui-bitmaps.h" +#include "dmd/dmd.h" +#include "em_types.h" +#include "glib.h" +#include +#include + +// Main Logo and App image +#define SILICONLABS_X_POSITION ((glibContext.pDisplayGeometry->xSize - SILICONLABS_BITMAP_WIDTH) / 2) +#define SILICONLABS_Y_POSITION 0 +#define APP_BITMAP_WIDTH 64 +#define APP_BITMAP_HEIGHT 64 +#define APP_X_POSITION ((glibContext.pDisplayGeometry->xSize - APP_BITMAP_WIDTH) / 2) +#define APP_Y_POSITION (glibContext.pDisplayGeometry->ySize - APP_BITMAP_HEIGHT - 5) +#define PROT1_ID_X_POSITION 1 +#define PROT2_ID_X_POSITION 79 + +// Matter Logo +#define PROT2_BITMAP_WIDTH MATTER_LOGO_WIDTH +#define PROT2_BITMAP_HEIGHT MATTER_LOGO_HEIGHT +#define PROT2_X_POSITION 104 +#define PROT2_Y_POSITION (APP_Y_POSITION + (APP_Y_POSITION / 2)) +#define PROT2_BITMAP (matterLogoBitmap) +#define PROT2_BITMAP_CONN (matterLogoBitmap) + +// Networking Protocol Logo +#ifdef SL_WIFI +#define PROT1_BITMAP_WIDTH WIFI_BITMAP_WIDTH +#define PROT1_BITMAP_HEIGHT WIFI_BITMAP_HEIGHT +#define PROT1_X_POSITION 8 +#define PROT1_Y_POSITION (APP_Y_POSITION + (APP_Y_POSITION / 2)) +#define PROT1_BITMAP (networkBitMap) +#define PROT1_BITMAP_CONN (networkBitMap) +#else +#define PROT1_BITMAP_WIDTH THREAD_BITMAP_WIDTH +#define PROT1_BITMAP_HEIGHT THREAD_BITMAP_HEIGHT +#define PROT1_X_POSITION 8 +#define PROT1_Y_POSITION (APP_Y_POSITION + (APP_Y_POSITION / 2)) +#define PROT1_BITMAP (networkBitMap) +#define PROT1_BITMAP_CONN (networkBitMap) +#endif + +/******************************************************************************* + *************************** LOCAL VARIABLES ******************************** + ******************************************************************************/ +static GLIB_Context_t glibContext; /* Global glib context */ + +static const uint8_t siliconlabsBitmap[] = { SILABS_BITMAP }; +static const uint8_t matterLogoBitmap[] = { MATTER_LOGO_BITMAP }; + +static const uint8_t OnStateBitMap[] = { ON_DEMO_BITMAP }; +static const uint8_t OffStateBitMap[] = { OFF_DEMO_BITMAP }; + +#ifdef SL_WIFI +static const uint8_t networkBitMap[] = { WIFI_BITMAP }; +#else +static const uint8_t networkBitMap[] = { THREAD_BITMAP }; +#endif + +// Future usage +// static const uint8_t unconnectedBitMap[] = { QUESTION_MARK_BITMAP }; + +/******************************************************************************* + ************************** LOCAL FUNCTIONS ******************************** + ******************************************************************************/ +static void demoUIDisplayLogo(void) +{ + GLIB_drawBitmap(&glibContext, SILICONLABS_X_POSITION, SILICONLABS_Y_POSITION, SILICONLABS_BITMAP_WIDTH, + SILICONLABS_BITMAP_HEIGHT, siliconlabsBitmap); +} + +/******************************************************************************* + ************************** GLOBAL FUNCTIONS ******************************* + ******************************************************************************/ +void demoUIInit(GLIB_Context_t * context) +{ + memcpy(&glibContext, context, sizeof(GLIB_Context_t)); +} + +void demoUIDisplayHeader(char * name) +{ + demoUIDisplayLogo(); + if (APP_NAME_MAX_LENGTH >= strlen(name)) + { + GLIB_drawStringOnLine(&glibContext, name, 5, GLIB_ALIGN_CENTER, 0, 0, true); + } + DMD_updateDisplay(); +} + +void demoUIDisplayApp(bool on) +{ + GLIB_drawBitmap(&glibContext, APP_X_POSITION, APP_Y_POSITION, APP_BITMAP_WIDTH, APP_BITMAP_HEIGHT, + (on ? OnStateBitMap : OffStateBitMap)); + DMD_updateDisplay(); +} + +void demoUIDisplayProtocol(demoUIProtocol protocol, bool isConnected) +{ + GLIB_drawBitmap(&glibContext, (protocol == DEMO_UI_PROTOCOL1 ? PROT1_X_POSITION : PROT2_X_POSITION), + (protocol == DEMO_UI_PROTOCOL1 ? PROT1_Y_POSITION : PROT2_Y_POSITION), + (protocol == DEMO_UI_PROTOCOL1 ? PROT1_BITMAP_WIDTH : PROT2_BITMAP_WIDTH), + (protocol == DEMO_UI_PROTOCOL1 ? PROT1_BITMAP_HEIGHT : PROT2_BITMAP_HEIGHT), + (protocol == DEMO_UI_PROTOCOL1 ? (isConnected ? PROT1_BITMAP_CONN : PROT1_BITMAP) + : (isConnected ? PROT2_BITMAP_CONN : PROT2_BITMAP))); + DMD_updateDisplay(); +} + +void demoUIClearMainScreen(uint8_t * name) +{ + GLIB_clear(&glibContext); + demoUIDisplayHeader((char *) name); + demoUIDisplayApp(false); + demoUIDisplayProtocol(DEMO_UI_PROTOCOL1, false); + demoUIDisplayProtocol(DEMO_UI_PROTOCOL2, false); +} diff --git a/examples/platform/efr32/display/demo-ui.h b/examples/platform/efr32/display/demo-ui.h new file mode 100644 index 00000000000000..6197a4e73c71ef --- /dev/null +++ b/examples/platform/efr32/display/demo-ui.h @@ -0,0 +1,139 @@ +/***************************************************************************/ /** + * @file + * @brief User Interface for demo. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. + *www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon + *Laboratories Inc. Your use of this software is + *governed by the terms of Silicon Labs Master + *Software License Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. + *This software is distributed to you in Source Code + *format and is governed by the sections of the MSLA + *applicable to Source Code. + * + ******************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "glib.h" +/**************************************************************************/ /** + * DEMO UI uses the underlying DMD interface and the + *GLIB and exposes several wrapper functions to + *application. These functions are used to display + * different bitmaps for the demo. + * + ******************************************************************************/ + +#define APP_NAME_MAX_LENGTH 20 + +/******************************************************************************* + ******************************** ENUMS ************************************ + ******************************************************************************/ + +typedef enum +{ + DEMO_UI_PROTOCOL1, + DEMO_UI_PROTOCOL2 +} demoUIProtocol; + +typedef enum +{ + DEMO_UI_LIGHT_OFF, + DEMO_UI_LIGHT_ON +} demoUILightState_t; + +typedef enum +{ + DEMO_UI_DIRECTION_PROT1, + DEMO_UI_DIRECTION_PROT2, + DEMO_UI_DIRECTION_SWITCH, + DEMO_UI_DIRECTION_INVALID +} demoUILightDirection_t; + +typedef enum +{ + DEMO_UI_NO_NETWORK, + DEMO_UI_SCANNING, + DEMO_UI_JOINING, + DEMO_UI_FORMING, + DEMO_UI_NETWORK_UP, + DEMO_UI_STATE_UNKNOWN +} demoUIZigBeeNetworkState_t; + +/******************************************************************************* + ****************************** PROTOTYPES ********************************* + ******************************************************************************/ + +/**************************************************************************/ /** + * @brief + * Initilize the GLIB and DMD interfaces. + * + * @param[in] void + * + * @return + * void + *****************************************************************************/ +void demoUIInit(GLIB_Context_t * context); + +/**************************************************************************/ /** + * @brief + * Update the display with Silicon Labs logo and + *application name. + * + * @param[in] name name of the current application. + * + * @return + * void + *****************************************************************************/ +void demoUIDisplayHeader(char * name); + +/**************************************************************************/ /** + * @brief + * Update the display with App image. Bool state only + *for now. + * + * @param[in] on status of App + * + * @return + * void + *****************************************************************************/ +void demoUIDisplayApp(bool on); + +/**************************************************************************/ /** + * @brief + * Update the display to show if the bluetooth is + *connected to the mobile device. + * + * @param[in] bool, true if the Light is connected to + *mobile device, false otherwise. + * + * @return + * void + *****************************************************************************/ +void demoUIDisplayProtocol(demoUIProtocol protocol, bool isConnected); + +/**************************************************************************/ /** + * @brief + * Clear the Lcd screen and display the main screen. + * + * @param[in] name - application name + * @param[in] showPROT1 - show protocol 1 related icon. + * @param[in] showPROT2 - show protocol 2 related icon. + * + * @return + * void + *****************************************************************************/ +void demoUIClearMainScreen(uint8_t * name); + +#ifdef __cplusplus +} +#endif diff --git a/examples/platform/efr32/display/lcd.c b/examples/platform/efr32/display/lcd.cpp similarity index 62% rename from examples/platform/efr32/display/lcd.c rename to examples/platform/efr32/display/lcd.cpp index a62f89c8ba25ab..9b66cfe1f024cc 100644 --- a/examples/platform/efr32/display/lcd.c +++ b/examples/platform/efr32/display/lcd.cpp @@ -19,6 +19,7 @@ #include #include +#include "demo-ui.h" #include "lcd.h" #include "dmd.h" @@ -35,25 +36,36 @@ #define QR_CODE_MODULE_SIZE 3 #define QR_CODE_BORDER_SIZE 0 -static GLIB_Context_t glibContext; #ifdef QR_CODE_ENABLED static uint8_t qrCode[qrcodegen_BUFFER_LEN_FOR_VERSION(QR_CODE_VERSION)]; static uint8_t workBuffer[qrcodegen_BUFFER_LEN_FOR_VERSION(QR_CODE_VERSION)]; #endif // QR_CODE_ENABLED -#ifdef QR_CODE_ENABLED -static void LCDFillRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h); -#endif // QR_CODE_ENABLED - -void initLCD(void) +CHIP_ERROR SilabsLCD::Init(uint8_t * name, bool initialState) { EMSTATUS status; + CHIP_ERROR err = CHIP_NO_ERROR; + + // Check if Name is to long + if (name != nullptr) + { + if (APP_NAME_MAX_LENGTH < strlen((char *) name)) + { + EFR32_LOG("App Name too long"); + return CHIP_ERROR_INVALID_ARGUMENT; + } + else + { + strcpy((char *) mName, (char *) name); + } + } /* Enable the memory lcd */ status = sl_board_enable_display(); - if (status == SL_STATUS_OK) + if (status != SL_STATUS_OK) { EFR32_LOG("Board Display enable fail %d", status); + err = CHIP_ERROR_INTERNAL; } /* Initialize the DMD module for the DISPLAY device driver. */ @@ -61,6 +73,7 @@ void initLCD(void) if (DMD_OK != status) { EFR32_LOG("DMD init failed %d", status); + err = CHIP_ERROR_INTERNAL; } /* Initialize the glib context */ @@ -68,6 +81,7 @@ void initLCD(void) if (GLIB_OK != status) { EFR32_LOG("Glib context init failed %d", status); + err = CHIP_ERROR_INTERNAL; } glibContext.backgroundColor = White; @@ -76,34 +90,57 @@ void initLCD(void) if (GLIB_OK != status) { EFR32_LOG("Glib clear failed %d", status); + err = CHIP_ERROR_INTERNAL; } + demoUIInit(&glibContext); + + dState.mainState = initialState; + + return err; } /* This function is necessary because currently glib.h cannot be used within a C++ context. */ -void * LCDContext() +void * SilabsLCD::Context() { return (void *) &glibContext; } -int LCD_clear(void * pContext) +int SilabsLCD::Clear() { - return GLIB_clear((GLIB_Context_t *) pContext); + return GLIB_clear(&glibContext); } -int LCD_drawPixel(void * pContext, int32_t x, int32_t y) +int SilabsLCD::DrawPixel(void * pContext, int32_t x, int32_t y) { return GLIB_drawPixel((GLIB_Context_t *) pContext, x, y); } -int LCD_update(void) +int SilabsLCD::Update(void) { return DMD_updateDisplay(); } +void SilabsLCD::WriteDemoUI(bool state) +{ + if (mShowQRCode) + { + mShowQRCode = false; + } + dState.mainState = state; + WriteDemoUI(); +} + +void SilabsLCD::WriteDemoUI() +{ + Clear(); + demoUIClearMainScreen(mName); + demoUIDisplayApp(dState.mainState); +} + #ifdef QR_CODE_ENABLED -void LCDWriteQRCode(uint8_t * str) +void SilabsLCD::WriteQRCode() { - if (!qrcodegen_encodeText((const char *) str, workBuffer, qrCode, qrcodegen_Ecc_LOW, QR_CODE_VERSION, QR_CODE_VERSION, + if (!qrcodegen_encodeText((const char *) mQRCodeBuffer, workBuffer, qrCode, qrcodegen_Ecc_LOW, QR_CODE_VERSION, QR_CODE_VERSION, qrcodegen_Mask_AUTO, true)) { EFR32_LOG("qrcodegen_encodeText() failed"); @@ -133,7 +170,30 @@ void LCDWriteQRCode(uint8_t * str) DMD_updateDisplay(); } -void LCDFillRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h) +void SilabsLCD::SetQRCode(uint8_t * str, uint32_t size) +{ + if (size < chip::QRCodeBasicSetupPayloadGenerator::kMaxQRCodeBase38RepresentationLength + 1) + { + memcpy(mQRCodeBuffer, str, size); + } +} + +void SilabsLCD::ShowQRCode(bool show, bool forceRefresh) +{ + if (show != mShowQRCode || forceRefresh) + { + (show) ? WriteQRCode() : WriteDemoUI(); + mShowQRCode = show; + } +} + +void SilabsLCD::ToggleQRCode(void) +{ + (mShowQRCode) ? WriteDemoUI() : WriteQRCode(); + mShowQRCode = !mShowQRCode; +} + +void SilabsLCD::LCDFillRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h) { for (int i = 0; i < h; i++) { diff --git a/examples/platform/efr32/display/lcd.h b/examples/platform/efr32/display/lcd.h new file mode 100644 index 00000000000000..c9729e15d05de4 --- /dev/null +++ b/examples/platform/efr32/display/lcd.h @@ -0,0 +1,71 @@ +/* + * + * Copyright (c) 2020 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "AppConfig.h" +#include "glib.h" +#ifdef QR_CODE_ENABLED +#include "qrcodegen.h" +#include +#endif // QR_CODE_ENABLED + +#include "demo-ui.h" + +#define MAX_STR_LEN 48 + +class SilabsLCD +{ + +public: + CHIP_ERROR Init(uint8_t * name = nullptr, bool initialState = false); + void * Context(); + int Clear(void); + int DrawPixel(void * pContext, int32_t x, int32_t y); + int Update(void); + void WriteDemoUI(bool state); +#ifdef QR_CODE_ENABLED + void SetQRCode(uint8_t * str, uint32_t size); + void ShowQRCode(bool show, bool forceRefresh = false); + void ToggleQRCode(void); +#endif + +private: + typedef struct demoState + { + bool mainState = false; + bool protocol1 = false; /* data */ + } DemoState_t; + + void WriteQRCode(); + void WriteDemoUI(); +#ifdef QR_CODE_ENABLED + void LCDFillRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h); + char mQRCodeBuffer[chip::QRCodeBasicSetupPayloadGenerator::kMaxQRCodeBase38RepresentationLength + 1]; + bool mShowQRCode = true; +#endif + GLIB_Context_t glibContext; + +#ifdef SL_DEMO_NAME + uint8_t mName[] = SL_DEMO_NAME +#else + uint8_t mName[APP_NAME_MAX_LENGTH + 1]; +#endif + + DemoState_t dState; +}; diff --git a/examples/platform/efr32/init_efrPlatform.cpp b/examples/platform/efr32/init_efrPlatform.cpp index d0fb913165c469..a0e33702b40e68 100644 --- a/examples/platform/efr32/init_efrPlatform.cpp +++ b/examples/platform/efr32/init_efrPlatform.cpp @@ -56,10 +56,6 @@ extern "C" { #include "sl_mbedtls.h" #include "sl_system_init.h" -#if DISPLAY_ENABLED -#include "lcd.h" -#endif - void initAntenna(void); void init_efrPlatform(void) @@ -67,10 +63,6 @@ void init_efrPlatform(void) sl_system_init(); sl_mbedtls_init(); -#if DISPLAY_ENABLED - initLCD(); -#endif - #if EFR32_LOG_ENABLED efr32InitLog(); #endif diff --git a/examples/platform/efr32/lcd.h b/examples/platform/efr32/lcd.h deleted file mode 100644 index b3702305d40f69..00000000000000 --- a/examples/platform/efr32/lcd.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * - * Copyright (c) 2020 Project CHIP Authors - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "AppConfig.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define MAX_STR_LEN 48 - -void initLCD(void); -void * LCDContext(); -int LCD_clear(void * pContext); -int LCD_drawPixel(void * pContext, int32_t x, int32_t y); -int LCD_update(void); -void LCDWriteQRCode(uint8_t * str); - -#ifdef __cplusplus -} -#endif diff --git a/examples/window-app/efr32/BUILD.gn b/examples/window-app/efr32/BUILD.gn index bcd17e3b6dddcf..7d2bfbec6dca1f 100644 --- a/examples/window-app/efr32/BUILD.gn +++ b/examples/window-app/efr32/BUILD.gn @@ -237,9 +237,11 @@ efr32_executable("window_app") { if (!disable_lcd) { sources += [ - "${examples_plat_dir}/display/lcd.c", + "${examples_plat_dir}/display/demo-ui.c", + "${examples_plat_dir}/display/lcd.cpp", "src/LcdPainter.cpp", ] + include_dirs += [ "${examples_plat_dir}/display" ] defines += [ "DISPLAY_ENABLED" ] if (show_qr_code) { diff --git a/examples/window-app/efr32/include/LcdPainter.h b/examples/window-app/efr32/include/LcdPainter.h index 448c750e166613..4a30bdede2c3ea 100644 --- a/examples/window-app/efr32/include/LcdPainter.h +++ b/examples/window-app/efr32/include/LcdPainter.h @@ -23,6 +23,8 @@ #include "app-common/app-common/zap-generated/cluster-enums.h" // clang-format on +#include + #include enum class LcdIcon @@ -104,7 +106,7 @@ class VerticalBlindPainter : public PixelPainter class LcdPainter { public: - static void Paint(chip::app::Clusters::WindowCovering::Type type, uint16_t lift, uint16_t tilt, LcdIcon icon); + static void Paint(SilabsLCD & lcd, chip::app::Clusters::WindowCovering::Type type, uint16_t lift, uint16_t tilt, LcdIcon icon); private: static PixelPainter * GetCoverPainter(chip::app::Clusters::WindowCovering::Type type, uint16_t lift, uint16_t tilt); diff --git a/examples/window-app/efr32/src/LcdPainter.cpp b/examples/window-app/efr32/src/LcdPainter.cpp index 6ff452cf197eee..e1a8041f075c79 100644 --- a/examples/window-app/efr32/src/LcdPainter.cpp +++ b/examples/window-app/efr32/src/LcdPainter.cpp @@ -18,7 +18,6 @@ */ #include -#include using namespace chip::app::Clusters::WindowCovering; @@ -202,15 +201,15 @@ PixelPainter * LcdPainter::GetCoverPainter(Type type, uint16_t lift, uint16_t ti return nullptr; } -void LcdPainter::Paint(Type type, uint16_t lift, uint16_t tilt, LcdIcon icon) +void LcdPainter::Paint(SilabsLCD & lcd, Type type, uint16_t lift, uint16_t tilt, LcdIcon icon) { FramePainter framePaint = FramePainter(lift, tilt); IconPainter iconPaint = IconPainter(lift, tilt, icon); PixelPainter * coverPaint = GetCoverPainter(type, lift, tilt); CompositePainter compositePaint = CompositePainter(lift, tilt, &framePaint, &iconPaint, coverPaint); - void * context = LCDContext(); + void * context = lcd.Context(); - LCD_clear(context); + lcd.Clear(); for (int i = 0; i < LCD_SIZE; i++) { @@ -218,10 +217,10 @@ void LcdPainter::Paint(Type type, uint16_t lift, uint16_t tilt, LcdIcon icon) { if (compositePaint.Color(i, j)) { - LCD_drawPixel(context, i, j); + lcd.DrawPixel(context, i, j); } } } - LCD_update(); + lcd.Update(); delete coverPaint; } diff --git a/examples/window-app/efr32/src/WindowAppImpl.cpp b/examples/window-app/efr32/src/WindowAppImpl.cpp index 2330bade5d2506..8ccfa97ea098a7 100644 --- a/examples/window-app/efr32/src/WindowAppImpl.cpp +++ b/examples/window-app/efr32/src/WindowAppImpl.cpp @@ -129,6 +129,10 @@ StaticQueue_t sAppEventQueueStruct; WindowAppImpl WindowAppImpl::sInstance; +#ifdef DISPLAY_ENABLED +SilabsLCD slLCD; +#endif + WindowApp & WindowApp::Instance() { return WindowAppImpl::sInstance; @@ -184,6 +188,10 @@ CHIP_ERROR WindowAppImpl::Init() mStatusLED.Init(APP_STATE_LED); mActionLED.Init(APP_ACTION_LED); +#ifdef DISPLAY_ENABLED + slLCD.Init(); +#endif + return CHIP_NO_ERROR; } @@ -427,7 +435,7 @@ void WindowAppImpl::UpdateLCD() if (!tilt.IsNull() && !lift.IsNull()) { - LcdPainter::Paint(type, lift.Value(), tilt.Value(), mIcon); + LcdPainter::Paint(slLCD, type, lift.Value(), tilt.Value(), mIcon); } } #ifdef QR_CODE_ENABLED @@ -436,7 +444,8 @@ void WindowAppImpl::UpdateLCD() chip::MutableCharSpan qrCode(mQRCodeBuffer); if (GetQRCode(qrCode, chip::RendezvousInformationFlags(chip::RendezvousInformationFlag::kBLE)) == CHIP_NO_ERROR) { - LCDWriteQRCode((uint8_t *) qrCode.data()); + slLCD.SetQRCode((uint8_t *) qrCode.data(), qrCode.size()); + slLCD.ShowQRCode(true, true); } } #endif // QR_CODE_ENABLED From 1f83af040a4a04b605c863757082e475a922c5e3 Mon Sep 17 00:00:00 2001 From: davidgoogle <49926720+davidgoogle@users.noreply.github.com> Date: Fri, 19 Aug 2022 12:34:34 -0700 Subject: [PATCH 10/44] chip-cert-bins: Adds python bindings for test harness use. (#22033) --- integrations/docker/images/chip-cert-bins/Dockerfile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/integrations/docker/images/chip-cert-bins/Dockerfile b/integrations/docker/images/chip-cert-bins/Dockerfile index 7cb52537acbcff..2aa6f10e767fb0 100644 --- a/integrations/docker/images/chip-cert-bins/Dockerfile +++ b/integrations/docker/images/chip-cert-bins/Dockerfile @@ -254,12 +254,14 @@ RUN case ${TARGETPLATFORM} in \ RUN npm --prefix third_party/zap/repo/ ci RUN scripts/examples/gn_build_test_example.sh app1 +RUN source scripts/activate.sh && scripts/build_python.sh -m platform -d true -i no + # Stage 3: Copy relevant cert bins to a minimal image to reduce size. FROM ubuntu:22.04 ENV TZ=Etc/UTC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update -y -RUN apt-get install -y libssl-dev libdbus-1-dev libglib2.0-dev libavahi-client-dev avahi-utils iproute2 +RUN apt-get install -y libssl-dev libdbus-1-dev libglib2.0-dev libavahi-client-dev avahi-utils iproute2 libcairo2-dev libgirepository1.0-dev python3-pip WORKDIR /root/ COPY --from=chip-build-cert-bins /root/.sdk-sha-version .sdk-sha-version COPY --from=chip-build-cert-bins /root/connectedhomeip/out/debug/chip-tool chip-tool @@ -276,3 +278,8 @@ COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-ota-provider-app COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-ota-requestor-app chip-ota-requestor-app COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-lock-app chip-lock-app COPY --from=chip-build-cert-bins /root/connectedhomeip/out/app1/chip-app1 chip-app1 + +# Stage 3.1 Setup the Matter Python environment +COPY --from=chip-build-cert-bins /root/connectedhomeip/out/python_lib python_lib +COPY --from=chip-build-cert-bins /root/connectedhomeip/src/python_testing python_testing +RUN pip install --no-cache-dir python_lib/controller/python/chip*.whl From c5f7c91650e0b949f0ec220e3f83306ace271c7a Mon Sep 17 00:00:00 2001 From: shgutte <102281713+shgutte@users.noreply.github.com> Date: Sat, 20 Aug 2022 02:47:04 +0530 Subject: [PATCH 11/44] Added fix for WF200 ap not found issue (#22039) --- third_party/silabs/matter_support | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/silabs/matter_support b/third_party/silabs/matter_support index c9d65e0111fb77..16c1ed8eca039b 160000 --- a/third_party/silabs/matter_support +++ b/third_party/silabs/matter_support @@ -1 +1 @@ -Subproject commit c9d65e0111fb7708d41f86bc999bb22de43b5915 +Subproject commit 16c1ed8eca039bb9527421411bd605de8ce21442 From 056f0164ad6e18377fd27e8d83399a8f78eec9a0 Mon Sep 17 00:00:00 2001 From: Shubham Patil Date: Sat, 20 Aug 2022 03:02:49 +0530 Subject: [PATCH 12/44] Install ccache to chip-build docker image (#21994) --- integrations/docker/images/chip-build/Dockerfile | 1 + integrations/docker/images/chip-build/version | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/integrations/docker/images/chip-build/Dockerfile b/integrations/docker/images/chip-build/Dockerfile index b09c9c9dd43fbd..bfcfea5e40e755 100644 --- a/integrations/docker/images/chip-build/Dockerfile +++ b/integrations/docker/images/chip-build/Dockerfile @@ -11,6 +11,7 @@ RUN set -x \ automake \ bison \ bridge-utils \ + ccache \ clang \ clang-format \ clang-tidy \ diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version index 6b92033b6525c6..0791656d59351a 100644 --- a/integrations/docker/images/chip-build/version +++ b/integrations/docker/images/chip-build/version @@ -1 +1 @@ -0.5.93 Version bump reason: [ESP32] Update ESP-IDF to release v4.4.2 +0.5.94 Version bump reason: Install ccache to the chip-build image From 932bf7eb56ac8dab892d6f18cde7e18a7c6a8c91 Mon Sep 17 00:00:00 2001 From: Daniel Nicoara Date: Fri, 19 Aug 2022 17:56:27 -0400 Subject: [PATCH 13/44] Fix include-what-you-use type errors (#22020) Allows files to be compiled in isolation. --- src/lib/support/PersistedCounter.h | 1 + src/transport/SessionUpdateDelegate.h | 1 + 2 files changed, 2 insertions(+) diff --git a/src/lib/support/PersistedCounter.h b/src/lib/support/PersistedCounter.h index f17434aab40305..9261da6ac9faff 100644 --- a/src/lib/support/PersistedCounter.h +++ b/src/lib/support/PersistedCounter.h @@ -30,6 +30,7 @@ #include #include #include +#include #include namespace chip { diff --git a/src/transport/SessionUpdateDelegate.h b/src/transport/SessionUpdateDelegate.h index 3dc01f88632ab5..741245d04c84fc 100644 --- a/src/transport/SessionUpdateDelegate.h +++ b/src/transport/SessionUpdateDelegate.h @@ -17,6 +17,7 @@ #pragma once #include +#include namespace chip { From dfc1a7096b90d718bb821f84333ce4f64fb144c1 Mon Sep 17 00:00:00 2001 From: Tennessee Carmel-Veilleux Date: Fri, 19 Aug 2022 18:20:12 -0400 Subject: [PATCH 14/44] Introduce initial TC-RR-1.1 (#22032) * Introduce initial TC-RR-1.1 - TC-RR-1.1 is a critical test to validate multi-fabric behavior is stable and actually works. The test, broadly, validates most of the minimas of the core elements of the spec, including ACL entries, certificate sizes, number of CASE sessions and subscriptions, number of paths, etc. Issue #21736 - This PR introduces the core test and all associated minor changes to infrastructure to make it work. - Still TODO: - More extensive cert size maximization (closer to 400 TLV bytes) - Add controller and commissionee CAT tags (test is 95% equivalent to test plan, but a couple ACL fields differ because of this, in ways that don't detract from proving what needs proving - Validation that local/peer session IDs have not changed. This is not technically needed with the SDK as-is based on the methodology but it would future-proof the test against some future optimizations that may change subscription behavior in a way that the test would not validate CASE sessions remain. - Clean-up more after the test, so that a factory reset before/after is not needed. Testing done: - Passes on Linux against all-clusters, all-clusters-minimal and lighting app, with both minimal mdns and Avahi. - Passes on some other platforms (not named here) To run within SDK (from scratch: the build steps can be skipped thereafter): - In one terminal: - Build chip-lighting-app linux - `clear && rm -f kvs1 && out/debug/standalone/chip-lighting-app --discriminator 1234 --KVS kvs1 --trace_decode 1` - In another terminal: - Build - `rm -rf out/python*` - `scripts/build_python.sh -m platform -i separate` - Run - `source ./out/python_env/bin/activate` - `python3 src/python_testing/TC_RR_1_1.py --commissioning-method on-network --long-discriminator 1234 --passcode 20202021` - Add `--bool-arg skip_user_label_cluster_steps:true` to the end of the command line if your DUT has broken UserLabel clusters (but if you have those, fix them :) * More work towards CAT tags * Address review comments * Fixed CAT tag testing * Update src/controller/python/chip/utils/CommissioningBuildingBlocks.py Co-authored-by: Jerry Johns --- .../chip-tool/commands/common/CHIPCommand.cpp | 6 + .../chip-tool/commands/common/CHIPCommand.h | 4 + .../common/CredentialIssuerCommands.h | 19 + .../example/ExampleCredentialIssuerCommands.h | 27 ++ .../ExampleOperationalCredentialsIssuer.cpp | 168 ++++++- .../ExampleOperationalCredentialsIssuer.h | 7 +- src/controller/python/OpCredsBinding.cpp | 16 +- .../python/chip/CertificateAuthority.py | 24 +- src/controller/python/chip/FabricAdmin.py | 2 +- .../chip/utils/CommissioningBuildingBlocks.py | 36 +- .../python/test/test_scripts/base.py | 22 +- src/python_testing/TC_RR_1_1.py | 424 ++++++++++++++++++ src/python_testing/matter_testing_support.py | 38 +- 13 files changed, 744 insertions(+), 49 deletions(-) create mode 100644 src/python_testing/TC_RR_1_1.py diff --git a/examples/chip-tool/commands/common/CHIPCommand.cpp b/examples/chip-tool/commands/common/CHIPCommand.cpp index 663ebee8257d61..89dd1d536e4550 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.cpp +++ b/examples/chip-tool/commands/common/CHIPCommand.cpp @@ -358,6 +358,12 @@ CHIP_ERROR CHIPCommand::InitializeCommissioner(std::string key, chip::FabricId f // store the credentials in persistent storage, and // generate when not available in the storage. ReturnLogErrorOnFailure(mCommissionerStorage.Init(key.c_str())); + if (mUseMaxSizedCerts.HasValue()) + { + auto option = CredentialIssuerCommands::CredentialIssuerOptions::kMaximizeCertificateSizes; + mCredIssuerCmds->SetCredentialIssuerOption(option, mUseMaxSizedCerts.Value()); + } + ReturnLogErrorOnFailure(mCredIssuerCmds->InitializeCredentialsIssuer(mCommissionerStorage)); chip::MutableByteSpan nocSpan(noc.Get(), chip::Controller::kMaxCHIPDERCertLength); diff --git a/examples/chip-tool/commands/common/CHIPCommand.h b/examples/chip-tool/commands/common/CHIPCommand.h index 1714928ea1096c..7dd36a7c7d6214 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.h +++ b/examples/chip-tool/commands/common/CHIPCommand.h @@ -70,6 +70,9 @@ class CHIPCommand : public Command "4. The default if not specified is \"alpha\"."); AddArgument("commissioner-nodeid", 0, UINT64_MAX, &mCommissionerNodeId, "The node id to use for chip-tool. If not provided, kTestControllerNodeId (112233, 0x1B669) will be used."); + AddArgument("use-max-sized-certs", 0, 1, &mUseMaxSizedCerts, + "Maximize the size of operational certificates. If not provided or 0 (\"false\"), normally sized operational " + "certificates are generated."); #if CHIP_CONFIG_TRANSPORT_TRACE_ENABLED AddArgument("trace_file", &mTraceFile); AddArgument("trace_log", 0, 1, &mTraceLog); @@ -153,6 +156,7 @@ class CHIPCommand : public Command chip::Optional mCommissionerNodeId; chip::Optional mBleAdapterId; chip::Optional mPaaTrustStorePath; + chip::Optional mUseMaxSizedCerts; // Cached trust store so commands other than the original startup command // can spin up commissioners as needed. diff --git a/examples/chip-tool/commands/common/CredentialIssuerCommands.h b/examples/chip-tool/commands/common/CredentialIssuerCommands.h index 951ef86efceb40..cc04863ee2f8b6 100644 --- a/examples/chip-tool/commands/common/CredentialIssuerCommands.h +++ b/examples/chip-tool/commands/common/CredentialIssuerCommands.h @@ -74,4 +74,23 @@ class CredentialIssuerCommands virtual CHIP_ERROR GenerateControllerNOCChain(chip::NodeId nodeId, chip::FabricId fabricId, const chip::CATValues & cats, chip::Crypto::P256Keypair & keypair, chip::MutableByteSpan & rcac, chip::MutableByteSpan & icac, chip::MutableByteSpan & noc) = 0; + + // All options must start false + enum CredentialIssuerOptions : uint8_t + { + kMaximizeCertificateSizes = 0, // If set, certificate chains will be maximized for testing via padding + }; + + virtual void SetCredentialIssuerOption(CredentialIssuerOptions option, bool isEnabled) + { + // Do nothing + (void) option; + (void) isEnabled; + } + + virtual bool GetCredentialIssuerOption(CredentialIssuerOptions option) + { + // All options always start false + return false; + } }; diff --git a/examples/chip-tool/commands/example/ExampleCredentialIssuerCommands.h b/examples/chip-tool/commands/example/ExampleCredentialIssuerCommands.h index 74646c8b5f10ba..40a2871b19437b 100644 --- a/examples/chip-tool/commands/example/ExampleCredentialIssuerCommands.h +++ b/examples/chip-tool/commands/example/ExampleCredentialIssuerCommands.h @@ -49,6 +49,33 @@ class ExampleCredentialIssuerCommands : public CredentialIssuerCommands return mOpCredsIssuer.GenerateNOCChainAfterValidation(nodeId, fabricId, cats, keypair.Pubkey(), rcac, icac, noc); } + void SetCredentialIssuerOption(CredentialIssuerOptions option, bool isEnabled) override + { + switch (option) + { + case CredentialIssuerOptions::kMaximizeCertificateSizes: + mUsesMaxSizedCerts = isEnabled; + mOpCredsIssuer.SetMaximallyLargeCertsUsed(mUsesMaxSizedCerts); + break; + default: + break; + } + } + + bool GetCredentialIssuerOption(CredentialIssuerOptions option) override + { + switch (option) + { + case CredentialIssuerOptions::kMaximizeCertificateSizes: + return mUsesMaxSizedCerts; + default: + return false; + } + } + +protected: + bool mUsesMaxSizedCerts = false; + private: chip::Controller::ExampleOperationalCredentialsIssuer mOpCredsIssuer; }; diff --git a/src/controller/ExampleOperationalCredentialsIssuer.cpp b/src/controller/ExampleOperationalCredentialsIssuer.cpp index cc8cd8fbcdb404..9c0b376b13716c 100644 --- a/src/controller/ExampleOperationalCredentialsIssuer.cpp +++ b/src/controller/ExampleOperationalCredentialsIssuer.cpp @@ -39,6 +39,127 @@ using namespace Credentials; using namespace Crypto; using namespace TLV; +namespace { + +enum CertType : uint8_t +{ + kRcac = 0, + kIcac = 1, + kNoc = 2 +}; + +CHIP_ERROR IssueX509Cert(uint32_t now, uint32_t validity, ChipDN issuerDn, ChipDN desiredDn, CertType certType, bool maximizeSize, + const Crypto::P256PublicKey & subjectPublicKey, Crypto::P256Keypair & issuerKeypair, + MutableByteSpan & outX509Cert) +{ + constexpr size_t kDERCertDnEncodingOverhead = 11; + constexpr size_t kTLVCertDnEncodingOverhead = 3; + constexpr size_t kMaxCertPaddingLength = 150; + constexpr size_t kTLVDesiredSize = kMaxCHIPCertLength - 50; + + Platform::ScopedMemoryBuffer derBuf; + ReturnErrorCodeIf(!derBuf.Alloc(kMaxDERCertLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan derSpan{ derBuf.Get(), kMaxDERCertLength }; + + int64_t serialNumber = 1; + + switch (certType) + { + case CertType::kRcac: { + X509CertRequestParams rcacRequest = { serialNumber, now, now + validity, desiredDn, desiredDn }; + ReturnErrorOnFailure(NewRootX509Cert(rcacRequest, issuerKeypair, derSpan)); + break; + } + case CertType::kIcac: { + X509CertRequestParams icacRequest = { serialNumber, now, now + validity, desiredDn, issuerDn }; + ReturnErrorOnFailure(NewICAX509Cert(icacRequest, subjectPublicKey, issuerKeypair, derSpan)); + break; + } + case CertType::kNoc: { + X509CertRequestParams nocRequest = { serialNumber, now, now + validity, desiredDn, issuerDn }; + ReturnErrorOnFailure(NewNodeOperationalX509Cert(nocRequest, subjectPublicKey, issuerKeypair, derSpan)); + break; + } + default: + return CHIP_ERROR_INVALID_ARGUMENT; + } + + if (maximizeSize && (desiredDn.RDNCount() < CHIP_CONFIG_CERT_MAX_RDN_ATTRIBUTES)) + { + Platform::ScopedMemoryBuffer paddedTlvBuf; + ReturnErrorCodeIf(!paddedTlvBuf.Alloc(kMaxCHIPCertLength + kMaxCertPaddingLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan paddedTlvSpan{ paddedTlvBuf.Get(), kMaxCHIPCertLength + kMaxCertPaddingLength }; + ReturnErrorOnFailure(ConvertX509CertToChipCert(derSpan, paddedTlvSpan)); + + Platform::ScopedMemoryBuffer paddedDerBuf; + ReturnErrorCodeIf(!paddedDerBuf.Alloc(kMaxDERCertLength + kMaxCertPaddingLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan paddedDerSpan{ paddedDerBuf.Get(), kMaxDERCertLength + kMaxCertPaddingLength }; + + Platform::ScopedMemoryBuffer fillerBuf; + ReturnErrorCodeIf(!fillerBuf.Alloc(kMaxCertPaddingLength), CHIP_ERROR_NO_MEMORY); + memset(fillerBuf.Get(), 'A', kMaxCertPaddingLength); + + int derPaddingLen = static_cast(kMaxDERCertLength - kDERCertDnEncodingOverhead - derSpan.size()); + int tlvPaddingLen = static_cast(kTLVDesiredSize - kTLVCertDnEncodingOverhead - paddedTlvSpan.size()); + if (certType == CertType::kRcac) + { + // For RCAC the issuer/subject DN are the same so padding will be present in both + derPaddingLen = (derPaddingLen - static_cast(kDERCertDnEncodingOverhead)) / 2; + tlvPaddingLen = (tlvPaddingLen - static_cast(kTLVCertDnEncodingOverhead)) / 2; + } + + size_t paddingLen = 0; + if (derPaddingLen >= 1 && tlvPaddingLen >= 1) + { + paddingLen = std::min(static_cast(std::min(derPaddingLen, tlvPaddingLen)), kMaxCertPaddingLength); + } + + for (; paddingLen > 0; paddingLen--) + { + paddedDerSpan = MutableByteSpan{ paddedDerBuf.Get(), kMaxDERCertLength + kMaxCertPaddingLength }; + paddedTlvSpan = MutableByteSpan{ paddedTlvBuf.Get(), kMaxCHIPCertLength + kMaxCertPaddingLength }; + + ChipDN certDn = desiredDn; + // Fill the padding in the DomainNameQualifier DN + certDn.AddAttribute_DNQualifier(CharSpan(fillerBuf.Get(), paddingLen), false); + + switch (certType) + { + case CertType::kRcac: { + X509CertRequestParams rcacRequest = { serialNumber, now, now + validity, certDn, certDn }; + ReturnErrorOnFailure(NewRootX509Cert(rcacRequest, issuerKeypair, paddedDerSpan)); + break; + } + case CertType::kIcac: { + X509CertRequestParams icacRequest = { serialNumber, now, now + validity, certDn, issuerDn }; + ReturnErrorOnFailure(NewICAX509Cert(icacRequest, subjectPublicKey, issuerKeypair, paddedDerSpan)); + break; + } + case CertType::kNoc: { + X509CertRequestParams nocRequest = { serialNumber, now, now + validity, certDn, issuerDn }; + ReturnErrorOnFailure(NewNodeOperationalX509Cert(nocRequest, subjectPublicKey, issuerKeypair, paddedDerSpan)); + break; + } + default: + return CHIP_ERROR_INVALID_ARGUMENT; + } + + ReturnErrorOnFailure(ConvertX509CertToChipCert(paddedDerSpan, paddedTlvSpan)); + + ChipLogProgress(Controller, "Generated maximized certificate with %u DER bytes, %u TLV bytes", + static_cast(paddedDerSpan.size()), static_cast(paddedTlvSpan.size())); + if (paddedDerSpan.size() <= kMaxDERCertLength && paddedTlvSpan.size() <= kMaxCHIPCertLength) + { + return CopySpanToMutableSpan(paddedDerSpan, outX509Cert); + } + } + } + + return CopySpanToMutableSpan(derSpan, outX509Cert); +} + +} // namespace + CHIP_ERROR ExampleOperationalCredentialsIssuer::Initialize(PersistentStorageDelegate & storage) { using namespace ASN1; @@ -122,6 +243,12 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChainAfterValidation( uint16_t rcacBufLen = static_cast(std::min(rcac.size(), static_cast(UINT16_MAX))); PERSISTENT_KEY_OP(mIndex, kOperationalCredentialsRootCertificateStorage, key, err = mStorage->SyncGetKeyValue(key, rcac.data(), rcacBufLen)); + // Always regenerate RCAC on maximally sized certs. The keys remain the same, so everything is fine. + if (mUseMaximallySizedCerts) + { + err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND; + } + if (err == CHIP_NO_ERROR) { uint64_t rcacId; @@ -137,10 +264,14 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChainAfterValidation( ReturnErrorOnFailure(rcac_dn.AddAttribute_MatterRCACId(mIssuerId)); ChipLogProgress(Controller, "Generating RCAC"); - X509CertRequestParams rcac_request = { 0, mNow, mNow + mValidity, rcac_dn, rcac_dn }; - ReturnErrorOnFailure(NewRootX509Cert(rcac_request, mIssuer, rcac)); - + ReturnErrorOnFailure(IssueX509Cert(mNow, mValidity, rcac_dn, rcac_dn, CertType::kRcac, mUseMaximallySizedCerts, + mIssuer.Pubkey(), mIssuer, rcac)); VerifyOrReturnError(CanCastTo(rcac.size()), CHIP_ERROR_INTERNAL); + + // Re-extract DN based on final generated cert + rcac_dn = ChipDN{}; + ReturnErrorOnFailure(ExtractSubjectDNFromX509Cert(rcac, rcac_dn)); + PERSISTENT_KEY_OP(mIndex, kOperationalCredentialsRootCertificateStorage, key, ReturnErrorOnFailure(mStorage->SyncSetKeyValue(key, rcac.data(), static_cast(rcac.size())))); } @@ -149,6 +280,11 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChainAfterValidation( uint16_t icacBufLen = static_cast(std::min(icac.size(), static_cast(UINT16_MAX))); PERSISTENT_KEY_OP(mIndex, kOperationalCredentialsIntermediateCertificateStorage, key, err = mStorage->SyncGetKeyValue(key, icac.data(), icacBufLen)); + // Always regenerate ICAC on maximally sized certs. The keys remain the same, so everything is fine. + if (mUseMaximallySizedCerts) + { + err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND; + } if (err == CHIP_NO_ERROR) { uint64_t icacId; @@ -164,10 +300,14 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChainAfterValidation( ReturnErrorOnFailure(icac_dn.AddAttribute_MatterICACId(mIntermediateIssuerId)); ChipLogProgress(Controller, "Generating ICAC"); - X509CertRequestParams icac_request = { 0, mNow, mNow + mValidity, icac_dn, rcac_dn }; - ReturnErrorOnFailure(NewICAX509Cert(icac_request, mIntermediateIssuer.Pubkey(), mIssuer, icac)); - + ReturnErrorOnFailure(IssueX509Cert(mNow, mValidity, rcac_dn, icac_dn, CertType::kIcac, mUseMaximallySizedCerts, + mIntermediateIssuer.Pubkey(), mIssuer, icac)); VerifyOrReturnError(CanCastTo(icac.size()), CHIP_ERROR_INTERNAL); + + // Re-extract DN based on final generated cert + icac_dn = ChipDN{}; + ReturnErrorOnFailure(ExtractSubjectDNFromX509Cert(icac, icac_dn)); + PERSISTENT_KEY_OP(mIndex, kOperationalCredentialsIntermediateCertificateStorage, key, ReturnErrorOnFailure(mStorage->SyncSetKeyValue(key, icac.data(), static_cast(icac.size())))); } @@ -178,8 +318,8 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChainAfterValidation( ReturnErrorOnFailure(noc_dn.AddCATs(cats)); ChipLogProgress(Controller, "Generating NOC"); - X509CertRequestParams noc_request = { 1, mNow, mNow + mValidity, noc_dn, icac_dn }; - return NewNodeOperationalX509Cert(noc_request, pubkey, mIntermediateIssuer, noc); + return IssueX509Cert(mNow, mValidity, icac_dn, noc_dn, CertType::kNoc, mUseMaximallySizedCerts, pubkey, mIntermediateIssuer, + noc); } CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChain(const ByteSpan & csrElements, const ByteSpan & csrNonce, @@ -227,16 +367,16 @@ CHIP_ERROR ExampleOperationalCredentialsIssuer::GenerateNOCChain(const ByteSpan ReturnErrorOnFailure(VerifyCertificateSigningRequest(csr.data(), csr.size(), pubkey)); chip::Platform::ScopedMemoryBuffer noc; - ReturnErrorCodeIf(!noc.Alloc(kMaxCHIPDERCertLength), CHIP_ERROR_NO_MEMORY); - MutableByteSpan nocSpan(noc.Get(), kMaxCHIPDERCertLength); + ReturnErrorCodeIf(!noc.Alloc(kMaxDERCertLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan nocSpan(noc.Get(), kMaxDERCertLength); chip::Platform::ScopedMemoryBuffer icac; - ReturnErrorCodeIf(!icac.Alloc(kMaxCHIPDERCertLength), CHIP_ERROR_NO_MEMORY); - MutableByteSpan icacSpan(icac.Get(), kMaxCHIPDERCertLength); + ReturnErrorCodeIf(!icac.Alloc(kMaxDERCertLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan icacSpan(icac.Get(), kMaxDERCertLength); chip::Platform::ScopedMemoryBuffer rcac; - ReturnErrorCodeIf(!rcac.Alloc(kMaxCHIPDERCertLength), CHIP_ERROR_NO_MEMORY); - MutableByteSpan rcacSpan(rcac.Get(), kMaxCHIPDERCertLength); + ReturnErrorCodeIf(!rcac.Alloc(kMaxDERCertLength), CHIP_ERROR_NO_MEMORY); + MutableByteSpan rcacSpan(rcac.Get(), kMaxDERCertLength); ReturnErrorOnFailure( GenerateNOCChainAfterValidation(assignedId, mNextFabricId, chip::kUndefinedCATs, pubkey, rcacSpan, icacSpan, nocSpan)); diff --git a/src/controller/ExampleOperationalCredentialsIssuer.h b/src/controller/ExampleOperationalCredentialsIssuer.h index a85684cf6957e2..6e3b1e554d4288 100644 --- a/src/controller/ExampleOperationalCredentialsIssuer.h +++ b/src/controller/ExampleOperationalCredentialsIssuer.h @@ -65,6 +65,8 @@ class DLL_EXPORT ExampleOperationalCredentialsIssuer : public OperationalCredent mNodeIdRequested = true; } + void SetMaximallyLargeCertsUsed(bool areMaximallyLargeCertsUsed) { mUseMaximallySizedCerts = areMaximallyLargeCertsUsed; } + void SetFabricIdForNextNOCRequest(FabricId fabricId) override { mNextFabricId = fabricId; } /** @@ -108,8 +110,8 @@ class DLL_EXPORT ExampleOperationalCredentialsIssuer : public OperationalCredent Crypto::P256Keypair mIssuer; Crypto::P256Keypair mIntermediateIssuer; bool mInitialized = false; - uint32_t mIssuerId = 0; - uint32_t mIntermediateIssuerId = 1; + uint32_t mIssuerId = 1; + uint32_t mIntermediateIssuerId = 2; uint32_t mNow = 0; // By default, let's set validity to 10 years @@ -117,6 +119,7 @@ class DLL_EXPORT ExampleOperationalCredentialsIssuer : public OperationalCredent NodeId mNextAvailableNodeId = 1; PersistentStorageDelegate * mStorage = nullptr; + bool mUseMaximallySizedCerts = false; NodeId mNextRequestedNodeId = 1; FabricId mNextFabricId = 1; diff --git a/src/controller/python/OpCredsBinding.cpp b/src/controller/python/OpCredsBinding.cpp index e6ed27a6da1db3..cb714ae7385fc3 100644 --- a/src/controller/python/OpCredsBinding.cpp +++ b/src/controller/python/OpCredsBinding.cpp @@ -77,6 +77,8 @@ class OperationalCredentialsAdapter : public OperationalCredentialsDelegate return mExampleOpCredsIssuer.GenerateNOCChainAfterValidation(nodeId, fabricId, cats, pubKey, rcac, icac, noc); } + void SetMaximallyLargeCertsUsed(bool enabled) { mExampleOpCredsIssuer.SetMaximallyLargeCertsUsed(enabled); } + private: CHIP_ERROR GenerateNOCChain(const ByteSpan & csrElements, const ByteSpan & csrNonce, const ByteSpan & attestationSignature, const ByteSpan & attestationChallenge, const ByteSpan & DAC, const ByteSpan & PAI, @@ -360,9 +362,10 @@ ChipError::StorageType pychip_OpCreds_AllocateController(OpCredsContext * contex CATValues catValues; - if ((caseAuthTagLen + 1) > kMaxSubjectCATAttributeCount) + if (caseAuthTagLen > kMaxSubjectCATAttributeCount) { - ChipLogError(Controller, "# of CASE Tags exceeds kMaxSubjectCATAttributeCount"); + ChipLogError(Controller, "Too many of CASE Tags (%u) exceeds kMaxSubjectCATAttributeCount", + static_cast(caseAuthTagLen)); return CHIP_ERROR_INVALID_ARGUMENT.AsInteger(); } @@ -414,6 +417,15 @@ ChipError::StorageType pychip_OpCreds_AllocateController(OpCredsContext * contex return CHIP_NO_ERROR.AsInteger(); } +ChipError::StorageType pychip_OpCreds_SetMaximallyLargeCertsUsed(OpCredsContext * context, bool enabled) +{ + VerifyOrReturnError(context != nullptr && context->mAdapter != nullptr, CHIP_ERROR_INCORRECT_STATE.AsInteger()); + + context->mAdapter->SetMaximallyLargeCertsUsed(enabled); + + return CHIP_NO_ERROR.AsInteger(); +} + void pychip_OpCreds_FreeDelegate(OpCredsContext * context) { Platform::Delete(context); diff --git a/src/controller/python/chip/CertificateAuthority.py b/src/controller/python/chip/CertificateAuthority.py index aa9011fb60a250..7f40f0cd016100 100644 --- a/src/controller/python/chip/CertificateAuthority.py +++ b/src/controller/python/chip/CertificateAuthority.py @@ -45,7 +45,7 @@ class CertificateAuthority: Each CertificateAuthority instance is associated with a single instance of the OperationalCredentialsAdapter. This adapter instance implements the OperationalCredentialsDelegate and is meant to provide a Python adapter to the functions in that delegate. It relies on the in-built - ExampleOperationalCredentialsIssuer to then generate certificate material for the CA. This instance also uses the 'CA index' to + ExampleOperationalCredentialsIssuer to then generate certificate material for the CA. This instance also uses the 'CA index' to store/look-up the associated credential material from the provided PersistentStorage object. ''' @classmethod @@ -74,10 +74,14 @@ def __init__(self, chipStack: ChipStack.ChipStack, caIndex: int, persistentStora self._Handle().pychip_OpCreds_InitializeDelegate.restype = c_void_p self._Handle().pychip_OpCreds_InitializeDelegate.argtypes = [ctypes.py_object, ctypes.c_uint32, ctypes.c_void_p] + self._Handle().pychip_OpCreds_SetMaximallyLargeCertsUsed.restype = c_uint32 + self._Handle().pychip_OpCreds_SetMaximallyLargeCertsUsed.argtypes = [ctypes.c_void_p, ctypes.c_bool] + if (persistentStorage is None): persistentStorage = self._chipStack.GetStorageManager() self._persistentStorage = persistentStorage + self._maximizeCertChains = False self._closure = self._chipStack.Call( lambda: self._Handle().pychip_OpCreds_InitializeDelegate( @@ -181,6 +185,21 @@ def caIndex(self) -> int: def adminList(self) -> list[FabricAdmin.FabricAdmin]: return self._activeAdmins + @property + def maximizeCertChains(self) -> bool: + return self._maximizeCertChains + + @maximizeCertChains.setter + def maximizeCertChains(self, enabled: bool): + res = self._chipStack.Call( + lambda: self._Handle().pychip_OpCreds_SetMaximallyLargeCertsUsed(ctypes.c_void_p(self._closure), ctypes.c_bool(enabled)) + ) + + if res != 0: + raise self._chipStack.ErrorToException(res) + + self._maximizeCertChains = enabled + def __del__(self): self.Shutdown() @@ -243,7 +262,7 @@ def LoadAuthoritiesFromStorage(self): ca = self.NewCertificateAuthority(int(caIndex)) ca.LoadFabricAdminsFromStorage() - def NewCertificateAuthority(self, caIndex: int = None): + def NewCertificateAuthority(self, caIndex: int = None, maximizeCertChains: bool = False): ''' Creates a new CertificateAuthority instance with the provided CA Index and the PersistentStorage instance previously setup in the constructor. @@ -268,6 +287,7 @@ def NewCertificateAuthority(self, caIndex: int = None): self._persistentStorage.SetReplKey(key='caList', value=caList) ca = CertificateAuthority(chipStack=self._chipStack, caIndex=caIndex, persistentStorage=self._persistentStorage) + ca.maximizeCertChains = maximizeCertChains self._activeCaList.append(ca) return ca diff --git a/src/controller/python/chip/FabricAdmin.py b/src/controller/python/chip/FabricAdmin.py index 3cfe03ffdb7e95..97a729035f811e 100644 --- a/src/controller/python/chip/FabricAdmin.py +++ b/src/controller/python/chip/FabricAdmin.py @@ -102,7 +102,7 @@ def NewController(self, nodeId: int = None, paaTrustStorePath: str = "", useTest raise RuntimeError(f"Provided NodeId {nodeId} collides with an existing controller instance!") self.logger().warning( - f"Allocating new controller with CaIndex: {self._certificateAuthority.caIndex}, FabricId: 0x{self._fabricId:016X}, NodeId: 0x{nodeId:016X}") + f"Allocating new controller with CaIndex: {self._certificateAuthority.caIndex}, FabricId: 0x{self._fabricId:016X}, NodeId: 0x{nodeId:016X}, CatTags: {catTags}") controller = ChipDeviceCtrl.ChipDeviceController(opCredsContext=self._certificateAuthority.GetOpCredsContext(), fabricId=self._fabricId, nodeId=nodeId, adminVendorId=self._vendorId, paaTrustStorePath=paaTrustStorePath, useTestCommissioner=useTestCommissioner, fabricAdmin=self, catTags=catTags) diff --git a/src/controller/python/chip/utils/CommissioningBuildingBlocks.py b/src/controller/python/chip/utils/CommissioningBuildingBlocks.py index ae4da4a4ee1fa8..20dbcd6441a746 100644 --- a/src/controller/python/chip/utils/CommissioningBuildingBlocks.py +++ b/src/controller/python/chip/utils/CommissioningBuildingBlocks.py @@ -30,7 +30,7 @@ _UINT16_MAX = 65535 -logger = logging.getLogger() +logger = logging.getLogger('CommissioningBuildingBlocks') async def _IsNodeInFabricList(devCtrl, nodeId): @@ -43,7 +43,7 @@ async def _IsNodeInFabricList(devCtrl, nodeId): return False -async def GrantPrivilege(adminCtrl: ChipDeviceController, grantedCtrl: ChipDeviceController, privilege: Clusters.AccessControl.Enums.Privilege, targetNodeId: int): +async def GrantPrivilege(adminCtrl: ChipDeviceController, grantedCtrl: ChipDeviceController, privilege: Clusters.AccessControl.Enums.Privilege, targetNodeId: int, targetCatTags: typing.List[int] = []): ''' Given an existing controller with admin privileges over a target node, grants the specified privilege to the new ChipDeviceController instance to the entire Node. This is achieved by updating the ACL entries on the target. @@ -53,20 +53,29 @@ async def GrantPrivilege(adminCtrl: ChipDeviceController, grantedCtrl: ChipDevic Args: adminCtrl: ChipDeviceController instance with admin privileges over the target node grantedCtrl: ChipDeviceController instance that is being granted the new privilege. - privilege: Privilege to grant to the granted controller + privilege: Privilege to grant to the granted controller. If None, no privilege is granted. targetNodeId: Target node to which the controller is granted privilege. + targetCatTag: Target 32-bit CAT tag that is granted privilege. If provided, this will be used in the subject list instead of the nodeid of that of grantedCtrl. ''' - data = await adminCtrl.ReadAttribute(targetNodeId, [(Clusters.AccessControl.Attributes.Acl)]) if 0 not in data: raise ValueError("Did not get back any data (possible cause: controller has no access..") currentAcls = data[0][Clusters.AccessControl][Clusters.AccessControl.Attributes.Acl] + if len(targetCatTags) != 0: + # Convert to an ACL subject format in CAT range + targetSubjects = [tag | 0xFFFF_FFFD_0000_0000 for tag in targetCatTags] + else: + targetSubjects = [grantedCtrl.nodeId] + + if (len(targetSubjects) > 4): + raise ValueError(f"List of target subjects of len {len(targetSubjects)} exceeeded the minima of 4!") + # Step 1: Wipe the subject from all existing ACLs. for acl in currentAcls: if (acl.subjects != NullValue): - acl.subjects = [subject for subject in acl.subjects if subject != grantedCtrl.nodeId] + acl.subjects = [subject for subject in acl.subjects if subject not in targetSubjects] if (privilege): addedPrivilege = False @@ -75,9 +84,11 @@ async def GrantPrivilege(adminCtrl: ChipDeviceController, grantedCtrl: ChipDevic # the existing privilege in that entry matches our desired privilege. for acl in currentAcls: if acl.privilege == privilege: - if grantedCtrl.nodeId not in acl.subjects: - acl.subjects.append(grantedCtrl.nodeId) + subjectSet = set(acl.subjects) + subjectSet.update(targetSubjects) + acl.subjects = list(subjectSet) addedPrivilege = True + break # Step 3: If there isn't an existing entry to add to, make a new one. if (not(addedPrivilege)): @@ -86,14 +97,16 @@ async def GrantPrivilege(adminCtrl: ChipDeviceController, grantedCtrl: ChipDevic f"Cannot add another ACL entry to grant privilege to existing count of {currentAcls} ACLs -- will exceed minimas!") currentAcls.append(Clusters.AccessControl.Structs.AccessControlEntry(privilege=privilege, authMode=Clusters.AccessControl.Enums.AuthMode.kCase, - subjects=[grantedCtrl.nodeId])) + subjects=targetSubjects)) # Step 4: Prune ACLs which have empty subjects. currentAcls = [acl for acl in currentAcls if acl.subjects != NullValue and len(acl.subjects) != 0] + + logger.info(f'GrantPrivilege: Writing acls: {currentAcls}') await adminCtrl.WriteAttribute(targetNodeId, [(0, Clusters.AccessControl.Attributes.Acl(currentAcls))]) -async def CreateControllersOnFabric(fabricAdmin: FabricAdmin, adminDevCtrl: ChipDeviceController, controllerNodeIds: typing.List[int], privilege: Clusters.AccessControl.Enums.Privilege, targetNodeId: int) -> typing.List[ChipDeviceController]: +async def CreateControllersOnFabric(fabricAdmin: FabricAdmin, adminDevCtrl: ChipDeviceController, controllerNodeIds: typing.List[int], privilege: Clusters.AccessControl.Enums.Privilege, targetNodeId: int, catTags: typing.List[int] = []) -> typing.List[ChipDeviceController]: ''' Create new ChipDeviceController instances on a given fabric with a specific privilege on a target node. Args: @@ -102,13 +115,14 @@ async def CreateControllersOnFabric(fabricAdmin: FabricAdmin, adminDevCtrl: Chip controllerNodeIds: List of desired nodeIds for the controllers. privilege: The specific ACL privilege to grant to the newly minted controllers. targetNodeId: The Node ID of the target. + catTags: CAT Tags to include in the NOC of controller, as well as when setting up the ACLs on the target. ''' controllerList = [] for nodeId in controllerNodeIds: - newController = fabricAdmin.NewController(nodeId=nodeId) - await GrantPrivilege(adminDevCtrl, newController, privilege, targetNodeId) + newController = fabricAdmin.NewController(nodeId=nodeId, catTags=catTags) + await GrantPrivilege(adminDevCtrl, newController, privilege, targetNodeId, catTags) controllerList.append(newController) return controllerList diff --git a/src/controller/python/test/test_scripts/base.py b/src/controller/python/test/test_scripts/base.py index 8488b2e80b6ce6..8665c288276603 100644 --- a/src/controller/python/test/test_scripts/base.py +++ b/src/controller/python/test/test_scripts/base.py @@ -40,6 +40,7 @@ import copy import secrets import faulthandler +import ipdb logger = logging.getLogger('PythonMatterControllerTEST') logger.setLevel(logging.INFO) @@ -389,31 +390,28 @@ def TestFailsafe(self, nodeid: int): async def TestControllerCATValues(self, nodeid: int): ''' This tests controllers using CAT Values ''' - # Allocate a new controller instance with a CAT tag. - newController = self.fabricAdmin.NewController(nodeId=300, catTags=[0x00010001]) + newControllers = await CommissioningBuildingBlocks.CreateControllersOnFabric(fabricAdmin=self.fabricAdmin, adminDevCtrl=self.devCtrl, controllerNodeIds=[300], targetNodeId=nodeid, privilege=None, catTags=[0x0001_0001]) # Read out an attribute using the new controller. It has no privileges, so this should fail with an UnsupportedAccess error. - res = await newController.ReadAttribute(nodeid=nodeid, attributes=[(0, Clusters.AccessControl.Attributes.Acl)]) + res = await newControllers[0].ReadAttribute(nodeid=nodeid, attributes=[(0, Clusters.AccessControl.Attributes.Acl)]) if(res[0][Clusters.AccessControl][Clusters.AccessControl.Attributes.Acl].Reason.status != IM.Status.UnsupportedAccess): self.logger.error(f"1: Received data instead of an error:{res}") return False - # Do a read-modify-write operation on the ACL list to add the CAT tag to the ACL list. - aclList = (await self.devCtrl.ReadAttribute(nodeid, [(0, Clusters.AccessControl.Attributes.Acl)]))[0][Clusters.AccessControl][Clusters.AccessControl.Attributes.Acl] - origAclList = copy.deepcopy(aclList) - aclList[0].subjects.append(0xFFFFFFFD00010001) - await self.devCtrl.WriteAttribute(nodeid, [(0, Clusters.AccessControl.Attributes.Acl(aclList))]) + # Grant the new controller privilege by adding the CAT tag to the subject. + await CommissioningBuildingBlocks.GrantPrivilege(adminCtrl=self.devCtrl, grantedCtrl=newControllers[0], privilege=Clusters.AccessControl.Enums.Privilege.kAdminister, targetNodeId=nodeid, targetCatTags=[0x0001_0001]) # Read out the attribute again - this time, it should succeed. - res = await newController.ReadAttribute(nodeid=nodeid, attributes=[(0, Clusters.AccessControl.Attributes.Acl)]) + res = await newControllers[0].ReadAttribute(nodeid=nodeid, attributes=[(0, Clusters.AccessControl.Attributes.Acl)]) if (type(res[0][Clusters.AccessControl][Clusters.AccessControl.Attributes.Acl][0]) != Clusters.AccessControl.Structs.AccessControlEntry): self.logger.error(f"2: Received something other than data:{res}") return False - # Write back the old entry to reset ACL list back. - await self.devCtrl.WriteAttribute(nodeid, [(0, Clusters.AccessControl.Attributes.Acl(origAclList))]) - newController.Shutdown() + # Reset the privilege back to pre-test. + await CommissioningBuildingBlocks.GrantPrivilege(adminCtrl=self.devCtrl, grantedCtrl=newControllers[0], privilege=None, targetNodeId=nodeid) + + newControllers[0].Shutdown() return True diff --git a/src/python_testing/TC_RR_1_1.py b/src/python_testing/TC_RR_1_1.py new file mode 100644 index 00000000000000..00dd9a111b8308 --- /dev/null +++ b/src/python_testing/TC_RR_1_1.py @@ -0,0 +1,424 @@ +# +# 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. +# + +from matter_testing_support import MatterBaseTest, default_matter_test_main, async_test_body +import chip.clusters as Clusters +import chip.FabricAdmin +import chip.CertificateAuthority +import logging +from mobly import asserts +from chip.utils import CommissioningBuildingBlocks +from chip.clusters.Attribute import TypedAttributePath, SubscriptionTransaction, AttributeStatus +from chip.interaction_model import Status as StatusEnum +import queue +import asyncio +from binascii import hexlify +from threading import Event +import time +import random + +from TC_SC_3_6 import AttributeChangeAccumulator, ResubscriptionCatcher + +# TODO: Overall, we need to add validation that session IDs have not changed throughout to be agnostic +# to some internal behavior assumptions of the SDK we are making relative to the write to +# the trigger the subscriptions not re-opening a new CASE session +# + + +class TC_RR_1_1(MatterBaseTest): + def setup_class(self): + self._pseudo_random_generator = random.Random(1234) + self._subscriptions = [] + + def teardown_class(self): + logging.info("Teardown: shutting down all subscription to avoid racy callbacks") + for subscription in self._subscriptions: + subscription.Shutdown() + + @async_test_body + async def test_TC_RR_1_1(self): + dev_ctrl = self.default_controller + + # Debug/test arguments + + # Get overrides for debugging the test + num_fabrics_to_commission = self.user_params.get("num_fabrics_to_commission", 5) + num_controllers_per_fabric = self.user_params.get("num_controllers_per_fabric", 3) + # Immediate reporting + min_report_interval_sec = self.user_params.get("min_report_interval_sec", 0) + # 10 minutes max reporting interval --> We don't care about keep-alives per-se and + # want to avoid resubscriptions + max_report_interval_sec = self.user_params.get("max_report_interval_sec", 10 * 60) + # Time to wait after changing NodeLabel for subscriptions to all hit. This is dependant + # on MRP params of subscriber and on actual min_report_interval. + # TODO: Determine the correct max value depending on target. Test plan doesn't say! + timeout_delay_sec = self.user_params.get("timeout_delay_sec", max_report_interval_sec * 2) + # Whether to skip filling the UserLabel clusters + skip_user_label_cluster_steps = self.user_params.get("skip_user_label_cluster_steps", False) + + BEFORE_LABEL = "Before Subscriptions 12345678912" + AFTER_LABEL = "After Subscriptions 123456789123" + + # Pre-conditions + + # Make sure all certificates are installed with maximal size + dev_ctrl.fabricAdmin.certificateAuthority.maximizeCertChains = True + + # TODO: Do from PICS list. The reflection approach here what a real client would do, + # and it respects what the test says: "TH writes 4 entries per endpoint where LabelList is supported" + logging.info("Pre-condition: determine whether any endpoints have UserLabel cluster (ULABEL.S.A0000(LabelList))") + endpoints_with_user_label_list = await dev_ctrl.ReadAttribute(self.dut_node_id, [Clusters.UserLabel.Attributes.LabelList]) + has_user_labels = len(endpoints_with_user_label_list) > 0 + if has_user_labels: + logging.info("--> User label cluster present on endpoints %s" % + ", ".join(["%d" % ep for ep in endpoints_with_user_label_list.keys()])) + else: + logging.info("--> User label cluster not present on any endpoitns") + + # Generate list of all clients names + all_names = [] + for fabric_idx in range(num_fabrics_to_commission): + for controller_idx in range(num_controllers_per_fabric): + all_names.append("RD%d%s" % (fabric_idx + 1, chr(ord('A') + controller_idx))) + logging.info(f"Client names that will be used: {all_names}") + client_list = [] + + # TODO: Shall we also verify SupportedFabrics attribute, and the CapabilityMinima attribute? + logging.info("Pre-conditions: validate CapabilityMinima.CaseSessionsPerFabric >= 3") + + capability_minima = await self.read_single_attribute(dev_ctrl, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.Basic.Attributes.CapabilityMinima) + asserts.assert_greater_equal(capability_minima.caseSessionsPerFabric, 3) + + # Step 1: Commission 5 fabrics with maximized NOC chains + logging.info(f"Step 1: use existing fabric to configure new fabrics so that total is {num_fabrics_to_commission} fabrics") + + # Generate Node IDs for subsequent controllers start at 200, follow 200, 300, ... + node_ids = [200 + (i * 100) for i in range(num_controllers_per_fabric - 1)] + + # Prepare clients for first fabric, that includes the default controller + dev_ctrl.name = all_names.pop(0) + client_list.append(dev_ctrl) + + if num_controllers_per_fabric > 1: + new_controllers = await CommissioningBuildingBlocks.CreateControllersOnFabric(fabricAdmin=dev_ctrl.fabricAdmin, adminDevCtrl=dev_ctrl, controllerNodeIds=node_ids, privilege=Clusters.AccessControl.Enums.Privilege.kAdminister, targetNodeId=self.dut_node_id, catTags=[0x0001_0001]) + for controller in new_controllers: + controller.name = all_names.pop(0) + client_list.extend(new_controllers) + + # Prepare clients for subsequent fabrics + for i in range(num_fabrics_to_commission - 1): + admin_index = 2 + i + logging.info("Commissioning fabric %d/%d" % (admin_index, num_fabrics_to_commission)) + new_certificate_authority = self.certificate_authority_manager.NewCertificateAuthority() + new_fabric_admin = new_certificate_authority.NewFabricAdmin(vendorId=0xFFF1, fabricId=admin_index) + + new_admin_ctrl = new_fabric_admin.NewController(nodeId=dev_ctrl.nodeId, catTags=[0x0001_0001]) + new_admin_ctrl.name = all_names.pop(0) + client_list.append(new_admin_ctrl) + await CommissioningBuildingBlocks.AddNOCForNewFabricFromExisting(commissionerDevCtrl=dev_ctrl, newFabricDevCtrl=new_admin_ctrl, existingNodeId=self.dut_node_id, newNodeId=self.dut_node_id) + + if num_controllers_per_fabric > 1: + new_controllers = await CommissioningBuildingBlocks.CreateControllersOnFabric(fabricAdmin=new_fabric_admin, adminDevCtrl=new_admin_ctrl, + controllerNodeIds=node_ids, privilege=Clusters.AccessControl.Enums.Privilege.kAdminister, targetNodeId=self.dut_node_id, catTags=[0x0001_0001]) + for controller in new_controllers: + controller.name = all_names.pop(0) + + client_list.extend(new_controllers) + + asserts.assert_equal(len(client_list), num_fabrics_to_commission * + num_controllers_per_fabric, "Must have the right number of clients") + + client_by_name = {client.name: client for client in client_list} + + # Step 2: Set the Label field for each fabric and BasicInformation.NodeLabel to 32 characters + logging.info("Step 2: Setting the Label field for each fabric and BasicInformation.NodeLabel to 32 characters") + + for idx in range(num_fabrics_to_commission): + fabric_number = idx + 1 + # Client is client A for each fabric to set the Label field + client_name = "RD%dA" % fabric_number + client = client_by_name[client_name] + + # Send the UpdateLabel command + label = ("%d" % fabric_number) * 32 + logging.info("Step 2a: Setting fabric label on fabric %d to '%s' using client %s" % (fabric_number, label, client_name)) + await client.SendCommand(self.dut_node_id, 0, Clusters.OperationalCredentials.Commands.UpdateFabricLabel(label)) + + # Read back + fabric_metadata = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.OperationalCredentials.Attributes.Fabrics) + print(fabric_metadata) + asserts.assert_equal(fabric_metadata[0].label, label, "Fabrics[x].label must match what was written") + + # Before subscribing, set the NodeLabel to "Before Subscriptions" + logging.info(f"Step 2b: Set BasicInformation.NodeLabel to {BEFORE_LABEL}") + await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.Basic.Attributes.NodeLabel(value=BEFORE_LABEL))]) + + node_label = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.Basic.Attributes.NodeLabel) + asserts.assert_equal(node_label, BEFORE_LABEL, "NodeLabel must match what was written") + + # Step 3: Add 3 Access Control entries on DUT with a list of 4 Subjects and 3 Targets with the following parameters (...) + logging.info("Step 3: Fill ACL table so that all minimas are reached") + + for idx in range(num_fabrics_to_commission): + fabric_number = idx + 1 + # Client is client A for each fabric + client_name = "RD%dA" % fabric_number + client = client_by_name[client_name] + + acl = self.build_acl(fabric_number, client_by_name, num_controllers_per_fabric) + + logging.info(f"Step 3a: Writing ACL entry for fabric {fabric_number}") + await client.WriteAttribute(self.dut_node_id, [(0, Clusters.AccessControl.Attributes.Acl(acl))]) + + logging.info(f"Step 3b: Validating ACL entry for fabric {fabric_number}") + acl_readback = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.AccessControl.Attributes.Acl) + fabric_index = 9999 + for entry in acl_readback: + asserts.assert_equal(entry.fabricIndex, fabric_number, "Fabric Index of response entries must match") + fabric_index = entry.fabricIndex + + for entry in acl: + # Fix-up the original ACL list items (that all had fabricIndex of 0 on write, since ignored) + # so that they match incoming fabric index. Allows checking by equality of the structs + entry.fabricIndex = fabric_index + asserts.assert_equal(acl_readback, acl, "ACL must match what was written") + + # Step 4 and 5 (the operations cannot be separated): establish all CASE sessions and subscriptions + + # Subscribe with all clients to NodeLabel attribute and 2 more paths + sub_handlers = [] + resub_catchers = [] + output_queue = queue.Queue() + subscription_contents = [ + (0, Clusters.Basic.Attributes.NodeLabel), # Single attribute + (0, Clusters.OperationalCredentials), # Wildcard all of opcreds attributes on EP0 + Clusters.Descriptor # All descriptors on all endpoints + ] + + logging.info("Step 4 and 5 (first part): Establish subscription with all %d clients" % len(client_list)) + for sub_idx, client in enumerate(client_list): + logging.info("Establishing subscription %d/%d from controller node %s" % (sub_idx + 1, len(client_list), client.name)) + + sub = await client.ReadAttribute(nodeid=self.dut_node_id, attributes=subscription_contents, + reportInterval=(min_report_interval_sec, max_report_interval_sec), keepSubscriptions=False) + self._subscriptions.append(sub) + + attribute_handler = AttributeChangeAccumulator( + name=client.name, expected_attribute=Clusters.Basic.Attributes.NodeLabel, output=output_queue) + sub.SetAttributeUpdateCallback(attribute_handler) + sub_handlers.append(attribute_handler) + + # TODO: Replace resubscription catcher with API to disable re-subscription on failure + resub_catcher = ResubscriptionCatcher(name=client.name) + sub.SetResubscriptionAttemptedCallback(resub_catcher) + resub_catchers.append(resub_catcher) + + asserts.assert_equal(len(self._subscriptions), len(client_list), "Must have the right number of subscriptions") + + # Step 6: Read 9 paths and validate success + logging.info("Step 6: Read 9 paths (first 9 attributes of Basic Information cluster) and validate success") + + large_read_contents = [ + Clusters.Basic.Attributes.DataModelRevision, + Clusters.Basic.Attributes.VendorName, + Clusters.Basic.Attributes.VendorID, + Clusters.Basic.Attributes.ProductName, + Clusters.Basic.Attributes.ProductID, + Clusters.Basic.Attributes.NodeLabel, + Clusters.Basic.Attributes.Location, + Clusters.Basic.Attributes.HardwareVersion, + Clusters.Basic.Attributes.HardwareVersionString, + ] + large_read_paths = [(0, attrib) for attrib in large_read_contents] + basic_info = await dev_ctrl.ReadAttribute(self.dut_node_id, large_read_paths) + + # Make sure everything came back from the read that we expected + asserts.assert_true(0 in basic_info.keys(), "Must have read endpoint 0 data") + asserts.assert_true(Clusters.Basic in basic_info[0].keys(), "Must have read Basic Information cluster data") + for attribute in large_read_contents: + asserts.assert_true(attribute in basic_info[0][Clusters.Basic], + "Must have read back attribute %s" % (attribute.__name__)) + + # Step 7: Trigger a change on NodeLabel + logging.info( + "Step 7: Change attribute with one client, await all attributes changed successfully without loss of subscriptions") + await asyncio.sleep(1) + await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.Basic.Attributes.NodeLabel(value=AFTER_LABEL))]) + + all_changes = {client.name: False for client in client_list} + + # Await a stabilization delay in increments to let the event loops run + start_time = time.time() + elapsed = 0 + time_remaining = timeout_delay_sec + + while time_remaining > 0: + try: + item = output_queue.get(block=True, timeout=time_remaining) + client_name, endpoint, attribute, value = item['name'], item['endpoint'], item['attribute'], item['value'] + + # Record arrival of an expected subscription change when seen + if endpoint == 0 and attribute == Clusters.Basic.Attributes.NodeLabel and value == AFTER_LABEL: + if not all_changes[client_name]: + logging.info("Got expected attribute change for client %s" % client_name) + all_changes[client_name] = True + + # We are done waiting when we have accumulated all results + if all(all_changes.values()): + logging.info("All clients have reported, done waiting.") + break + except queue.Empty: + # No error, we update timeouts and keep going + pass + + elapsed = time.time() - start_time + time_remaining = timeout_delay_sec - elapsed + + logging.info("Step 7: Validation of results") + sub_test_failed = False + + for catcher in resub_catchers: + if catcher.caught_resubscription: + logging.error("Client %s saw a resubscription" % catcher.name) + sub_test_failed = True + else: + logging.info("Client %s correctly did not see a resubscription" % catcher.name) + + all_reports_gotten = all(all_changes.values()) + if not all_reports_gotten: + logging.error("Missing reports from the following clients: %s" % + ", ".join([name for name, value in all_changes.items() if value is False])) + sub_test_failed = True + else: + logging.info("Got successful reports from all clients, meaning all concurrent CASE sessions worked") + + # Determine result of Step 7 + if sub_test_failed: + asserts.fail("Failed step 7 !") + + # Step 8: Validate sessions have not changed by doing a read on NodeLabel from all clients + logging.info("Step 8: Read back NodeLabel directly from all clients") + for sub_idx, client in enumerate(client_list): + logging.info("Reading NodeLabel (%d/%d) from controller node %s" % (sub_idx + 1, len(client_list), client.name)) + + label_readback = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.Basic.Attributes.NodeLabel) + asserts.assert_equal(label_readback, AFTER_LABEL) + + # TODO: Compare before/after session IDs. Requires more native changes, and the + # subcription method above is actually good enough we think. + + # Step 9: Fill user label list + if has_user_labels and not skip_user_label_cluster_steps: + await self.fill_user_label_list(dev_ctrl, self.dut_node_id) + else: + logging.info("Step 9: Skipped due to no UserLabel cluster instances") + + def random_string(self, length) -> str: + rnd = self._pseudo_random_generator + return "".join([rnd.choice("abcdef0123456789") for _ in range(length)])[:length] + + async def fill_user_label_list(self, dev_ctrl, target_node_id): + logging.info("Step 9: Fill UserLabel clusters on each endpoint") + user_labels = await dev_ctrl.ReadAttribute(target_node_id, [Clusters.UserLabel]) + + # Build 4 sets of maximized labels + random_label = self.random_string(16) + random_value = self.random_string(16) + labels = [Clusters.UserLabel.Structs.LabelStruct(label=random_label, value=random_value) for _ in range(4)] + + for endpoint_id in user_labels: + clusters = user_labels[endpoint_id] + for cluster in clusters: + if cluster == Clusters.UserLabel: + logging.info("Step 9a: Filling UserLabel cluster on endpoint %d" % endpoint_id) + statuses = await dev_ctrl.WriteAttribute(target_node_id, [(endpoint_id, Clusters.UserLabel.Attributes.LabelList(labels))]) + asserts.assert_equal(statuses[0].Status, StatusEnum.Success, "Label write must succeed") + + logging.info("Step 9b: Validate UserLabel cluster contents after write on endpoint %d" % endpoint_id) + read_back_labels = await self.read_single_attribute(dev_ctrl, node_id=target_node_id, endpoint=endpoint_id, attribute=Clusters.UserLabel.Attributes.LabelList) + print(read_back_labels) + + asserts.assert_equal(read_back_labels, labels, "LabelList attribute must match what was written") + + def build_acl(self, fabric_number, client_by_name, num_controllers_per_fabric): + acl = [] + + # Test says: + # + # . struct + # - Privilege field: Administer (5) + # - AuthMode field: CASE (2) + # - Subjects field: [0xFFFF_FFFD_0001_0001, 0x2000_0000_0000_0001, 0x2000_0000_0000_0002, 0x2000_0000_0000_0003] + # - Targets field: [{Endpoint: 0}, {Cluster: 0xFFF1_FC00, DeviceType: 0xFFF1_FC30}, {Cluster: 0xFFF1_FC00, DeviceType: 0xFFF1_FC31}] + # . struct + # - Privilege field: Manage (4) + # - AuthMode field: CASE (2) + # - Subjects field: [0x1000_0000_0000_0001, 0x1000_0000_0000_0002, 0x1000_0000_0000_0003, 0x1000_0000_0000_0004] + # - Targets field: [{Cluster: 0xFFF1_FC00, DeviceType: 0xFFF1_FC20}, {Cluster: 0xFFF1_FC01, DeviceType: 0xFFF1_FC21}, {Cluster: 0xFFF1_FC02, DeviceType: 0xFFF1_FC22}] + # . struct + # - Privilege field: Operate (3) + # - AuthMode field: CASE (2) + # - Subjects field: [0x3000_0000_0000_0001, 0x3000_0000_0000_0002, 0x3000_0000_0000_0003, 0x3000_0000_0000_0004] + # - Targets field: [{Cluster: 0xFFF1_FC40, DeviceType: 0xFFF1_FC20}, {Cluster: 0xFFF1_FC41, DeviceType: 0xFFF1_FC21}, {Cluster: 0xFFF1_FC02, DeviceType: 0xFFF1_FC42}] + + # Administer ACL entry + admin_subjects = [0xFFFF_FFFD_0001_0001, 0x2000_0000_0000_0001, 0x2000_0000_0000_0002, 0x2000_0000_0000_0003] + + admin_targets = [ + Clusters.AccessControl.Structs.Target(endpoint=0), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC00, deviceType=0xFFF1_BC30), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC01, deviceType=0xFFF1_BC31) + ] + admin_acl_entry = Clusters.AccessControl.Structs.AccessControlEntry(privilege=Clusters.AccessControl.Enums.Privilege.kAdminister, + authMode=Clusters.AccessControl.Enums.AuthMode.kCase, + subjects=admin_subjects, + targets=admin_targets) + acl.append(admin_acl_entry) + + # Manage ACL entry + manage_subjects = [0x1000_0000_0000_0001, 0x1000_0000_0000_0002, 0x1000_0000_0000_0003, 0x1000_0000_0000_0004] + manage_targets = [ + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC00, deviceType=0xFFF1_BC20), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC01, deviceType=0xFFF1_BC21), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC02, deviceType=0xFFF1_BC22) + ] + + manage_acl_entry = Clusters.AccessControl.Structs.AccessControlEntry(privilege=Clusters.AccessControl.Enums.Privilege.kManage, + authMode=Clusters.AccessControl.Enums.AuthMode.kCase, + subjects=manage_subjects, + targets=manage_targets) + acl.append(manage_acl_entry) + + # Operate ACL entry + operate_subjects = [0x3000_0000_0000_0001, 0x3000_0000_0000_0002, 0x3000_0000_0000_0003, 0x3000_0000_0000_0004] + operate_targets = [ + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC40, deviceType=0xFFF1_BC20), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC41, deviceType=0xFFF1_BC21), + Clusters.AccessControl.Structs.Target(cluster=0xFFF1_FC42, deviceType=0xFFF1_BC42) + ] + + operate_acl_entry = Clusters.AccessControl.Structs.AccessControlEntry(privilege=Clusters.AccessControl.Enums.Privilege.kOperate, + authMode=Clusters.AccessControl.Enums.AuthMode.kCase, + subjects=operate_subjects, + targets=operate_targets) + acl.append(operate_acl_entry) + + return acl + + +if __name__ == "__main__": + default_matter_test_main(maximize_cert_chains=True, controller_cat_tags=[0x0001_0001]) diff --git a/src/python_testing/matter_testing_support.py b/src/python_testing/matter_testing_support.py index 607f24a057b9c3..7c21f0b6471ce8 100644 --- a/src/python_testing/matter_testing_support.py +++ b/src/python_testing/matter_testing_support.py @@ -124,6 +124,7 @@ class MatterTestConfig: ble_interface_id: int = None admin_vendor_id: int = _DEFAULT_ADMIN_VENDOR_ID + case_admin_subject: int = None global_test_params: dict = field(default_factory=dict) # List of explicit tests to run by name. If empty, all tests will run tests: List[str] = field(default_factory=list) @@ -132,6 +133,7 @@ class MatterTestConfig: discriminator: int = None setup_passcode: int = None commissionee_ip_address_just_for_testing: str = None + maximize_cert_chains: bool = False qr_code_content: str = None manual_code: str = None @@ -144,6 +146,9 @@ class MatterTestConfig: dut_node_id: int = _DEFAULT_DUT_NODE_ID # Node ID to use for controller/commissioner controller_node_id: int = _DEFAULT_CONTROLLER_NODE_ID + # CAT Tags for default controller/commissioner + controller_cat_tags: List[int] = None + # Fabric ID which to use fabric_id: int = None # "Alpha" by default @@ -185,11 +190,12 @@ def _init_stack(self, already_initialized: bool, **kwargs): if (len(self._certificate_authority_manager.activeCaList) == 0): self._logger.warn( "Didn't find any CertificateAuthorities in storage -- creating a new CertificateAuthority + FabricAdmin...") - ca = self._certificate_authority_manager.NewCertificateAuthority() - ca.NewFabricAdmin(vendorId=0xFFF1, fabricId=0xFFF1) + ca = self._certificate_authority_manager.NewCertificateAuthority(caIndex=self._config.root_of_trust_index) + ca.maximizeCertChains = self._config.maximize_cert_chains + ca.NewFabricAdmin(vendorId=0xFFF1, fabricId=self._config.fabric_id) elif (len(self._certificate_authority_manager.activeCaList[0].adminList) == 0): self._logger.warn("Didn't find any FabricAdmins in storage -- creating a new one...") - self._certificate_authority_manager.activeCaList[0].NewFabricAdmin(vendorId=0xFFF1, fabricId=0xFFF1) + self._certificate_authority_manager.activeCaList[0].NewFabricAdmin(vendorId=0xFFF1, fabricId=self._config.fabric_id) # TODO: support getting access to chip-tool credentials issuer's data @@ -477,6 +483,13 @@ def populate_commissioning_args(args: argparse.Namespace, config: MatterTestConf return False config.commissionee_ip_address_just_for_testing = args.ip_addr + if args.case_admin_subject is None: + # Use controller node ID as CASE admin subject during commissioning if nothing provided + config.case_admin_subject = config.controller_node_id + else: + # If a CASE admin subject is provided, then use that + config.case_admin_subject = args.case_admin_subject + return True @@ -569,6 +582,8 @@ def parse_matter_test_args(argv: List[str]) -> MatterTestConfig: commission_group.add_argument('--admin-vendor-id', action="store", type=int_decimal_or_hex, default=_DEFAULT_ADMIN_VENDOR_ID, metavar="VENDOR_ID", help="VendorID to use during commissioning (default 0x%04X)" % _DEFAULT_ADMIN_VENDOR_ID) + commission_group.add_argument('--case-admin-subject', action="store", type=int_decimal_or_hex, + metavar="CASE_ADMIN_SUBJECT", help="Set the CASE admin subject to an explicit value (default to commissioner Node ID)") code_group = parser.add_mutually_exclusive_group(required=False) @@ -655,7 +670,7 @@ def _commission_device(self) -> bool: raise ValueError("Invalid commissioning method %s!" % conf.commissioning_method) -def default_matter_test_main(argv=None): +def default_matter_test_main(argv=None, **kwargs): """Execute the test class in a test module. This is the default entry point for running a test script file directly. In this case, only one test class in a test script is allowed. @@ -670,6 +685,10 @@ def default_matter_test_main(argv=None): """ matter_test_config = parse_matter_test_args(argv) + # Allow override of command line from optional arguments + if matter_test_config.controller_cat_tags is None and "controller_cat_tags" in kwargs: + matter_test_config.controller_cat_tags = kwargs["controller_cat_tags"] + # Find the test class in the test script. test_class = _find_test_class() @@ -681,12 +700,21 @@ def default_matter_test_main(argv=None): if len(matter_test_config.tests) > 0: tests = matter_test_config.tests + # This is required in case we need any testing with maximized certificate chains. + # We need *all* issuers from the start, even for default controller, to use + # maximized chains, before MatterStackState init, others some stale certs + # may not chain properly. + if "maximize_cert_chains" in kwargs: + matter_test_config.maximize_cert_chains = kwargs["maximize_cert_chains"] + stack = MatterStackState(matter_test_config) test_config.user_params["matter_stack"] = stash_globally(stack) # TODO: Steer to right FabricAdmin! + # TODO: If CASE Admin Subject is a CAT tag range, then make sure to issue NOC with that CAT tag + default_controller = stack.certificate_authorities[0].adminList[0].NewController(nodeId=matter_test_config.controller_node_id, - paaTrustStorePath=str(matter_test_config.paa_trust_store_path)) + paaTrustStorePath=str(matter_test_config.paa_trust_store_path), catTags=matter_test_config.controller_cat_tags) test_config.user_params["default_controller"] = stash_globally(default_controller) test_config.user_params["matter_test_config"] = stash_globally(matter_test_config) From 74ea252071e40770c8dd3ecc1f6948cf6ff3e7a8 Mon Sep 17 00:00:00 2001 From: Sharad Binjola <31142146+sharadb-amazon@users.noreply.github.com> Date: Fri, 19 Aug 2022 19:21:47 -0700 Subject: [PATCH 15/44] Adding darwin callbacks for NOC Generation (#21705) * Adding darwin callbacks for NOC Generation * Fixing compiler errors in new dependencies in src/credentials * Addressing feedback from woody-apple@ and bzbarsky-apple@ * Addressing second round of feedback * Address feedback around returning errors and adding comments * Adding comments Co-authored-by: Justin Wood --- src/controller/CHIPDeviceController.h | 5 + .../AndroidOperationalCredentialsIssuer.cpp | 4 +- .../DeviceAttestationConstructor.h | 12 +- .../DeviceAttestationVendorReserved.h | 2 +- .../Framework/CHIP/MTRAttestationInfo.h | 55 ++++++ .../Framework/CHIP/MTRAttestationInfo.m | 48 +++++ src/darwin/Framework/CHIP/MTRCSRInfo.h | 43 +++++ src/darwin/Framework/CHIP/MTRCSRInfo.m | 39 +++++ .../Framework/CHIP/MTRDeviceController.h | 11 ++ .../Framework/CHIP/MTRDeviceController.mm | 14 ++ src/darwin/Framework/CHIP/MTRNOCChainIssuer.h | 52 ++++++ .../CHIP/MTROperationalCredentialsDelegate.h | 49 ++++++ .../CHIP/MTROperationalCredentialsDelegate.mm | 165 ++++++++++++++++++ src/darwin/Framework/CHIP/Matter.h | 3 + .../Matter.xcodeproj/project.pbxproj | 20 +++ 15 files changed, 513 insertions(+), 9 deletions(-) create mode 100644 src/darwin/Framework/CHIP/MTRAttestationInfo.h create mode 100644 src/darwin/Framework/CHIP/MTRAttestationInfo.m create mode 100644 src/darwin/Framework/CHIP/MTRCSRInfo.h create mode 100644 src/darwin/Framework/CHIP/MTRCSRInfo.m create mode 100644 src/darwin/Framework/CHIP/MTRNOCChainIssuer.h diff --git a/src/controller/CHIPDeviceController.h b/src/controller/CHIPDeviceController.h index f5a4ddf281618a..62f97c0c30e80d 100644 --- a/src/controller/CHIPDeviceController.h +++ b/src/controller/CHIPDeviceController.h @@ -656,6 +656,11 @@ class DLL_EXPORT DeviceCommissioner : public DeviceController, mDeviceAttestationVerifier = deviceAttestationVerifier; } + Optional GetCommissioningParameters() + { + return mDefaultCommissioner == nullptr ? NullOptional : MakeOptional(mDefaultCommissioner->GetCommissioningParameters()); + } + private: DevicePairingDelegate * mPairingDelegate; diff --git a/src/controller/java/AndroidOperationalCredentialsIssuer.cpp b/src/controller/java/AndroidOperationalCredentialsIssuer.cpp index 59872b01486b52..e9808409da5d3c 100644 --- a/src/controller/java/AndroidOperationalCredentialsIssuer.cpp +++ b/src/controller/java/AndroidOperationalCredentialsIssuer.cpp @@ -378,7 +378,7 @@ CHIP_ERROR AndroidOperationalCredentialsIssuer::LocalGenerateNOCChain(const Byte return CHIP_NO_ERROR; } -CHIP_ERROR N2J_CSRInfo(JNIEnv * env, jbyteArray nonce, jbyteArray elements, jbyteArray elementsSignature, jbyteArray csr, +CHIP_ERROR N2J_CSRInfo(JNIEnv * env, jbyteArray nonce, jbyteArray elements, jbyteArray csrElementsSignature, jbyteArray csr, jobject & outCSRInfo) { CHIP_ERROR err = CHIP_NO_ERROR; @@ -393,7 +393,7 @@ CHIP_ERROR N2J_CSRInfo(JNIEnv * env, jbyteArray nonce, jbyteArray elements, jbyt constructor = env->GetMethodID(infoClass, "", "([B[B[B[B)V"); VerifyOrExit(constructor != nullptr, err = CHIP_JNI_ERROR_METHOD_NOT_FOUND); - outCSRInfo = (jobject) env->NewObject(infoClass, constructor, nonce, elements, elementsSignature, csr); + outCSRInfo = (jobject) env->NewObject(infoClass, constructor, nonce, elements, csrElementsSignature, csr); VerifyOrExit(!env->ExceptionCheck(), err = CHIP_JNI_ERROR_EXCEPTION_THROWN); exit: diff --git a/src/credentials/DeviceAttestationConstructor.h b/src/credentials/DeviceAttestationConstructor.h index 242171a5c9e9db..87f1095792c0f9 100644 --- a/src/credentials/DeviceAttestationConstructor.h +++ b/src/credentials/DeviceAttestationConstructor.h @@ -31,12 +31,12 @@ constexpr size_t kExpectedAttestationNonceSize = 32; * All output data stays valid while attestationElements buffer is valid. * * @param[in] attestationElements ByteSpan containing source of Attestation Elements data. - * @param[out] certificationDeclaration - * @param[out] attestationNonce - * @param[out] timestamp + * @param[out] certificationDeclaration Valid Certification Declaration data. + * @param[out] attestationNonce Attestation Nonce - 32 octets required. + * @param[out] timestamp Timestamp data in epoch time format. * @param[out] firmwareInfo ByteSpan containing Firmware Information data if present within attestationElements. * Empty ByteSpan if not present in attestationElements. - * @param[out] VendorReserved Placeholder to for client to examine VendorReserved elements later + * @param[out] vendorReserved Placeholder to for client to examine vendorReserved elements later */ CHIP_ERROR DeconstructAttestationElements(const ByteSpan & attestationElements, ByteSpan & certificationDeclaration, ByteSpan & attestationNonce, uint32_t & timestamp, ByteSpan & firmwareInfo, @@ -49,7 +49,7 @@ CHIP_ERROR DeconstructAttestationElements(const ByteSpan & attestationElements, * @param[in] attestationNonce Attestation Nonce - 32 octets required. * @param[in] timestamp Timestamp data in epoch time format. * @param[in] firmwareInfo Optional Firmware Information data - Can be empty. - * @param[in] VendorReserved Prefilled-in vendor reserved elements to be put into DA elements. + * @param[in] vendorReserved Prefilled-in vendor reserved elements to be put into DA elements. * @param[out] attestationElements Buffer used to write all AttestationElements data, formed with all the data fields above. * Provided buffer needs to be capable to handle all data fields + tags. */ @@ -62,7 +62,7 @@ CHIP_ERROR ConstructAttestationElements(const ByteSpan & certificationDeclaratio * @brief Count the number of VendorReservedElements in a DeviceAttestation blob * * @param[in] attestationElements ByeSpan conitaining source of Attestation Elements data - * @param[out] + * @param[out] numElements Count of vendor reserved elements in the DeviceAttestation * @returns CHIP_NO_ERROR on success */ CHIP_ERROR CountVendorReservedElementsInDA(const ByteSpan & attestationElements, size_t & numElements); diff --git a/src/credentials/DeviceAttestationVendorReserved.h b/src/credentials/DeviceAttestationVendorReserved.h index d05bd4d9d25a59..7c77000e5884ce 100644 --- a/src/credentials/DeviceAttestationVendorReserved.h +++ b/src/credentials/DeviceAttestationVendorReserved.h @@ -211,7 +211,7 @@ class DeviceAttestationVendorReservedConstructor // first lowest tagNum for this vendorId/profileNum uint64_t minTagNum = UINT64_MAX; - size_t lowestIndex; + size_t lowestIndex = SIZE_MAX; for (i = starting; i < mNumEntriesUsed; i++) { if (mElements[i].vendorId == minVendor && mElements[i].profileNum == minProfile) diff --git a/src/darwin/Framework/CHIP/MTRAttestationInfo.h b/src/darwin/Framework/CHIP/MTRAttestationInfo.h new file mode 100644 index 00000000000000..a31c181b0daebd --- /dev/null +++ b/src/darwin/Framework/CHIP/MTRAttestationInfo.h @@ -0,0 +1,55 @@ +/** + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Represents information relating to product attestation. + * + */ +@interface AttestationInfo : NSObject + +@property (nonatomic, copy) NSData * challenge; + +@property (nonatomic, copy) NSData * nonce; + +@property (nonatomic, copy) NSData * elements; + +@property (nonatomic, copy) NSData * elementsSignature; + +@property (nonatomic, copy) NSData * dac; + +@property (nonatomic, copy) NSData * pai; + +@property (nonatomic, copy) NSData * certificationDeclaration; + +@property (nonatomic, copy) NSData * firmwareInfo; + +- (instancetype)initWithChallenge:(NSData *)challenge + nonce:(NSData *)nonce + elements:(NSData *)elements + elementsSignature:(NSData *)elementsSignature + dac:(NSData *)dac + pai:(NSData *)pai + certificationDeclaration:(NSData *)certificationDeclaration + firmwareInfo:(NSData *)firmwareInfo; + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTRAttestationInfo.m b/src/darwin/Framework/CHIP/MTRAttestationInfo.m new file mode 100644 index 00000000000000..93b9483cce6fe0 --- /dev/null +++ b/src/darwin/Framework/CHIP/MTRAttestationInfo.m @@ -0,0 +1,48 @@ +/** + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "MTRAttestationInfo.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation AttestationInfo : NSObject + +- (instancetype)initWithChallenge:(NSData *)challenge + nonce:(NSData *)nonce + elements:(NSData *)elements + elementsSignature:(NSData *)elementsSignature + dac:(NSData *)dac + pai:(NSData *)pai + certificationDeclaration:(NSData *)certificationDeclaration + firmwareInfo:(NSData *)firmwareInfo +{ + if (self = [super init]) { + _challenge = challenge; + _nonce = nonce; + _elements = elements; + _elementsSignature = elementsSignature; + _dac = dac; + _pai = pai; + _certificationDeclaration = certificationDeclaration; + _firmwareInfo = firmwareInfo; + } + return self; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTRCSRInfo.h b/src/darwin/Framework/CHIP/MTRCSRInfo.h new file mode 100644 index 00000000000000..8971bfd6fbd294 --- /dev/null +++ b/src/darwin/Framework/CHIP/MTRCSRInfo.h @@ -0,0 +1,43 @@ +/** + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Represents information relating to NOC CSR. + * + */ +@interface CSRInfo : NSObject + +@property (nonatomic, copy) NSData * nonce; + +@property (nonatomic, copy) NSData * elements; + +@property (nonatomic, copy) NSData * elementsSignature; + +@property (nonatomic, copy) NSData * csr; + +- (instancetype)initWithNonce:(NSData *)nonce + elements:(NSData *)elements + elementsSignature:(NSData *)elementsSignature + csr:(NSData *)csr; + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTRCSRInfo.m b/src/darwin/Framework/CHIP/MTRCSRInfo.m new file mode 100644 index 00000000000000..676aa1ed36e5b4 --- /dev/null +++ b/src/darwin/Framework/CHIP/MTRCSRInfo.m @@ -0,0 +1,39 @@ +/** + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "MTRCSRInfo.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation CSRInfo : NSObject + +- (instancetype)initWithNonce:(NSData *)nonce + elements:(NSData *)elements + elementsSignature:(NSData *)elementsSignature + csr:(NSData *)csr +{ + if (self = [super init]) { + _nonce = nonce; + _elements = elements; + _elementsSignature = elementsSignature; + _csr = csr; + } + return self; +} +@end + +NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.h b/src/darwin/Framework/CHIP/MTRDeviceController.h index 61db4061896d10..faca45ddde863b 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.h +++ b/src/darwin/Framework/CHIP/MTRDeviceController.h @@ -17,6 +17,7 @@ #import +#import #import @class MTRBaseDevice; @@ -119,6 +120,16 @@ typedef void (^MTRDeviceConnectionCallback)(MTRBaseDevice * _Nullable device, NS */ - (void)setPairingDelegate:(id)delegate queue:(dispatch_queue_t)queue; +/** + * Sets this MTRDeviceController to use the given issuer for issuing operational certs. By default, the MTRDeviceController uses an + * internal issuer. + * + * @param[in] nocChainIssuer the NOC Chain issuer to use for issuer operational certs + * + * @param[in] queue The queue on which the callbacks will be delivered + */ +- (void)setNocChainIssuer:(id)nocChainIssuer queue:(dispatch_queue_t)queue; + /** * Shutdown the controller. Calls to shutdown after the first one are NO-OPs. */ diff --git a/src/darwin/Framework/CHIP/MTRDeviceController.mm b/src/darwin/Framework/CHIP/MTRDeviceController.mm index 425be4e5a1ac26..b170771f77ad0b 100644 --- a/src/darwin/Framework/CHIP/MTRDeviceController.mm +++ b/src/darwin/Framework/CHIP/MTRDeviceController.mm @@ -106,6 +106,7 @@ - (instancetype)initWithFactory:(MTRControllerFactory *)factory queue:(dispatch_ if ([self checkForInitError:(_operationalCredentialsDelegate != nullptr) logMsg:kErrorOperationalCredentialsInit]) { return nil; } + _operationalCredentialsDelegate->setChipWorkQueue(_chipWorkQueue); } return self; } @@ -229,6 +230,8 @@ - (BOOL)startup:(MTRDeviceControllerStartupParamsInternal *)startupParams commissionerParams.pairingDelegate = _pairingDelegateBridge; + _operationalCredentialsDelegate->SetDeviceCommissioner(_cppCommissioner); + commissionerParams.operationalCredentialsDelegate = _operationalCredentialsDelegate; commissionerParams.controllerRCAC = _operationalCredentialsDelegate->RootCertSpan(); @@ -654,6 +657,17 @@ - (void)setPairingDelegate:(id)delegate queue:(dispatc }); } +- (void)setNocChainIssuer:(id)nocChainIssuer queue:(dispatch_queue_t)queue +{ + VerifyOrReturn([self checkIsRunning]); + + dispatch_sync(_chipWorkQueue, ^{ + VerifyOrReturn([self checkIsRunning]); + + self->_operationalCredentialsDelegate->SetNocChainIssuer(nocChainIssuer, queue); + }); +} + - (BOOL)checkForInitError:(BOOL)condition logMsg:(NSString *)logMsg { if (condition) { diff --git a/src/darwin/Framework/CHIP/MTRNOCChainIssuer.h b/src/darwin/Framework/CHIP/MTRNOCChainIssuer.h new file mode 100644 index 00000000000000..2ef76670532118 --- /dev/null +++ b/src/darwin/Framework/CHIP/MTRNOCChainIssuer.h @@ -0,0 +1,52 @@ +/** + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol MTRNOCChainIssuer +@required + +/** + * @brief When a MTRNOCChainIssuer is set for the MTRDeviceController, then onNOCChainGenerationNeeded will be + * called when the NOC CSR needs to be signed. This allows for custom credentials issuer + * implementations, for example, when a proprietary cloud API will perform the CSR signing. + + * The commissioning workflow will stop upon the onNOCChainGenerationNeeded callback and + * resume once onNOCChainGenerationComplete is called + + * The following fields MUST be passed to onNOCChainGenerationComplete with non-nil values: + * rootCertificate, intermediateCertificate, operationalCertificate. + * If ipk and adminSubject are passed, then they will be used in + * the AddNOC command sent to the commissionee. If they are not passed, then the values + * provided in the MTRDeviceController initialization will be used. + * + * All csr and attestation fields are provided to allow for custom attestestation checks. + */ +- (void)onNOCChainGenerationNeeded:(CSRInfo *)csrInfo + attestationInfo:(AttestationInfo *)attestationInfo + onNOCChainGenerationComplete:(void (^)(NSData * operationalCertificate, NSData * intermediateCertificate, + NSData * rootCertificate, NSData * ipk, NSNumber * adminSubject, + NSError * __autoreleasing * error))onNOCChainGenerationComplete; + +@end + +NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.h b/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.h index d7580bce7e9e87..803e19eee30eed 100644 --- a/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.h +++ b/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.h @@ -22,9 +22,11 @@ #import "MTRError_Internal.h" #import "MTRKeypair.h" +#import "MTRNOCChainIssuer.h" #import "MTRP256KeypairBridge.h" #import "MTRPersistentStorageDelegateBridge.h" +#include #include #include #include @@ -55,6 +57,24 @@ class MTROperationalCredentialsDelegate : public chip::Controller::OperationalCr void SetDeviceID(chip::NodeId deviceId) { mDeviceBeingPaired = deviceId; } void ResetDeviceID() { mDeviceBeingPaired = chip::kUndefinedNodeId; } + void SetDeviceCommissioner(chip::Controller::DeviceCommissioner * cppCommissioner) { mCppCommissioner = cppCommissioner; } + + chip::Optional GetCommissioningParameters() + { + return mCppCommissioner == nullptr ? chip::NullOptional : mCppCommissioner->GetCommissioningParameters(); + } + + void setChipWorkQueue(dispatch_queue_t chipWorkQueue) { mChipWorkQueue = chipWorkQueue; } + + void SetNocChainIssuer(id nocChainIssuer, dispatch_queue_t nocChainIssuerQueue) + { + mNocChainIssuer = nocChainIssuer; + mNocChainIssuerQueue = nocChainIssuerQueue; + } + + CHIP_ERROR NOCChainGenerated(CHIP_ERROR status, const chip::ByteSpan & noc, const chip::ByteSpan & icac, + const chip::ByteSpan & rcac, chip::Optional ipk, chip::Optional adminSubject); + CHIP_ERROR GenerateNOC(chip::NodeId nodeId, chip::FabricId fabricId, const chip::CATValues & cats, const chip::Crypto::P256PublicKey & pubkey, chip::MutableByteSpan & noc); @@ -97,6 +117,29 @@ class MTROperationalCredentialsDelegate : public chip::Controller::OperationalCr chip::FabricId fabricId, const chip::CATValues & cats, const chip::Crypto::P256PublicKey & pubkey, chip::MutableByteSpan & noc); + /** + * When a NOCChainIssuer is set, then onNOCChainGenerationNeeded will be called when the NOC CSR needs to be + * signed. This allows for custom credentials issuer implementations, for example, when a proprietary cloud API will perform the + * CSR signing. The commissioning workflow will stop upon the onNOCChainGenerationNeeded callback and resume once + * onNOCChainGenerationComplete is called. + * + * Caller must pass a non-nil value for the rootCertificate, intermediateCertificate, operationalCertificate + * If ipk and adminSubject are non nil, then they will be used in the AddNOC command sent to the commissionee. If they are not + * populated, then the values provided in the MTRDeviceController initialization will be used. + */ + void onNOCChainGenerationComplete(NSData * operationalCertificate, NSData * intermediateCertificate, NSData * rootCertificate, + NSData * _Nullable ipk, NSNumber * _Nullable adminSubject, NSError * __autoreleasing * error); + + void setNSError(CHIP_ERROR err, NSError * __autoreleasing * outError); + + CHIP_ERROR CallbackGenerateNOCChain(const chip::ByteSpan & csrElements, const chip::ByteSpan & csrNonce, + const chip::ByteSpan & attestationSignature, const chip::ByteSpan & attestationChallenge, const chip::ByteSpan & DAC, + const chip::ByteSpan & PAI, chip::Callback::Callback * onCompletion); + + CHIP_ERROR LocalGenerateNOCChain(const chip::ByteSpan & csrElements, const chip::ByteSpan & csrNonce, + const chip::ByteSpan & attestationSignature, const chip::ByteSpan & attestationChallenge, const chip::ByteSpan & DAC, + const chip::ByteSpan & PAI, chip::Callback::Callback * onCompletion); + ChipP256KeypairPtr mIssuerKey; chip::Crypto::AesCcm128Key mIPK; @@ -115,6 +158,12 @@ class MTROperationalCredentialsDelegate : public chip::Controller::OperationalCr // have a root cert, and at that point it gets initialized to nil. NSData * _Nullable mRootCert; NSData * _Nullable mIntermediateCert; + + chip::Controller::DeviceCommissioner * mCppCommissioner = nullptr; + id _Nullable mNocChainIssuer; + dispatch_queue_t _Nullable mNocChainIssuerQueue; + dispatch_queue_t _Nullable mChipWorkQueue; + chip::Callback::Callback * mOnNOCCompletionCallback = nullptr; }; NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.mm b/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.mm index 3688c9a08f7433..1113ad18505086 100644 --- a/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.mm +++ b/src/darwin/Framework/CHIP/MTROperationalCredentialsDelegate.mm @@ -27,7 +27,10 @@ #import "MTRLogging.h" #import "NSDataSpanConversion.h" +#include #include +#include +#include #include #include #include @@ -112,9 +115,171 @@ return NewNodeOperationalX509Cert(noc_request, pubkey, signingKeypair, noc); } +CHIP_ERROR MTROperationalCredentialsDelegate::NOCChainGenerated(CHIP_ERROR status, const ByteSpan & noc, const ByteSpan & icac, + const ByteSpan & rcac, Optional ipk, Optional adminSubject) +{ + ReturnErrorCodeIf(mOnNOCCompletionCallback == nullptr, CHIP_ERROR_INCORRECT_STATE); + + Callback::Callback * onCompletion = mOnNOCCompletionCallback; + mOnNOCCompletionCallback = nullptr; + + // Call-back into commissioner with the generated data. + dispatch_sync(mChipWorkQueue, ^{ + onCompletion->mCall(onCompletion->mContext, status, noc, icac, rcac, ipk, adminSubject); + }); + + return CHIP_NO_ERROR; +} + CHIP_ERROR MTROperationalCredentialsDelegate::GenerateNOCChain(const chip::ByteSpan & csrElements, const chip::ByteSpan & csrNonce, const chip::ByteSpan & attestationSignature, const chip::ByteSpan & attestationChallenge, const chip::ByteSpan & DAC, const chip::ByteSpan & PAI, chip::Callback::Callback * onCompletion) +{ + if (mNocChainIssuer != nil) { + return CallbackGenerateNOCChain(csrElements, csrNonce, attestationSignature, attestationChallenge, DAC, PAI, onCompletion); + } else { + return LocalGenerateNOCChain(csrElements, csrNonce, attestationSignature, attestationChallenge, DAC, PAI, onCompletion); + } +} + +CHIP_ERROR MTROperationalCredentialsDelegate::CallbackGenerateNOCChain(const chip::ByteSpan & csrElements, + const chip::ByteSpan & csrNonce, const chip::ByteSpan & csrElementsSignature, const chip::ByteSpan & attestationChallenge, + const chip::ByteSpan & DAC, const chip::ByteSpan & PAI, + chip::Callback::Callback * onCompletion) +{ + mOnNOCCompletionCallback = onCompletion; + + TLVReader reader; + reader.Init(csrElements); + + if (reader.GetType() == kTLVType_NotSpecified) { + ReturnErrorOnFailure(reader.Next()); + } + + VerifyOrReturnError(reader.GetType() == kTLVType_Structure, CHIP_ERROR_WRONG_TLV_TYPE); + VerifyOrReturnError(reader.GetTag() == AnonymousTag(), CHIP_ERROR_UNEXPECTED_TLV_ELEMENT); + + TLVType containerType; + ReturnErrorOnFailure(reader.EnterContainer(containerType)); + ReturnErrorOnFailure(reader.Next(kTLVType_ByteString, TLV::ContextTag(1))); + + chip::ByteSpan csr; + reader.Get(csr); + reader.ExitContainer(containerType); + + CSRInfo * csrInfo = [[CSRInfo alloc] initWithNonce:AsData(csrNonce) + elements:AsData(csrElements) + elementsSignature:AsData(csrElementsSignature) + csr:AsData(csr)]; + + chip::ByteSpan certificationDeclarationSpan; + chip::ByteSpan attestationNonceSpan; + uint32_t timestampDeconstructed; + chip::ByteSpan firmwareInfoSpan; + chip::Credentials::DeviceAttestationVendorReservedDeconstructor vendorReserved; + + __block chip::Optional commissioningParameters; + // Dereferencing mCppCommissioner as it would be set to point to a valid Cpp commissioner by now, as we are in the middle of + // commissioning + dispatch_sync(mChipWorkQueue, ^{ + commissioningParameters = mCppCommissioner->GetCommissioningParameters(); + }); + VerifyOrReturnError(commissioningParameters.HasValue(), CHIP_ERROR_INCORRECT_STATE); + + // Attestation Elements, nonce and signature will have a value in Commissioning Params as the CSR needs a signature or else we + // cannot trust it + ReturnErrorOnFailure( + chip::Credentials::DeconstructAttestationElements(commissioningParameters.Value().GetAttestationElements().Value(), + certificationDeclarationSpan, attestationNonceSpan, timestampDeconstructed, firmwareInfoSpan, vendorReserved)); + + AttestationInfo * attestationInfo = + [[AttestationInfo alloc] initWithChallenge:AsData(attestationChallenge) + nonce:AsData(commissioningParameters.Value().GetAttestationNonce().Value()) + elements:AsData(commissioningParameters.Value().GetAttestationElements().Value()) + elementsSignature:AsData(commissioningParameters.Value().GetAttestationSignature().Value()) + dac:AsData(DAC) + pai:AsData(PAI) + certificationDeclaration:AsData(certificationDeclarationSpan) + firmwareInfo:AsData(firmwareInfoSpan)]; + + dispatch_sync(mNocChainIssuerQueue, ^{ + [mNocChainIssuer onNOCChainGenerationNeeded:csrInfo + attestationInfo:attestationInfo + onNOCChainGenerationComplete:^void(NSData * operationalCertificate, NSData * intermediateCertificate, + NSData * rootCertificate, NSData * ipk, NSNumber * adminSubject, NSError * __autoreleasing * error) { + onNOCChainGenerationComplete( + operationalCertificate, intermediateCertificate, rootCertificate, ipk, adminSubject, error); + }]; + }); + + return CHIP_NO_ERROR; +} + +void MTROperationalCredentialsDelegate::setNSError(CHIP_ERROR err, NSError * __autoreleasing * outError) +{ + if (outError) { + *outError = [MTRError errorForCHIPErrorCode:err]; + } +} + +void MTROperationalCredentialsDelegate::onNOCChainGenerationComplete(NSData * operationalCertificate, + NSData * intermediateCertificate, NSData * rootCertificate, NSData * _Nullable ipk, NSNumber * _Nullable adminSubject, + NSError * __autoreleasing * error) +{ + if (operationalCertificate == nil || intermediateCertificate == nil || rootCertificate == nil) { + setNSError(CHIP_ERROR_INVALID_ARGUMENT, error); + return; + } + + // use ipk and adminSubject from CommissioningParameters if not passed in. + // Dereferencing mCppCommissioner as it would be set to point to a valid Cpp commissioner by now, as we are in the middle of + // commissioning + __block chip::Optional commissioningParameters; + dispatch_sync(mChipWorkQueue, ^{ + commissioningParameters = mCppCommissioner->GetCommissioningParameters(); + }); + if (!commissioningParameters.HasValue()) { + setNSError(CHIP_ERROR_INCORRECT_STATE, error); + return; + } + + chip::Optional ipkOptional; + uint8_t ipkValue[chip::CHIP_CRYPTO_SYMMETRIC_KEY_LENGTH_BYTES]; + chip::Crypto::AesCcm128KeySpan ipkTempSpan(ipkValue); + if (ipk != nil) { + if ([ipk length] != sizeof(ipkValue)) { + setNSError(CHIP_ERROR_INCORRECT_STATE, error); + return; + } + memcpy(&ipkValue[0], [ipk bytes], [ipk length]); + ipkOptional.SetValue(ipkTempSpan); + } else if (commissioningParameters.Value().GetIpk().HasValue()) { + ipkOptional.SetValue(commissioningParameters.Value().GetIpk().Value()); + } + + chip::Optional adminSubjectOptional; + if (adminSubject != nil) { + adminSubjectOptional.SetValue(adminSubject.unsignedLongLongValue); + } else { + adminSubjectOptional = commissioningParameters.Value().GetAdminSubject(); + } + + // This could potentially be done as an async operation as a future optimization. But it ultimately calls + // DeviceCommissioner::OnDeviceNOCChainGeneration which sends the AddNoc message to the target. The call returns without + // blocking as it is. + CHIP_ERROR err = NOCChainGenerated(CHIP_NO_ERROR, AsByteSpan(operationalCertificate), AsByteSpan(intermediateCertificate), + AsByteSpan(rootCertificate), ipkOptional, adminSubjectOptional); + + if (err != CHIP_NO_ERROR) { + MTR_LOG_ERROR("Failed to SetNocChain for the device: %" CHIP_ERROR_FORMAT, err.Format()); + setNSError(CHIP_ERROR_INCORRECT_STATE, error); + } +} + +CHIP_ERROR MTROperationalCredentialsDelegate::LocalGenerateNOCChain(const chip::ByteSpan & csrElements, + const chip::ByteSpan & csrNonce, const chip::ByteSpan & attestationSignature, const chip::ByteSpan & attestationChallenge, + const chip::ByteSpan & DAC, const chip::ByteSpan & PAI, + chip::Callback::Callback * onCompletion) { chip::NodeId assignedId; if (mNodeIdRequested) { diff --git a/src/darwin/Framework/CHIP/Matter.h b/src/darwin/Framework/CHIP/Matter.h index 9c5af0634a904f..d702cb7c4f21fc 100644 --- a/src/darwin/Framework/CHIP/Matter.h +++ b/src/darwin/Framework/CHIP/Matter.h @@ -18,9 +18,11 @@ #import #import +#import #import #import #import +#import #import #import #import @@ -37,6 +39,7 @@ #import #import #import +#import #import #import #import diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj index 47da9c8ee28e48..7102d13c7be998 100644 --- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj +++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj @@ -33,6 +33,11 @@ 2CB7163C252E8A7C0026E2BB /* MTRDevicePairingDelegateBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2CB71639252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.mm */; }; 2CB7163F252F731E0026E2BB /* MTRDevicePairingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CB7163E252F731E0026E2BB /* MTRDevicePairingDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2FD775552695557E00FF4B12 /* error-mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FD775542695557E00FF4B12 /* error-mapping.cpp */; }; + 3CF134A7289D8ADA0017A19E /* MTRCSRInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CF134A6289D8AD90017A19E /* MTRCSRInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CF134A9289D8D800017A19E /* MTRCSRInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CF134A8289D8D800017A19E /* MTRCSRInfo.m */; }; + 3CF134AB289D8DF70017A19E /* MTRAttestationInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CF134AA289D8DF70017A19E /* MTRAttestationInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CF134AD289D8E570017A19E /* MTRAttestationInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CF134AC289D8E570017A19E /* MTRAttestationInfo.m */; }; + 3CF134AF289D90FF0017A19E /* MTRNOCChainIssuer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CF134AE289D90FF0017A19E /* MTRNOCChainIssuer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5112F606287CD2C100B827E7 /* privilege-storage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5112F605287CD2C100B827E7 /* privilege-storage.cpp */; }; 5129BCFD26A9EE3300122DDF /* MTRError.h in Headers */ = {isa = PBXBuildFile; fileRef = 5129BCFC26A9EE3300122DDF /* MTRError.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5136661328067D550025EDAE /* MTRDeviceController_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5136660F28067D540025EDAE /* MTRDeviceController_Internal.h */; }; @@ -164,6 +169,11 @@ 2CB71639252E8A7B0026E2BB /* MTRDevicePairingDelegateBridge.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRDevicePairingDelegateBridge.mm; sourceTree = ""; }; 2CB7163E252F731E0026E2BB /* MTRDevicePairingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDevicePairingDelegate.h; sourceTree = ""; }; 2FD775542695557E00FF4B12 /* error-mapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "error-mapping.cpp"; path = "../../../app/util/error-mapping.cpp"; sourceTree = ""; }; + 3CF134A6289D8AD90017A19E /* MTRCSRInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRCSRInfo.h; sourceTree = ""; }; + 3CF134A8289D8D800017A19E /* MTRCSRInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTRCSRInfo.m; sourceTree = ""; }; + 3CF134AA289D8DF70017A19E /* MTRAttestationInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRAttestationInfo.h; sourceTree = ""; }; + 3CF134AC289D8E570017A19E /* MTRAttestationInfo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MTRAttestationInfo.m; sourceTree = ""; }; + 3CF134AE289D90FF0017A19E /* MTRNOCChainIssuer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRNOCChainIssuer.h; sourceTree = ""; }; 5112F605287CD2C100B827E7 /* privilege-storage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "privilege-storage.cpp"; path = "../../../app/util/privilege-storage.cpp"; sourceTree = ""; }; 5129BCFC26A9EE3300122DDF /* MTRError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MTRError.h; sourceTree = ""; }; 5136660F28067D540025EDAE /* MTRDeviceController_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRDeviceController_Internal.h; sourceTree = ""; }; @@ -427,6 +437,11 @@ 5A6FEC8F27B563D900F25F42 /* MTRDeviceControllerOverXPC.m */, 5A6FEC9427B5976200F25F42 /* MTRDeviceControllerXPCConnection.h */, 5A6FEC9527B5983000F25F42 /* MTRDeviceControllerXPCConnection.m */, + 3CF134A6289D8AD90017A19E /* MTRCSRInfo.h */, + 3CF134A8289D8D800017A19E /* MTRCSRInfo.m */, + 3CF134AA289D8DF70017A19E /* MTRAttestationInfo.h */, + 3CF134AC289D8E570017A19E /* MTRAttestationInfo.m */, + 3CF134AE289D90FF0017A19E /* MTRNOCChainIssuer.h */, ); path = CHIP; sourceTree = ""; @@ -495,7 +510,10 @@ 991DC0842475F45400C13860 /* MTRDeviceController.h in Headers */, AF1CB86E2874B03B00865A96 /* MTROTAProviderDelegate.h in Headers */, 754F3DF427FBB94B00E60580 /* MTREventTLVValueDecoder_Internal.h in Headers */, + 3CF134AF289D90FF0017A19E /* MTRNOCChainIssuer.h in Headers */, + 3CF134AB289D8DF70017A19E /* MTRAttestationInfo.h in Headers */, B2E0D7B2245B0B5C003C5B48 /* MTRManualSetupPayloadParser.h in Headers */, + 3CF134A7289D8ADA0017A19E /* MTRCSRInfo.h in Headers */, B2E0D7B1245B0B5C003C5B48 /* Matter.h in Headers */, 7596A84428762729004DAE0E /* MTRDevice.h in Headers */, B2E0D7B8245B0B5C003C5B48 /* MTRSetupPayload.h in Headers */, @@ -666,6 +684,7 @@ 51B22C262740CB32008D5055 /* MTRStructsObjc.mm in Sources */, 2C222AD1255C620600E446B9 /* MTRBaseDevice.mm in Sources */, 1EC3238D271999E2002A8BF0 /* cluster-objects.cpp in Sources */, + 3CF134A9289D8D800017A19E /* MTRCSRInfo.m in Sources */, 991DC0892475F47D00C13860 /* MTRDeviceController.mm in Sources */, B2E0D7B7245B0B5C003C5B48 /* MTRQRCodeSetupPayloadParser.mm in Sources */, 1EDCE546289049A100E41EC9 /* MTROTAHeaderParser.mm in Sources */, @@ -685,6 +704,7 @@ 5A6FEC9027B563D900F25F42 /* MTRDeviceControllerOverXPC.m in Sources */, B289D4222639C0D300D4E314 /* MTROnboardingPayloadParser.m in Sources */, 5112F606287CD2C100B827E7 /* privilege-storage.cpp in Sources */, + 3CF134AD289D8E570017A19E /* MTRAttestationInfo.m in Sources */, 2C1B027A2641DB4E00780EF1 /* MTROperationalCredentialsDelegate.mm in Sources */, 7560FD1C27FBBD3F005E85B3 /* MTREventTLVValueDecoder.mm in Sources */, 7596A84928762783004DAE0E /* MTRAsyncCallbackWorkQueue.mm in Sources */, From c766942bc21addb36ca310941ebcfe3237c45748 Mon Sep 17 00:00:00 2001 From: kowsisoundhar12 <57476670+kowsisoundhar12@users.noreply.github.com> Date: Sat, 20 Aug 2022 19:55:41 +0530 Subject: [PATCH 16/44] Added updated Manual scripts (#22055) * Added updated Manual scripts * Added Auto generated files * Restyled by whitespace * Restyled by clang-format Co-authored-by: Restyled.io --- .../certification/Test_TC_ACL_2_10.yaml | 14 + .../suites/certification/Test_TC_ACL_2_3.yaml | 24 +- .../suites/certification/Test_TC_ACL_2_4.yaml | 88 +- .../suites/certification/Test_TC_ACL_2_5.yaml | 17 + .../suites/certification/Test_TC_ACL_2_6.yaml | 5 + .../suites/certification/Test_TC_ACL_2_7.yaml | 15 + .../suites/certification/Test_TC_ACL_2_8.yaml | 7 + .../suites/certification/Test_TC_ACL_2_9.yaml | 5 + .../suites/certification/Test_TC_ACT_2_1.yaml | 6 +- .../suites/certification/Test_TC_ACT_2_2.yaml | 31 +- .../suites/certification/Test_TC_ACT_3_1.yaml | 15 +- .../suites/certification/Test_TC_ACT_3_2.yaml | 29 +- .../Test_TC_APPLAUNCHER_3_8_1.yaml | 7 +- .../Test_TC_APPLAUNCHER_3_9_1.yaml | 7 +- .../suites/certification/Test_TC_BDX_1_2.yaml | 5 + .../suites/certification/Test_TC_BDX_1_4.yaml | 5 + .../suites/certification/Test_TC_BDX_2_1.yaml | 6 + .../suites/certification/Test_TC_BDX_2_2.yaml | 6 + .../certification/Test_TC_BIND_2_1.yaml | 26 +- .../certification/Test_TC_BIND_2_2.yaml | 10 +- .../certification/Test_TC_BIND_2_3.yaml | 24 +- .../certification/Test_TC_BOOL_2_2.yaml | 16 +- .../certification/Test_TC_BRBINFO_2_1.yaml | 20 +- .../certification/Test_TC_BRBINFO_2_2.yaml | 13 + .../certification/Test_TC_BRBINFO_2_3.yaml | 38 +- .../suites/certification/Test_TC_BR_4.yaml | 2224 ++++++++++++++--- .../certification/Test_TC_CADMIN_1_1.yaml | 473 ++-- .../certification/Test_TC_CADMIN_1_14.yaml | 224 +- .../certification/Test_TC_CADMIN_1_17.yaml | 76 +- .../certification/Test_TC_CADMIN_1_18.yaml | 76 +- .../certification/Test_TC_CADMIN_1_19.yaml | 43 +- .../certification/Test_TC_CADMIN_1_2.yaml | 412 +-- .../certification/Test_TC_CADMIN_1_20.yaml | 44 +- .../certification/Test_TC_CADMIN_1_7.yaml | 275 +- .../certification/Test_TC_CADMIN_1_8.yaml | 303 +-- .../suites/certification/Test_TC_CC_1_1.yaml | 3 + .../suites/certification/Test_TC_CC_3_2.yaml | 3 + .../suites/certification/Test_TC_CC_3_3.yaml | 3 + .../suites/certification/Test_TC_CC_4_1.yaml | 3 + .../suites/certification/Test_TC_CC_4_2.yaml | 3 + .../suites/certification/Test_TC_CC_4_3.yaml | 3 + .../suites/certification/Test_TC_CC_4_4.yaml | 3 + .../certification/Test_TC_CGEN_2_2.yaml | 125 +- .../certification/Test_TC_CNET_4_12.yaml | 17 + .../certification/Test_TC_CNET_4_13.yaml | 71 +- .../certification/Test_TC_CNET_4_14.yaml | 67 + .../certification/Test_TC_CNET_4_15.yaml | 31 +- .../certification/Test_TC_CNET_4_16.yaml | 29 + .../certification/Test_TC_CNET_4_17.yaml | 5 + .../certification/Test_TC_CNET_4_18.yaml | 5 + .../certification/Test_TC_CNET_4_19.yaml | 5 + .../certification/Test_TC_CNET_4_20.yaml | 7 +- .../certification/Test_TC_CNET_4_21.yaml | 5 + .../certification/Test_TC_CNET_4_22.yaml | 24 + .../certification/Test_TC_CNET_4_4.yaml | 54 + .../certification/Test_TC_CNET_4_5.yaml | 23 + .../certification/Test_TC_CNET_4_6.yaml | 23 +- .../certification/Test_TC_CNET_4_9.yaml | 90 + .../suites/certification/Test_TC_DA_1_4.yaml | 234 +- .../suites/certification/Test_TC_DA_1_7.yaml | 365 +-- .../suites/certification/Test_TC_DD_1_12.yaml | 26 +- .../suites/certification/Test_TC_DD_1_13.yaml | 23 +- .../suites/certification/Test_TC_DD_1_14.yaml | 27 +- .../suites/certification/Test_TC_DD_1_15.yaml | 9 + .../suites/certification/Test_TC_DD_1_5.yaml | 71 +- .../suites/certification/Test_TC_DD_1_6.yaml | 18 +- .../suites/certification/Test_TC_DD_1_7.yaml | 7 +- .../suites/certification/Test_TC_DD_1_8.yaml | 68 +- .../suites/certification/Test_TC_DD_2_1.yaml | 31 +- .../suites/certification/Test_TC_DD_2_2.yaml | 79 +- .../suites/certification/Test_TC_DD_3_1.yaml | 59 +- .../suites/certification/Test_TC_DD_3_10.yaml | 39 +- .../suites/certification/Test_TC_DD_3_11.yaml | 47 +- .../suites/certification/Test_TC_DD_3_12.yaml | 100 +- .../suites/certification/Test_TC_DD_3_13.yaml | 115 +- .../suites/certification/Test_TC_DD_3_14.yaml | 53 +- .../suites/certification/Test_TC_DD_3_15.yaml | 39 +- .../suites/certification/Test_TC_DD_3_16.yaml | 55 +- .../suites/certification/Test_TC_DD_3_17.yaml | 73 +- .../suites/certification/Test_TC_DD_3_18.yaml | 25 +- .../suites/certification/Test_TC_DD_3_19.yaml | 20 +- .../suites/certification/Test_TC_DD_3_2.yaml | 31 +- .../suites/certification/Test_TC_DD_3_20.yaml | 24 +- .../suites/certification/Test_TC_DD_3_21.yaml | 21 +- .../suites/certification/Test_TC_DD_3_3.yaml | 45 +- .../suites/certification/Test_TC_DD_3_4.yaml | 127 +- .../suites/certification/Test_TC_DD_3_5.yaml | 82 +- .../suites/certification/Test_TC_DD_3_6.yaml | 42 +- .../suites/certification/Test_TC_DD_3_7.yaml | 11 + .../suites/certification/Test_TC_DD_3_8.yaml | 16 + .../suites/certification/Test_TC_DD_3_9.yaml | 45 +- .../certification/Test_TC_DESC_2_1.yaml | 203 +- .../certification/Test_TC_DRLK_2_10.yaml | 27 +- .../certification/Test_TC_DRLK_2_2.yaml | 3 + .../certification/Test_TC_DRLK_2_3.yaml | 3 + .../certification/Test_TC_DRLK_3_1.yaml | 5 + .../certification/Test_TC_DRLK_3_2.yaml | 37 + .../certification/Test_TC_DRLK_3_3.yaml | 140 +- .../suites/certification/Test_TC_IDM_3_1.yaml | 3 - .../suites/certification/Test_TC_IDM_6_2.yaml | 5 - .../suites/certification/Test_TC_IDM_6_3.yaml | 5 + .../certification/Test_TC_LCFG_2_1.yaml | 2 +- .../certification/Test_TC_LTIME_1_1.yaml | 7 +- .../suites/certification/Test_TC_LVL_2_3.yaml | 15 +- .../suites/certification/Test_TC_MOD_1_3.yaml | 5 + .../suites/certification/Test_TC_MOD_2_2.yaml | 5 + .../suites/certification/Test_TC_MOD_3_3.yaml | 27 +- .../suites/certification/Test_TC_MOD_3_4.yaml | 11 +- .../suites/certification/Test_TC_OCC_2_2.yaml | 9 +- .../suites/certification/Test_TC_OCC_2_4.yaml | 5 + .../suites/certification/Test_TC_OO_3_1.yaml | 5 + .../suites/certification/Test_TC_OO_3_2.yaml | 5 + .../certification/Test_TC_OPCREDS_3_2.yaml | 17 +- .../certification/Test_TC_OPCREDS_3_3.yaml | 22 +- .../suites/certification/Test_TC_PRS_3_1.yaml | 5 + .../certification/Test_TC_PSCFG_2_2.yaml | 23 +- .../suites/certification/Test_TC_RH_3_1.yaml | 5 + .../suites/certification/Test_TC_SC_4_3.yaml | 2 + .../suites/certification/Test_TC_SC_4_6.yaml | 8 +- .../suites/certification/Test_TC_SC_4_8.yaml | 7 +- .../certification/Test_TC_SWTCH_2_2.yaml | 45 +- .../suites/certification/Test_TC_TMP_3_1.yaml | 5 + .../certification/Test_TC_TSTAT_3_1.yaml | 5 + .../certification/Test_TC_TSTAT_3_2.yaml | 5 + .../certification/Test_TC_TSUIC_3_1.yaml | 5 + .../certification/Test_TC_ULABEL_3_1.yaml | 5 + .../certification/Test_TC_WNCV_5_1.yaml | 7 +- .../certification/Test_TC_WNCV_6_1.yaml | 5 + .../certification/Test_TC_WNCV_7_1.yaml | 5 + 129 files changed, 5539 insertions(+), 2382 deletions(-) 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 839480f42307ce..6f1fdcd88a860a 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 @@ -24,6 +24,20 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + 1.N1 is the node ID of TH1 + + 2.N2 is the node ID of TH2 + + 2.D_OK_EMPTY:"1718" which is an octstr of length 2 containing valid TLV: + + - top-level anonymous list (empty) + 3.D_OK_SINGLE:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" which is an octstr of length 50-100 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_3.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_3.yaml index 075cf0de51a9f1..a0ecce5d17f816 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_3.yaml @@ -112,7 +112,7 @@ tests: struct: Data field: D_OK_EMPTY : 1718" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"1718"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"1718"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, contains the list of AccessControlExtensionStruct containing 1 element @@ -209,7 +209,7 @@ tests: :17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, contains the list of AccessControlExtensionStruct containing 1 element . @@ -338,7 +338,7 @@ tests: which is an octstr of length 128 containing valid TLV:" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003148656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E0018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003148656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E0018"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, contains the list of AccessControlExtensionStruct containing 1 element [1656417544.279572][3888:3893] CHIP:DMG: WriteResponseMessage = @@ -456,7 +456,7 @@ tests: :17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003248656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E2E0018" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003248656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E2E0018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003248656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E2E0018"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, contains the list of AccessControlExtensionStruct containing 1 element which Returns CONSTRAINT_ERROR (0x87) @@ -485,7 +485,7 @@ tests: struct Data field: D_BAD_STRUCT : 1518" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"1518"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"1518"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, contains the list of AccessControlExtensionStruct containing 1 element which Returns CONSTRAINT_ERROR (0x87) @@ -512,7 +512,7 @@ tests: :3701D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"3701D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"3701D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 1 element which Returns CONSTRAINT_ERROR (0x87) @@ -539,7 +539,7 @@ tests: :17103D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17103D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17103D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 1 element Returns CONSTRAINT_ERROR (0x87) @@ -567,7 +567,7 @@ tests: 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018FF" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018FF"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018FF"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 1 element Returns CONSTRAINT_ERROR (0x87) @@ -594,7 +594,7 @@ tests: :17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700"}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 1 element, Returns CONSTRAINT_ERROR (0x87) @@ -619,7 +619,7 @@ tests: 1.struct Data field: D_BAD_NOnE" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":""}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":""}]' 1 0 On TH1(Chiptool) , Verify AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 1 element, Returns CONSTRAINT_ERROR (0x87) @@ -649,7 +649,7 @@ tests: 17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[{"data":"1718"},{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]" 1 0 + ./chip-tool accesscontrol write extension '[{"data":"1718"},{"data":"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018"}]' 1 0 On TH1(Chiptool) , Verify Successfully AccessControl cluster Extension attribute, value is list of AccessControlExtensionStruct containing 2 elements and CONSTRAINT_ERROR (0x87) for second element path @@ -745,7 +745,7 @@ tests: value is an empty list" PICS: ACL.S.A0001 verification: | - ./chip-tool accesscontrol write extension "[]" 1 0 + ./chip-tool accesscontrol write extension '[]' 1 0 On TH1(Chiptool) , Verify Successfully,AccessControl cluster Extension attribute, value is an empty list diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml index 9e74143347d01c..03dba82825bc9b 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml @@ -26,7 +26,11 @@ config: tests: - label: "TH1 commissions DUT using admin node ID N1" verification: | - verification step to be updated. + DUT + sudo ./chip-all-clusters-app + + TH1 + ./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3841 disabled: true - label: @@ -88,9 +92,9 @@ tests: 888] Targets field: [{Cluster: 55}, {Endpoint: 66}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 3, "subjects": [111,222,333,444], "targets": [{"cluster":11 , "endpoint":22, "deviceType": null}]}, - { "privilege": 3, "authMode": 3, "subjects": [555,666,777,888], "targets": [{"cluster": 55, "endpoint": 66, "deviceType":null }]}]" 1 0 + { "privilege": 3, "authMode": 3, "subjects": [555,666,777,888], "targets": [{"cluster": 55, "endpoint": 66, "deviceType":null }]}]' 1 0 On TH1(Chiptool), Verify Successfully AccessControl cluster ACL attribute value is list of AccessControlEntryStruct containing 3 elements [1658323877.660699][2502:2507] CHIP:DMG: WriteClient moving to [ResponseRe] [1658323877.660829][2502:2507] CHIP:DMG: WriteResponseMessage = @@ -235,7 +239,7 @@ tests: 666, 555] Targets field: [{Cluster: 88}, {Endpoint: 77}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 4, "authMode": 2, "subjects": [444,333,222,111], "targets": [{"cluster":44 , "endpoint":33, "deviceType":null}]},{ "privilege":4 , "authMode":3, "subjects": [888,777,666,555], "targets": [{"cluster": 88, "endpoint": 77, "deviceType":null}]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 4, "authMode": 2, "subjects": [444,333,222,111], "targets": [{"cluster":44 , "endpoint":33, "deviceType":null}]},{ "privilege":4 , "authMode":3, "subjects": [888,777,666,555], "targets": [{"cluster": 88, "endpoint": 77, "deviceType":null}]}]' 1 0 On TH1(Chiptool) , Verify Successfully AccessControl cluster ACL attribute value is list of AccessControlEntryStruct containing 3 elements 1658226959.554674][4736:4741] CHIP:DMG: AttributeStatusIBs = @@ -377,7 +381,7 @@ tests: Endpoint: 66}, {Cluster: 77, DeviceType: 88}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [111,222,333,444], "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": null },{ "cluster": 33, "endpoint": null, "deviceType": 44 }]}, { "privilege": 3, "authMode": 3, "subjects": [555,666,777,888], "targets":[{ "cluster": 55, "endpoint": 66, "deviceType": null },{ "cluster": 77, "endpoint": null, "deviceType": 88 }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [111,222,333,444], "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": null },{ "cluster": 33, "endpoint": null, "deviceType": 44 }]}, { "privilege": 3, "authMode": 3, "subjects": [555,666,777,888], "targets":[{ "cluster": 55, "endpoint": 66, "deviceType": null },{ "cluster": 77, "endpoint": null, "deviceType": 88 }]}]' 1 0 On TH1(Chiptool), Verify the Successfully to acl attribute with a value is list of AccessControlEntryStruct containing 3 elements 1657276276.708941][2297:2302] CHIP:DMG: WriteClient moving to [ResponseRe] [1657276276.709021][2297:2302] CHIP:DMG: WriteResponseMessage = @@ -535,7 +539,7 @@ tests: DeviceType: 88}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [], "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": null },{ "cluster": 33, "endpoint": null, "deviceType": 44 }]}, { "privilege": 3, "authMode": 3, "subjects": [], "targets":[{ "cluster": 55, "endpoint": 66, "deviceType": null },{ "cluster": 77, "endpoint": null, "deviceType": 88 }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [], "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": null },{ "cluster": 33, "endpoint": null, "deviceType": 44 }]}, { "privilege": 3, "authMode": 3, "subjects": [], "targets":[{ "cluster": 55, "endpoint": 66, "deviceType": null },{ "cluster": 77, "endpoint": null, "deviceType": 88 }]}]' 1 0 On TH1(Chiptool) , Verify Successfully AccessControl cluster ACL attribute value is list of AccessControlEntryStruct containing 3 elements [1657541707.114348][3004:3009] CHIP:DMG: { @@ -686,9 +690,9 @@ tests: Group (3) Subjects field: [555, 666, 777, 888] Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 1, "authMode": 2, "subjects": [111, 222, 333, 444], "targets": null}, - { "privilege": 3, "authMode": 3, "subjects": [555, 666, 777, 888], "targets": null}]" 1 0 + { "privilege": 3, "authMode": 3, "subjects": [555, 666, 777, 888], "targets": null}]' 1 0 On TH1(Chiptool) , Verify Successfully to acl attribute value is list of AccessControlEntryStruct containing 3 elements as Target Null. [1657542060.230268][3398:3403] CHIP:DMG: { @@ -819,8 +823,8 @@ tests: AuthMode field: Group (3) Subjects field: null Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 3, "subjects": null, "targets": null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 3, "subjects": null, "targets": null}]' 1 0 On TH1(Chiptool) , Verify Successfully to acl attribute with a value is list of AccessControlEntryStruct containing 2 elements as Target Null @@ -866,7 +870,7 @@ tests: [1656507141.631353][3224:3229] CHIP:DMG: AttributePathIB = [1656507141.631426][3224:3229] CHIP:DMG: { [1656507141.631501][3224:3229] CHIP:DMG: Endpoint = 0x0, - [1656507141.631584][3224:3229] CHIP:DMG: Cluster = 0x1f, + [1656507141.631584][3224:3229] CHIP:DMG: Cluster = 0x1f, [1656507141.631664][3224:3229] CHIP:DMG: Attribute = 0x0000_0000, [1656507141.631742][3224:3229] CHIP:DMG: ListIndex = Null, [1656507141.631824][3224:3229] CHIP:DMG: } @@ -925,8 +929,8 @@ tests: (2) AuthMode field: CASE (2) Subjects field: null Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 2, "authMode": 2, "subjects": null, "targets": null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 2, "authMode": 2, "subjects": null, "targets": null}]' 1 0 On TH1(Chiptool), Verify Successfully that acl attribute with a value is list of AccessControlEntryStruct containing 2 elements as Subject and Target as null [1656507439.868495][3249:3254] CHIP:DMG: WriteClient moving to [ResponseRe] [1656507439.868612][3249:3254] CHIP:DMG: WriteResponseMessage = @@ -1050,7 +1054,7 @@ tests: node IDs (stored as SUBJECTS) Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects":[33,44,55,66] , "targets": null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects":[33,44,55,66] , "targets": null}]' 1 0 On TH1(Chiptool), Verify Successfully acl attribute with a value is list of AccessControlEntryStruct containing 2 elements as Subject as SUBJECTS and Target as null @@ -1160,8 +1164,8 @@ tests: Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects":[65520,65521,65522,65523] , "targets": null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 2, "subjects":[65520,65521,65522,65523] , "targets": null}]' 1 0 On TH1(Chiptool) , Verify Successfully acl attribute value is list of AccessControlEntryStruct containing 2 elements , Subjects as CAT Values and Target as null [1656509348.174135][3403:3408] CHIP:DMG: WriteClient moving to [ResponseRe] @@ -1289,7 +1293,7 @@ tests: MAXTARGETS targets {Cluster: random} (stored as TARGETS)" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 40, "endpoint": null, "deviceType": null },{ "cluster": 28, "endpoint": null, "deviceType": null }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 40, "endpoint": null, "deviceType": null },{ "cluster": 28, "endpoint": null, "deviceType": null }]}]' 1 0 On TH1(Chiptool) , Verify Successfully acl attribute with value is list of AccessControlEntryStruct containing 2 elements , Subjects as null and and Target as null @@ -1436,9 +1440,9 @@ tests: field: null subsequent elements same as second element" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": null, "targets": null}, + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": null, "targets": null}, { "privilege": 3, "authMode": 2, "subjects": [], "targets":null}, - { "privilege": 3, "authMode": 2, "subjects": [], "targets":null}]" 1 0 + { "privilege": 3, "authMode": 2, "subjects": [], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully that acl attribute value is list of AccessControlEntryStruct containing MAXENTRIES elements @@ -1559,8 +1563,8 @@ tests: AuthMode field: PASE (1) Subjects field: null Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{"privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 1, "subjects": [], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{"privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 1, "subjects": [], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully acl attribute value is list of AccessControlEntryStruct containing 2 elements and Returns CONSTRAINT_ERROR (0x87) for second element path [1658475475.310438][3113:3119] CHIP:DMG: { @@ -1704,8 +1708,8 @@ tests: (5) AuthMode field: Group (3) Subjects field: null Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 5, "authMode": 3, "subjects": [], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 5, "authMode": 3, "subjects": [], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements as Subject null and Target null for second element path Returns CONSTRAINT_ERROR (0x87) [1658475916.602576][3151:3156] CHIP:DMG: WriteResponseMessage = @@ -1780,8 +1784,8 @@ tests: field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 6, "authMode": 2, "subjects": null, "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 6, "authMode": 2, "subjects": null, "targets":null}]' 1 0 @@ -1861,10 +1865,10 @@ tests: field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 4, "subjects": [], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 4, "subjects": [], "targets":null}]' 1 0 - On TH(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using + On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Authmode for second element path Returns CONSTRAINT_ERROR (0x87) [1658476412.664216][3192:3197] CHIP:DMG: WriteResponseMessage = [1658476412.664247][3192:3197] CHIP:DMG: { @@ -1937,8 +1941,8 @@ tests: AuthMode field: CASE (2) Subjects field: [0] Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects": [0], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 2, "subjects": [0], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Subject Field for second element path Returns CONSTRAINT_ERROR (0x87) [1658476622.665126][3229:3234] CHIP:DMG: WriteClient moving to [ResponseRe] @@ -2012,8 +2016,8 @@ tests: field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects": [18446744073709551615], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 2, "subjects": [18446744073709551615], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using @@ -2088,7 +2092,7 @@ tests: Targets field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": [18446744060824649728], "targets": null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": [18446744060824649728], "targets": null}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Subject Field for second element path Returns CONSTRAINT_ERROR (0x87) 8477037.056167][3264:3269] CHIP:DMG: { @@ -2158,8 +2162,8 @@ tests: field: null" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, - { "privilege": 3, "authMode": 2, "subjects": [18446744073709486080], "targets":null}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, + { "privilege": 3, "authMode": 2, "subjects": [18446744073709486080], "targets":null}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Subject Field for second element path Returns CONSTRAINT_ERROR (0x87) @@ -2232,7 +2236,7 @@ tests: AuthMode field: CASE (2) Subjects field: null Targets field: [{}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": null, "deviceType": null }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": null, "deviceType": null }]}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Target Field for second element path Returns CONSTRAINT_ERROR (0x87) @@ -2308,7 +2312,7 @@ tests: [{Cluster: 0xFFFFFFFF}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 4294967295, "endpoint": null, "deviceType": null }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 4294967295, "endpoint": null, "deviceType": null }]}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Target Field for second element path Returns CONSTRAINT_ERROR (0x87) @@ -2383,7 +2387,7 @@ tests: null Targets field: [{Endpoint: 65535}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": 65535, "deviceType": null }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": 65535, "deviceType": null }]}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Target field for second element path Returns CONSTRAINT_ERROR (0x87) [1657617920.044059][8948:8953] CHIP:DMG: { @@ -2456,7 +2460,7 @@ tests: [{DeviceType: 0xFFFFFFFF}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": null, "deviceType": 4294967295 }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": null, "deviceType": 4294967295 }]}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Target field for second element path Returns CONSTRAINT_ERROR (0x87) @@ -2532,7 +2536,7 @@ tests: [{Endpoint: 22, DeviceType: 33}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": 22, "deviceType": 33 }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": null, "endpoint": 22, "deviceType": 33 }]}]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControlEntryStruct containing 2 elements using Invalid Target field for second element path Returns CONSTRAINT_ERROR (0x87) [1658477583.616961][3701:3706] CHIP:DMG: WriteClient moving to [ResponseRe] @@ -2608,7 +2612,7 @@ tests: [{Cluster: 11, Endpoint: 22, DeviceType: 33}]" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": 33 }]}]" 1 0 + ./chip-tool accesscontrol write acl '[{ "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, { "privilege": 3, "authMode": 2, "subjects": null, "targets":[{ "cluster": 11, "endpoint": 22, "deviceType": 33 }]}]' 1 0 On TH1(Chiptool) , Verify Successfully AccessControlEntryStruct containing 2 elements using Invalid Target field for second element path Returns CONSTRAINT_ERROR (0x87) [1658477662.415412][3710:3715] CHIP:EM: Removed CHIP MessageCounter:35384027 from RetransTable on exchange 6953i @@ -2682,7 +2686,7 @@ tests: is an empty list" PICS: ACL.S.A0000 verification: | - ./chip-tool accesscontrol write acl "[]" 1 0 + ./chip-tool accesscontrol write acl '[]' 1 0 On TH1(Chiptool) , Verify Successfully to AccessControl cluster ACL attribute value is an empty list since all ACL entries removed. RetransTable on exchange 43997i diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml index a2815f360a1d95..5bef11cd027112 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml @@ -24,6 +24,23 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + 1.N1 is the node ID of TH1 + + 2.D_OK_EMPTY:"1718" which is an octstr of length 2 containing valid TLV: + + - top-level anonymous list (empty) + + 3.D_OK_SINGLE:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" which is an octstr of length 50-100 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form + + 4 .D_BAD_LENGTH: "17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E6700D00000F1FF02003248656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E7420616761696E2E2E2E2E2E2E0018" which is an octstr of length 129 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml index 7f8e420f6d489c..0723273609cab5 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + N1 is the node ID of TH1 + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT 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 4cd0beae949f05..1bf38fb69a4ff0 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 @@ -24,6 +24,21 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + 1.N1 is the node ID of TH1 + + 2.N2 is the node ID of TH2 + + 2.D_OK_EMPTY: "1718" which is an octstr of length 2 containing valid TLV: + + - top-level anonymous list (empty) + + 3.D_OK_SINGLE:"17D00000F1FF01003D48656C6C6F20576F726C642E205468697320697320612073696E676C6520656C656D656E74206C6976696E6720617320612063686172737472696E670018" which is an octstr of length 50-100 containing valid TLV: + + - top-level anonymous list, containing - one element with profile-specific tag in fully-qualified form + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT 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 37805cdfb0bca0..d2aa037f31964e 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 @@ -24,6 +24,13 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + 1.N1 is the node ID of TH1 + + 2 .N2 is the node ID of TH2 + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml index e605cc3c6ba305..ee834c11f4752f 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Pre-Conditions" + verification: | + N1 is the node ID of TH1 + disabled: true + - label: "TH1 commissions DUT using admin node ID N1" verification: | DUT diff --git a/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml b/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml index d1f38dd809f311..068cde853d3751 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml @@ -81,7 +81,7 @@ tests: - label: "Read EndpointLists attribute of Actions server" PICS: ACT.S.A0001 verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs in TH Log: @@ -153,7 +153,7 @@ tests: - label: "Read ActionList attribute of Actions server" PICS: ACT.S.A0000 verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: @@ -340,7 +340,7 @@ tests: - label: "Read SetupURL attribute" PICS: ACT.S.A0002 verification: | - ./chip-tool bridgedactions read setup-url 1 1 + ./chip-tool actions read setup-url 1 1 Verify in TH(chip-tool) log diff --git a/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml b/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml index cfdb21d3bd883b..659c95c871835d 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml @@ -43,9 +43,8 @@ tests: disabled: true - label: "Read EndpointLists attribute" - PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs in TH Log: [1658426570.716289][16527:16532] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 3768747568 @@ -79,7 +78,7 @@ tests: - label: "Read EndpointLists attribute again" PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs in below Log: [1658408033.786811][14495:14500] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 3742844648 @@ -160,7 +159,7 @@ tests: - label: "Read EndpointLists attribute again" PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs [1658408033.786811][14495:14500] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 3742844648 @@ -182,7 +181,7 @@ tests: [1658408033.788278][14495:14500] CHIP:TOO: } disabled: true - - label: "compare result of step 2g to what was read in step 2e" + - label: "compare result of step 2g to what was read in step 2d" PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | compare result of step 2g to what was read in step 2d, Verify one EP (EP 3 in this case) has been moved from one EndpointListStruct to another EndpointListStruct @@ -199,7 +198,7 @@ tests: - label: "Read EndpointLists attribute again" PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs [1658426959.409374][16560:16565] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 3768747568 @@ -213,7 +212,7 @@ tests: [1658426959.409755][16560:16565] CHIP:TOO: } disabled: true - - label: "compare result of step 2j to what was read in step 2h" + - label: "compare result of step 2j to what was read in step 2g" PICS: ACT.S.A0001 && ACT.S.M.FillEndpointLists verification: | compare result of step 2j to what was read in step 2g, Verify one EndpointListStruct (the 2nd one in this example) got removed while the other one(s) did not change @@ -231,7 +230,7 @@ tests: - label: "Read EndpointLists attribute again" PICS: ACT.S.A0001 && ACT.S.M.OverlappingEndpointLists verification: | - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-lists 1 1 On TH(chip-tool), verify the EndpointListStructs 1658427088.316681][16578:16583] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0001 DataVersion: 3768747568 @@ -268,7 +267,7 @@ tests: - label: "Read ActionList attribute" PICS: ACT.S.A0000 && ACT.S.M.FillActionList verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: [1658479958.699434][26130:26135] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 198994220 @@ -302,7 +301,7 @@ tests: - label: "Read ActionList attribute again" PICS: ACT.S.A0000 && ACT.S.M.FillActionList verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: [1658480004.064867][26153:26158] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 198994220 @@ -384,7 +383,7 @@ tests: - label: "Read ActionList attribute again" PICS: ACT.S.A0000 && ACT.S.M.FillActionList verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: [1658480039.164683][26172:26177] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 198994220 @@ -415,7 +414,7 @@ tests: - label: "Read ActionList attribute again" PICS: ACT.S.A0000 && ACT.S.M.FillActionList verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: [1658480059.199268][26178:26183] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 198994220 @@ -454,7 +453,7 @@ tests: - label: "Read ActionList attribute" PICS: ACT.S.A0000 verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify ActionStructs in TH(chip-tool) Log: [1658480080.135069][26185:26190] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_0000 DataVersion: 198994220 @@ -481,7 +480,7 @@ tests: verification: | To subscribe StateChanged event follow below steps 1) ./chip-tool interactive start - 2) bridgedactions subscribe-event action-failed 2 30 1 0 + 2) actions subscribe-event action-failed 2 30 1 0 Verify in TH Log: [1659962630.453221][25381:25386] CHIP:EM: Removed CHIP MessageCounter:65903257 from RetransTable on exchange 50035i [1659962630.453246][25381:25386] CHIP:DMG: ReportDataMessage = @@ -506,7 +505,7 @@ tests: [1659962630.456551][25381:25386] CHIP:DMG: } [1659962630.456563][25381:25386] CHIP:DMG: Subscription established with SubscriptionID = 0x78f0a04c MinInterval = 0s MaxInterval = 100s Peer = 01:0000000000000001 - 3) bridgedactions instant-action 0x1001 1 1 + 3) actions instant-action 0x1001 1 1 Verify in TH Log @@ -524,7 +523,7 @@ tests: verification: | Only InstantActions command is supported - ./chip-tool bridgedactions instant-action 0x1001 1 1 + ./chip-tool actions instant-action 0x1001 1 1 Verify in TH Log diff --git a/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml b/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml index 3c8b4a75a40ad1..89258aeb54ec2b 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_3_1.yaml @@ -28,11 +28,16 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" verification: | - ./chip-tool bridgedactions read action-list 1 1 + ./chip-tool actions read action-list 1 1 Verify read command is received on TH(all-clusters-app) @@ -59,7 +64,7 @@ tests: - ./chip-tool bridgedactions read endpoint-list 1 1 + ./chip-tool actions read endpoint-list 1 1 Verify read command is received on TH(all-clusters-app ) @@ -91,7 +96,7 @@ tests: verification: | Optional attibute - ./chip-tool bridgedactions read setup-url 1 1 + ./chip-tool actions read setup-url 1 1 Verify read command is received on TH(all-clusters-app) @@ -137,7 +142,7 @@ tests: also reflects this in global attributes such as FeatureMap and AttributeList. Commission DUT to TH again" verification: | - ./chip-tool bridgedactions read attribute-list 1 1 + ./chip-tool actions read attribute-list 1 1 Verify attribute-list attribute contains 7 entries on TH(all-clusters-minimal-app) [1658393025.602745][13481:13486] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0025 Attribute 0x0000_FFFB DataVersion: 2868144574 @@ -211,7 +216,7 @@ tests: verification: | Optional attibute - ./chip-tool bridgedactions read setup-url 1 1 + ./chip-tool actions read setup-url 1 1 General error: 0x86 (UNSUPPORTED_ATTRIBUTE) disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml b/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml index 14fe1033e00e10..49353e5ffc64c1 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Preparation: TH as server exposes an Actions server cluster on EP 1, with one action (supporting all possible commands) and corresponding @@ -41,7 +46,7 @@ tests: - label: "DUT issues an InstantAction command to TH" PICS: ACT.C.C00.Tx verification: | - ./chip-tool bridgedactions instant-action 0x1001 1 1 + ./chip-tool actions instant-action 0x1001 1 1 Verify command is successfully sent on TH(all-clusters-app) @@ -84,7 +89,7 @@ tests: - label: "DUT issues an StartAction command to TH" PICS: ACT.C.C02.Tx verification: | - ./chip-tool bridgedactions start-action 0x1001 1 1 + ./chip-tool actions start-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -92,7 +97,7 @@ tests: - label: "DUT issues an StopAction command to TH" PICS: ACT.C.C04.Tx verification: | - ./chip-tool bridgedactions stop-action 0x1001 1 1 + ./chip-tool actions stop-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -100,7 +105,7 @@ tests: - label: "DUT issues an PauseAction command to TH" PICS: ACT.C.C05.Tx verification: | - ./chip-tool bridgedactions pause-action 0x1001 1 1 + ./chip-tool actions pause-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -108,7 +113,7 @@ tests: - label: "DUT issues an ResumeAction command to TH" PICS: ACT.C.C07.Tx verification: | - ./chip-tool bridgedactions resume-action 0x1001 1 1 + ./chip-tool actions resume-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -116,7 +121,7 @@ tests: - label: "DUT issues an EnableAction command to TH" PICS: ACT.C.C08.Tx verification: | - ./chip-tool bridgedactions enable-action 0x1001 1 1 + ./chip-tool actions enable-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -124,7 +129,7 @@ tests: - label: "DUT issues an DisableAction command to TH" PICS: ACT.C.C0a.Tx verification: | - ./chip-tool bridgedactions disable-action 0x1001 1 1 + ./chip-tool actions disable-action 0 1 1 Note: Message log similar as in step 1 disabled: true @@ -132,7 +137,7 @@ tests: - label: "DUT issues an StartActionWithDuration command to TH" PICS: ACT.C.C03.Tx verification: | - ./chip-tool bridgedactions start-action-with-duration 0x1001 1 1 + ./chip-tool actions start-action-with-duration 0x1001 100 1 1 Note: Message log similar as in step 1 disabled: true @@ -140,7 +145,7 @@ tests: - label: "DUT issues an PauseActionWithDuration command to TH" PICS: ACT.C.C06.Tx verification: | - ./chip-tool bridgedactions pause-action-with-duration 0x1001 1 1 + ./chip-tool actions pause-action-with-duration 0x1001 200 1 1 Note: Message log similar as in step 1 disabled: true @@ -148,7 +153,7 @@ tests: - label: "DUT issues an EnableActionWithDuration command to TH" PICS: ACT.C.C09.Tx verification: | - ./chip-tool bridgedactions enable-action-with-duration 0x1001 1 1 + ./chip-tool actions enable-action-with-duration 0x1001 300 1 1 Note: Message log similar as in step 1 disabled: true @@ -156,7 +161,7 @@ tests: - label: "DUT issues an DisableActionWithDuration command to TH" PICS: ACT.C.C0b.Tx verification: | - ./chip-tool bridgedactions disable-action-with-duration 0x1001 1 1 + ./chip-tool actions disable-action-with-duration 0 100 1 1 Note: Message log similar as in step 1 disabled: true @@ -164,7 +169,7 @@ tests: - label: "DUT issues an InstantActionWithTransition command to TH" PICS: ACT.C.C01.Tx verification: | - ./chip-tool bridgedactions instant-action-with-transition 0x1001 1 1 + ./chip-tool actions instant-action-with-transition 0x1001 400 1 1 Note: Message log similar as in step 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml index e47b10028fba67..2e8d999ea1b3f2 100644 --- a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml @@ -25,9 +25,12 @@ config: endpoint: 0 tests: - - label: "Preconditions:" + - label: + "Preconditions: Commission TH to DUT, if not done so already. In some + cases, such as with a Casting Video Player, the TH commissions the + DUT." verification: | - Commission TH to DUT, if not done so already. In some cases, such as with a Casting Video Player, the TH commissions the DUT. + disabled: true - label: "DUT sends StopApp command to TH" diff --git a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml index 24136fc704c78f..ab3748ba234aca 100644 --- a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml @@ -25,9 +25,12 @@ config: endpoint: 0 tests: - - label: "Preconditions:" + - label: + "Preconditions: Commission TH to DUT, if not done so already. In some + cases, such as with a Casting Video Player, the TH commissions the + DUT." verification: | - Commission TH to DUT, if not done so already. In some cases, such as with a Casting Video Player, the TH commissions the DUT. + disabled: true - label: "DUT sends HideApp command to TH" diff --git a/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml b/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml index 7f0f8f54599661..3c755cd927f1b2 100644 --- a/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml @@ -25,6 +25,11 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + This test can be verified using TC-SU-2.3 from the OTA Software Update section. Pls refer to OTA section for steps. + disabled: true + - label: "DUT sends a ReceiveInit message to TH" verification: | 1. Verify that the OTA Reference Provider App logs show ReceiveInit message from DUT diff --git a/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml b/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml index 164b89b58c0c6f..992be636e12a7c 100644 --- a/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml @@ -25,6 +25,11 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + This test can be verified using TC-SU-3.3 from the OTA Software Update section. Pls refer to OTA section for steps. + disabled: true + - label: "TH sends a ReceiveInit message to DUT + DUT sends a ReceiveAccept message back to TH" diff --git a/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml index eb8cd3dede6d48..449215850abb40 100644 --- a/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml @@ -24,6 +24,12 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + This test can be verified using TC-SU-3.3 from the OTA Software Update section. Pls refer to OTA section for steps. + This test can also be verified with TH sending a ReceiveInit message to the DUT. + disabled: true + - label: "DUT sends a SendInit message to TH + TH sends a SendAccept message back to DUT + DUT sends a Block message to TH + TH sends a BlockAck diff --git a/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml index d8ea0b6645e8d5..21a032bf91f87f 100644 --- a/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml @@ -24,6 +24,12 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + This test can be verified using TC-SU-2.3 from the OTA Software Update section. Pls refer to OTA section for steps. + This test can also be verified with DUT sending a ReceiveInit message to the TH. + disabled: true + - label: "TH sends the first Block message to DUT + DUT sends a BlockAck message back to TH." diff --git a/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml index 497fdbd19eff2f..0be1511b414bf6 100644 --- a/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml @@ -35,15 +35,15 @@ tests: - label: "Note" verification: | - 1.Need 4 raspi for this test case and use 3 raspi as dut[all-cluster-app] and 1 raspi as chip-tool. + 1.This test case requires 4 raspi to execute. 1 raspi as Commissioner. and 1 raspi as dut[Controller] 2 raspi as controllee - 2.1st raspi which is used as DUT , which you are going to pair with onnetwork, you need to build shell command on that all clusters app.[build shell on DUT 1 Use - [scripts/examples/gn_build_example.sh examples/all-clusters-app/linux/ out/all-clusters-app chip_inet_config_enable_ipv4=false chip_build_libshell=true ] + 2. In this example, RASP is used as DUT & it requires additional shell access to execute the controller commands. To support the shell, use the following command to build the all-clusters-app . On the DUT device Use - [scripts/examples/gn_build_example.sh examples/all-clusters-app/linux/ out/all-clusters-app chip_inet_config_enable_ipv4=false chip_build_libshell=true ] - (Vendor DUT must have this provision to execute the controller commands. ) - 3.Pair TH2 , TH3 with ble-wifi with different discriminator as mentioned below, using the chip-tool running on 4th raspi. + 3.Pair TH2 , TH3 with ble-wifi with different discriminator as mentioned below test steps , using the chip-tool running as commissioner in one RPI. - 4.using chip-tool (on the 4th raspi) write the ACL entries in both TH2 and TH3 allowing to receive commands for onoff cluster from DUT + 4.using the commissioner write the ACL entries on both TH2 and TH3 for allowing to receive commands for onoff cluster from DUT(Controller) - 5.Hit Enter on raspi , you will see shell prompt (>) , enter help, you will command for switch . At the prompt enter switch on ,the on command is sent to both TH2 and TH3. you can see that in the log. to test if the TH2/TH3 are turned on or not, you can read the on-off attribute status. Read the status before sending the switch on command and read after sending the command. you should see the value changing. + 5.Hit the Enter button on raspi , you will see a shell prompt (>) , enter help, this would list the command for switch . At the prompt enter switch on ,the "on" command is sent to both TH2 and TH3. and the command and corresponding response can be verified in the log. to test if the TH2/TH3 are turned on or not, you can read the on-off attribute status. Read the status before sending the switch on command and read after sending the command. you should see the value changing. disabled: true - label: "Factory Reset DUT" @@ -75,7 +75,7 @@ tests: verification: | ./chip-tool binding write binding "[{"node" : 2 , "cluster" : "0x0006" , "endpoint" : 1 }, { "node" : 3 , "cluster" : "0x0006" , "endpoint" : 2 }]" 1 1 - On TH(Chip-tool), Verify the success response for binding entries + On TH1(Chip-tool), Verify the success response for binding entries [1657797710.456056][3796:3801] CHIP:DMG: status = 0x00 (SUCCESS), @@ -103,7 +103,7 @@ tests: verification: | ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": [1], "targets": [{"cluster": 6, "endpoint": 1, "deviceType": null}]}]" 2 0 - on TH (Chip-tool), Verify the on command receives success response + on TH1 (Chip-tool), Verify the on command receives success response [1652330385.328196][3240:3245] CHIP:DMG: StatusIB = [1652330385.328229][3240:3245] CHIP:DMG: { @@ -113,7 +113,7 @@ tests: ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": [1], "targets": [{"cluster": 6, "endpoint": 2, "deviceType": null}]}]" 3 0 - on TH(Chip-tool), Verify the on command receives success response + on TH1(Chip-tool), Verify the on command receives success response [1650610345.847274][2626:2631] CHIP:DMG: StatusIB = [1650610345.847317][2626:2631] CHIP:DMG: { @@ -226,14 +226,14 @@ tests: verification: | ./chip-tool onoff read on-off 2 1 - Verify on TH (Chip-tool),the onoff value is set to ON + Verify on TH2 (Chip-tool),the onoff value is set to ON [1657798291.396477][3835:3841] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 4260513117 [1657798291.396514][3835:3841] CHIP:TOO: OnOff: TRUE ./chip-tool onoff read on-off 3 2 - Verify on TH(Chip-tool) ,the onoff value is set to ON + Verify on TH3 (Chip-tool) ,the onoff value is set to ON [1657798691.194894][3869:3874] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 470320746 [1657798691.194948][3869:3874] CHIP:TOO: OnOff: TRUE @@ -243,7 +243,7 @@ tests: verification: | ./chip-tool binding write binding "[{"node" : 2 , "cluster" : "0x0006" , "endpoint" : 1 }]" 1 1 - Verify on TH(Chip-tool) ,binding entry receives success response + Verify on TH1(Chip-tool) ,binding entry receives success response [1657800844.739833][4000:4006] CHIP:EM: Removed CHIP MessageCounter:244702117 from RetransTable on exchange 12653i [1657800844.739867][4000:4006] CHIP:DMG: WriteClient moving to [ResponseRe] @@ -347,7 +347,7 @@ tests: verification: | ./chip-tool onoff read on-off 2 1 - Verify on TH (Chip-tool),the onoff value is set to OFF + Verify on TH2 (Chip-tool),the onoff value is set to OFF [1657803168.769564][4272:4277] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 1968648540 @@ -359,7 +359,7 @@ tests: verification: | ./chip-tool onoff read on-off 3 2 - Verify on TH(Chip-tool) ,the onoff value is set to ON + Verify on TH3 (Chip-tool) ,the onoff value is set to ON [1657803609.731464][4333:4339] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3914456390 diff --git a/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml index a1be718287b73c..e55907df9aaf6f 100644 --- a/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml @@ -212,7 +212,7 @@ tests: ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 74 0 - On TH(Chip-tool), Verify the success response for Acl: + On TH1(Chip-tool), Verify the success response for Acl: [1659075680.943991][2687:2692] CHIP:DMG: StatusIB = [1659075680.944052][2687:2692] CHIP:DMG: { @@ -222,7 +222,7 @@ tests: ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 2 0 - On TH(Chip-tool), Verify the success response for Acl: + On TH1(Chip-tool), Verify the success response for Acl: [1659075680.943991][2687:2692] CHIP:DMG: StatusIB = [1659075680.944052][2687:2692] CHIP:DMG: { @@ -238,7 +238,7 @@ tests: ./chip-tool onoff read on-off 2 1 - On TH (Chip-tool), Verify the value is set to ON + On TH1 (Chip-tool), Verify the value is set to ON [1657717900.832851][4381:4386] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 1558029216 [1657717900.832890][4381:4386] CHIP:TOO: OnOff: TRUE @@ -250,7 +250,7 @@ tests: ./chip-tool binding write binding "[]" 74 1 - On TH(Chip-tool), Verify the success response for removing binding entry + On TH1(Chip-tool), Verify the success response for removing binding entry [1659362827.431927][2469:2475] CHIP:DMG: StatusIB = [1659362827.431996][2469:2475] CHIP:DMG: { @@ -273,7 +273,7 @@ tests: ./chip-tool onoff read on-off 2 1 - On TH(Chip-tool), Verify the value is set to ON + On TH1(Chip-tool), Verify the value is set to ON [1657718251.169765][4425:4431] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 1558029223 [1657718251.169817][4425:4431] CHIP:TOO: OnOff: TRUE diff --git a/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml b/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml index ead8ff52038077..3457cdc91e536e 100644 --- a/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml @@ -69,7 +69,7 @@ tests: ./chip-tool pairing onnetwork 2 20202021 - On TH(Chip-tool), Verify the success response + On TH1(Chip-tool), Verify the success response [1659104612.592373][62366:62371] CHIP:DMG: SuppressResponse = true, [1659104612.592399][62366:62371] CHIP:DMG: InteractionModelRevision = 1 @@ -97,7 +97,7 @@ tests: "d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2": "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }" 74 0 - On TH(Chip-tool), Verify the success response for KeySetWrite + On TH1(Chip-tool), Verify the success response for KeySetWrite [1657719041.075123][4541:4546] CHIP:DMG: ICR moving to [ResponseRe] [1657719041.075174][4541:4546] CHIP:DMG: InvokeResponseMessage = @@ -138,7 +138,7 @@ tests: "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }" 2 0 [1657719041.076036][4541:4546] CHIP:DMG: } - On TH, Verify the success response for KeySetWrite + On TH1, Verify the success response for KeySetWrite [1657719041.075743][4541:4546] CHIP:DMG: status = 0x00 (SUCCESS), disabled: true @@ -151,7 +151,7 @@ tests: ./chip-tool groupkeymanagement write group-key-map "[{"groupId": 1, "groupKeySetID": 42, "fabricIndex": 1}]" 74 0 - On TH(Chip-tool), Verify the success response for GroupKeySetID + On TH1(Chip-tool), Verify the success response for GroupKeySetID [1657719130.464175][4557:4562] CHIP:DMG: StatusIB = [1657719130.464214][4557:4562] CHIP:DMG: { @@ -163,7 +163,7 @@ tests: ./chip-tool groupkeymanagement write group-key-map "[{"groupId": 1, "groupKeySetID": 42, "fabricIndex": 1}]" 2 0 - On TH(Chip-tool), Verify the success response for GroupKeySetID + On TH1(Chip-tool), Verify the success response for GroupKeySetID [1657719130.464175][4557:4562] CHIP:DMG: StatusIB = [1657719130.464214][4557:4562] CHIP:DMG: { @@ -180,7 +180,7 @@ tests: ./chip-tool groups add-group 0x0001 grp1 74 1 - On TH(Chip-tool), Verify the success response for AddGroup + On TH1(Chip-tool), Verify the success response for AddGroup [1657719097.788236][4548:4554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0004 Command 0x0000_0000 [1657719097.788325][4548:4554] CHIP:TOO: AddGroupResponse: { @@ -193,7 +193,7 @@ tests: ./chip-tool groups add-group 0x0001 grp1 2 1 - On TH(Chip-tool), Verify the success response for AddGroup + On TH1(Chip-tool), Verify the success response for AddGroup [1657719097.788236][4548:4554] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0004 Command 0x0000_0000 [1657719097.788325][4548:4554] CHIP:TOO: AddGroupResponse: { @@ -228,7 +228,7 @@ tests: ./chip-tool binding write binding "[{"group" : "0x0001"}]" 74 1 - On TH(Chip-tool), Verify the success response for binding entry + On TH1(Chip-tool), Verify the success response for binding entry [1657719251.763323][4597:4602] CHIP:DMG: StatusIB = [1657719251.763360][4597:4602] CHIP:DMG: { @@ -250,7 +250,7 @@ tests: ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 74 0 - On TH(Chip-tool), Verify the success response for Acl: + On TH1(Chip-tool), Verify the success response for Acl: [1659075680.943991][2687:2692] CHIP:DMG: StatusIB = [1659075680.944052][2687:2692] CHIP:DMG: { @@ -260,7 +260,7 @@ tests: ./chip-tool accesscontrol write acl "[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": [1], "targets": null }]" 2 0 - On TH(Chip-tool), Verify the success response for Acl: + On TH1(Chip-tool), Verify the success response for Acl: [1659075680.943991][2687:2692] CHIP:DMG: StatusIB = [1659075680.944052][2687:2692] CHIP:DMG: { @@ -288,7 +288,7 @@ tests: ./chip-tool binding write binding "[]" 74 1 - On TH(Chip-tool), Verify the success response for removing binding entry + On TH1(Chip-tool), Verify the success response for removing binding entry [1659362827.431927][2469:2475] CHIP:DMG: StatusIB = [1659362827.431996][2469:2475] CHIP:DMG: { @@ -311,7 +311,7 @@ tests: ./chip-tool onoff read on-off 2 1 - On TH(Chip-tool), Verify the onoff value is set to ON + On TH1(Chip-tool), Verify the onoff value is set to ON [1657719448.858149][4636:4641] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3526720174 [1657719448.858183][4636:4641] CHIP:TOO: OnOff: TRUE diff --git a/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml index 72b45884c4f604..27166db07e5fbe 100644 --- a/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml @@ -85,38 +85,26 @@ tests: PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | On TH(chip-tool), verify the StateValue value as FALSE - - [1646119162.628169][3311:3316] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0045 Attribute 0x0000_0000DataVersion: 2127727071 - [1646119162.628207][3311:3316] CHIP:TOO: StateValue: FALSE disabled: true - label: "TH reads the StateValue attribute from the DUT" PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | - ./chip-tool booleanstate read state-value 1 1 + booleanstate read state-value 1 1 On TH(chip-tool), verify the StateValue value as FALSE - - [1646118838.087500][3279:3284] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0045 Attribute 0x0000_0000DataVersion: 2127727071 - [1646118838.087536][3279:3284] CHIP:TOO: StateValue: FALSE disabled: true - label: "Bring the DUT into a state so StateValue is TRUE" PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | On TH(chip-tool), verify the StateValue value as TRUE - - [1646119162.628169][3311:3316] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0045 Attribute 0x0000_0000DataVersion: 2127727071 - [1646119162.628207][3311:3316] CHIP:TOO: StateValue: TRUE disabled: true - label: "TH reads the StateValue attribute from the DUT" PICS: BOOL.M.ManuallyControlled && BOOL.S.E00 && BOOL.S.A0000 verification: | - ./chip-tool booleanstate read state-value 1 1 + booleanstate read state-value 1 1 On TH(chip-tool), verify the StateValue value as TRUE - - [1646118838.087500][3279:3284] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0045 Attribute 0x0000_0000DataVersion: 2127727071 - [1646118838.087536][3279:3284] CHIP:TOO: StateValue: TRUE disabled: true 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 9f1e1b56fea93e..af032127cea265 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 @@ -139,15 +139,15 @@ tests: NOTE the quotes: single-quote/double-quote/string/double-quote/single-quote - On TH(chip-tool) verify that DUT sends a success response - [1656495932.122094][2236:2241] CHIP:DMG: } - [1656495932.122264][2236:2241] CHIP:DMG: - [1656495932.122332][2236:2241] CHIP:DMG: StatusIB = - [1656495932.122398][2236:2241] CHIP:DMG: { - [1656495932.122466][2236:2241] CHIP:DMG: status = 0x00 (SUCCESS), - [1656495932.122538][2236:2241] CHIP:DMG: }, - [1656495932.122602][2236:2241] CHIP:DMG: - [1656495932.122660][2236:2241] CHIP:DMG: }, + + [1660839701.840432][2444:2449] CHIP:DMG: } + [1660839701.840505][2444:2449] CHIP:DMG: + [1660839701.840578][2444:2449] CHIP:DMG: StatusIB = + [1660839701.840661][2444:2449] CHIP:DMG: { + [1660839701.840742][2444:2449] CHIP:DMG: status = 0x88 (UNSUPPORTED_WRITE), + [1660839701.840827][2444:2449] CHIP:DMG: }, + [1660839701.840905][2444:2449] CHIP:DMG: + [1660839701.840973][2444:2449] CHIP:DMG: }, disabled: true - label: "TH reads NodeLabel" @@ -472,7 +472,7 @@ tests: false." PICS: BRBINFO.S.A0011 verification: | - ./chip-tool bridgeddevicebasic write-by-id 0x0005 ‘“false”’ 1 0 + ./chip-tool bridgeddevicebasic write-by-id 0x0005 false 1 0 diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml index ed625f1badc7e6..8f9c01ccd13edb 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml @@ -21,6 +21,19 @@ config: endpoint: 0 tests: + - label: "Precondition" + verification: | + 1. DUT and TH can interact with each other. DUT is commissioned. + + 2. TH reads SoftwareVersion attribute from DUT and saves for future use + + 3. TH reads Reachable attribute from DUT and saves for future use + + 4. TH subscribes to StartUp, ShutDown, ReachableChanged and Leave events on the Basic cluster of the DUT + + 5. TH saves the FabricIndex during commissioning + disabled: true + - label: "Reboot the DUT (i.e. restart by power cycle, not by making it factory new) TH receives the StartUp event from DUT" 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 ac004b610d315b..343d47dbd49355 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 @@ -23,18 +23,18 @@ config: tests: - label: "Note" verification: | - Note: : For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true - - label: "Note" + - label: "Precondition" verification: | - For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + 1. Commission TH to DUT disabled: true - label: "DUT reads VendorName from the TH" PICS: BRBINFO.C.A0001 verification: | - ./chip-tool bridgeddevicebasic read vendor-name 1 0 + ./chip-tool bridgeddevicebasic read vendor-name 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -66,7 +66,7 @@ tests: - label: "DUT reads VendorID from the TH" PICS: BRBINFO.C.A0002 verification: | - ./chip-tool bridgeddevicebasic read vendor-id 1 0 + ./chip-tool bridgeddevicebasic read vendor-id 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -120,7 +120,7 @@ tests: - label: "DUT reads ProductName from the TH" PICS: BRBINFO.C.A0003 verification: | - ./chip-tool bridgeddevicebasic read product-name 1 0 + ./chip-tool bridgeddevicebasic read product-name 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -150,7 +150,7 @@ tests: - label: "DUT reads NodeLabel from the TH" PICS: BRBINFO.C.A0005 verification: | - ./chip-tool bridgeddevicebasic read node-label 1 0 + ./chip-tool bridgeddevicebasic read node-label 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -183,7 +183,7 @@ tests: - label: "DUT reads Location from the TH" PICS: BRBINFO.C.A0006 verification: | - ./chip-tool bridgeddevicebasic read location 1 0 + ./chip-tool bridgeddevicebasic read location 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -216,7 +216,7 @@ tests: - label: "DUT reads HardwareVersion from the TH" PICS: BRBINFO.C.A0007 verification: | - ./chip-tool bridgeddevicebasic read hardware-version-string 1 0 + ./chip-tool bridgeddevicebasic read hardware-version 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -249,7 +249,7 @@ tests: - label: "DUT reads HardwareVersionString from the TH" PICS: BRBINFO.C.A0008 verification: | - ./chip-tool bridgeddevicebasic read hardware-version-string 1 0 + ./chip-tool bridgeddevicebasic read hardware-version-string 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -283,7 +283,7 @@ tests: - label: "DUT reads SoftwareVersion from the TH" PICS: BRBINFO.C.A0009 verification: | - ./chip-tool bridgeddevicebasic read software-version 1 0 + ./chip-tool bridgeddevicebasic read software-version 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -317,7 +317,7 @@ tests: - label: "DUT reads SoftwareVersionString from the TH" PICS: BRBINFO.C.A000a verification: | - ./chip-tool bridgeddevicebasic read software-version-string 1 0 + ./chip-tool bridgeddevicebasic read software-version-string 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -351,7 +351,7 @@ tests: - label: "DUT reads ManufacturingDate from the TH" PICS: BRBINFO.C.A000b verification: | - ./chip-tool bridgeddevicebasic read manufacturing-date 1 0 + ./chip-tool bridgeddevicebasic read manufacturing-date 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -385,7 +385,7 @@ tests: - label: "DUT reads PartNumber from the TH" PICS: BRBINFO.C.A000c verification: | - ./chip-tool bridgeddevicebasic read part-number 1 0 + ./chip-tool bridgeddevicebasic read part-number 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -419,7 +419,7 @@ tests: - label: "DUT reads ProductURL from the TH" PICS: BRBINFO.C.A000d verification: | - ./chip-tool bridgeddevicebasic read product-url 1 0 + ./chip-tool bridgeddevicebasic read product-url 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -453,7 +453,7 @@ tests: - label: "DUT reads ProductLabel from the TH" PICS: BRBINFO.C.A000e verification: | - ./chip-tool bridgeddevicebasic read product-label 1 0 + ./chip-tool bridgeddevicebasic read product-label 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -487,7 +487,7 @@ tests: - label: "DUT reads SerialNumber from the TH" PICS: BRBINFO.C.A000f verification: | - ./chip-tool bridgeddevicebasic read serial-number 1 0 + ./chip-tool bridgeddevicebasic read serial-number 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE @@ -521,7 +521,7 @@ tests: - label: "DUT reads Reachable from the TH" PICS: BRBINFO.C.A0011 verification: | - ./chip-tool bridgeddevicebasic read reachable 1 0 + ./chip-tool bridgeddevicebasic read reachable 1 3 Verify ReadRequestMessage is displayed on TH(all-clusters-app) Log [1659966974.431316][3334:3334] CHIP:IM: Received Read request @@ -552,7 +552,7 @@ tests: - label: "DUT reads UniqueID from the TH" PICS: BRBINFO.C.A0012 verification: | - ./chip-tool bridgeddevicebasic read unique-id 1 0 + ./chip-tool bridgeddevicebasic read unique-id 1 3 Optional Attribute - If it is supported, then in TH(all-clusters-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE 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 e836b98ba2ffdf..0effe409a9420b 100644 --- a/src/app/tests/suites/certification/Test_TC_BR_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_BR_4.yaml @@ -29,6 +29,14 @@ tests: For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Precondition" + verification: | + 1. Test Harness simulating a bridge with some bridged devices; can use the bridge-app for this purpose + + 2.DUT (client and commissioner) + + disabled: true + - label: "Start bridge-app on TH. Commission TH to DUT. Monitor traffic between DUT and TH." @@ -37,173 +45,352 @@ tests: ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2753 5540 - Verify DeviceTypeList for available EP - ./chip-tool descriptor read device-list 1 1 Verify in TH(all-clusters-app) Log: - [1657002313.871608][3977:3982] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3021853414 - [1657002313.871680][3977:3982] CHIP:TOO: device list: 1 entries - [1657002313.871740][3977:3982] CHIP:TOO: [1]: { - [1657002313.871788][3977:3982] CHIP:TOO: Type: 14 - [1657002313.871821][3977:3982] CHIP:TOO: Revision: 1 - [1657002313.871852][3977:3982] :TOOCHIP: } + [1659972694.732632][3652:3652] CHIP:IM: Received Read request + [1659972694.732712][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972694.732739][3652:3652] CHIP:DMG: { + [1659972694.732761][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972694.732800][3652:3652] CHIP:DMG: [ + [1659972694.732824][3652:3652] CHIP:DMG: AttributePathIB = + [1659972694.732866][3652:3652] CHIP:DMG: { + [1659972694.732905][3652:3652] CHIP:DMG: Endpoint = 0x1, + [1659972694.732940][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972694.732980][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972694.733009][3652:3652] CHIP:DMG: } + [1659972694.733066][3652:3652] CHIP:DMG: + [1659972694.733092][3652:3652] CHIP:DMG: ], + [1659972694.733128][3652:3652] CHIP:DMG: + [1659972694.733154][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972694.733188][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972694.733211][3652:3652] CHIP:DMG: }, + [1659972694.733292][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972694.733401][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972694.733429][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + [1659972694.733460][3652:3652] CHIP:DMG: Reading attribute: Cluster=0x0000_001D Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1659972694.733487][3652:3652] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_001D e=1 p=v + [1659972694.733520][3652:3652] CHIP:DMG: AccessControl: allowed + + + ./chip-tool descriptor read device-list 1 2 + + Verify in TH(all-clusters-app) Log: + [1659972694.732632][3652:3652] CHIP:IM: Received Read request + [1659972694.732712][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972694.732739][3652:3652] CHIP:DMG: { + [1659972694.732761][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972694.732800][3652:3652] CHIP:DMG: [ + [1659972694.732824][3652:3652] CHIP:DMG: AttributePathIB = + [1659972694.732866][3652:3652] CHIP:DMG: { + [1659972694.732905][3652:3652] CHIP:DMG: Endpoint = 0x2, + [1659972694.732940][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972694.732980][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972694.733009][3652:3652] CHIP:DMG: } + [1659972694.733066][3652:3652] CHIP:DMG: + [1659972694.733092][3652:3652] CHIP:DMG: ], + [1659972694.733128][3652:3652] CHIP:DMG: + [1659972694.733154][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972694.733188][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972694.733211][3652:3652] CHIP:DMG: }, + [1659972694.733292][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972694.733401][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972694.733429][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + [1659972694.733460][3652:3652] CHIP:DMG: Reading attribute: Cluster=0x0000_001D Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1659972694.733487][3652:3652] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_001D e=1 p=v + [1659972694.733520][3652:3652] CHIP:DMG: AccessControl: allowed ./chip-tool descriptor read device-list 1 3 Verify in TH(all-clusters-app) Log: - [1657002329.438065][3983:3988] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2452512872 - [1657002329.438135][3983:3988] CHIP:TOO: device list: 2 entries - [1657002329.438193][3983:3988] CHIP:TOO: [1]: { - [1657002329.438238][3983:3988] CHIP:TOO: Type: 256 - [1657002329.438269][3983:3988] CHIP:TOO: Revision: 1 - [1657002329.438298][3983:3988] CHIP:TOO: } - [1657002329.438332][3983:3988] CHIP:TOO: [2]: { - [1657002329.438360][3983:3988] CHIP:TOO: Type: 19 - [1657002329.438389][3983:3988] CHIP:TOO: Revision: 1 - [1657002329.438416][3983:3988] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 4 Verify in TH(all-clusters-app) Log: - [1657002348.693948][3989:3994] CHIP:TOO: Endpoint: 4 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1398882309 - [1657002348.694013][3989:3994] CHIP:TOO: device list: 2 entries - [1657002348.694063][3989:3994] CHIP:TOO: [1]: { - [1657002348.694100][3989:3994] CHIP:TOO: Type: 259 - [1657002348.694125][3989:3994] CHIP:TOO: Revision: 1 - [1657002348.694149][3989:3994] CHIP:TOO: } - [1657002348.694176][3989:3994] CHIP:TOO: [2]: { - [1657002348.694199][3989:3994] CHIP:TOO: Type: 19 - [1657002348.694221][3989:3994] CHIP:TOO: Revision: 1 - [1657002348.694242][3989:3994] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 5 Verify in TH(all-clusters-app) Log: - [1657002369.589492][3996:4001] CHIP:TOO: Endpoint: 5 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 130458766 - [1657002369.589556][3996:4001] CHIP:TOO: device list: 2 entries - [1657002369.589610][3996:4001] CHIP:TOO: [1]: { - [1657002369.589653][3996:4001] CHIP:TOO: Type: 259 - [1657002369.589682][3996:4001] CHIP:TOO: Revision: 1 - [1657002369.589710][3996:4001] CHIP:TOO: } - [1657002369.589742][3996:4001] CHIP:TOO: [2]: { - [1657002369.589768][3996:4001] CHIP:TOO: Type: 19 - [1657002369.589794][3996:4001] CHIP:TOO: Revision: 1 - [1657002369.589819][3996:4001] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x5, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 6 Verify in TH(all-clusters-app) Log: - [1657002386.484093][4002:4007] CHIP:TOO: Endpoint: 6 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 295450100 - [1657002386.484155][4002:4007] CHIP:TOO: device list: 1 entries - [1657002386.484255][4002:4007] CHIP:TOO: [1]: { - [1657002386.484302][4002:4007] CHIP:TOO: Type: 19 - [1657002386.484332][4002:4007] CHIP:TOO: Revision: 1 - [1657002386.484361][4002:4007] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x6, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 7 Verify in TH(all-clusters-app) Log: - [1657002413.721927][4015:4020] CHIP:TOO: Endpoint: 7 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2117104859 - [1657002413.721981][4015:4020] CHIP:TOO: device list: 1 entries - [1657002413.722028][4015:4020] CHIP:TOO: [1]: { - [1657002413.722065][4015:4020] CHIP:TOO: Type: 259 - [1657002413.722090][4015:4020] CHIP:TOO: Revision: 1 - [1657002413.722113][4015:4020] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x7, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 8 Verify in TH(all-clusters-app) Log: - [1657002436.415904][4034:4039] CHIP:TOO: Endpoint: 8 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2026786918 - [1657002436.415972][4034:4039] CHIP:TOO: device list: 1 entries - [1657002436.416033][4034:4039] CHIP:TOO: [1]: { - [1657002436.416081][4034:4039] CHIP:TOO: Type: 259 - [1657002436.416115][4034:4039] CHIP:TOO: Revision: 1 - [1657002436.416146][4034:4039] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x8, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 9 Verify in TH(all-clusters-app) Log: - [1657002455.445818][4040:4045] CHIP:TOO: Endpoint: 9 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 913116116 - [1657002455.445883][4040:4045] CHIP:TOO: device list: 1 entries - [1657002455.445944][4040:4045] CHIP:TOO: [1]: { - [1657002455.445991][4040:4045] CHIP:TOO: Type: 17 - [1657002455.446025][4040:4045] CHIP:TOO: Revision: 1 - [1657002455.446056][4040:4045] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x9, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 10 Verify in TH(all-clusters-app) Log: - [1657002473.100910][4047:4052] CHIP:TOO: Endpoint: 10 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 259205426 - [1657002473.100967][4047:4052] CHIP:TOO: device list: 2 entries - [1657002473.101013][4047:4052] CHIP:TOO: [1]: { - [1657002473.101051][4047:4052] CHIP:TOO: Type: 256 - [1657002473.101076][4047:4052] CHIP:TOO: Revision: 1 - [1657002473.101098][4047:4052] CHIP:TOO: } - [1657002473.101126][4047:4052] CHIP:TOO: [2]: { - [1657002473.101148][4047:4052] CHIP:TOO: Type: 19 - [1657002473.101170][4047:4052] CHIP:TOO: Revision: 1 - [1657002473.101192][4047:4052] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x10, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 11 Verify in TH(all-clusters-app) Log: - [1657002495.856770][4061:4066] CHIP:TOO: Endpoint: 11 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 4248421677 - [1657002495.856836][4061:4066] CHIP:TOO: device list: 2 entries - [1657002495.856893][4061:4066] CHIP:TOO: [1]: { - [1657002495.856938][4061:4066] CHIP:TOO: Type: 256 - [1657002495.856968][4061:4066] CHIP:TOO: Revision: 1 - [1657002495.856996][4061:4066] CHIP:TOO: } - [1657002495.857030][4061:4066] CHIP:TOO: [2]: { - [1657002495.857058][4061:4066] CHIP:TOO: Type: 19 - [1657002495.857085][4061:4066] CHIP:TOO: Revision: 1 - [1657002495.857112][4061:4066] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x11, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 12 Verify in TH(all-clusters-app) Log: - [1657002515.862187][4073:4078] CHIP:TOO: Endpoint: 12 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2731599835 - [1657002515.862249][4073:4078] CHIP:TOO: device list: 2 entries - [1657002515.862302][4073:4078] CHIP:TOO: [1]: { - [1657002515.862343][4073:4078] CHIP:TOO: Type: 256 - [1657002515.862372][4073:4078] CHIP:TOO: Revision: 1 - [1657002515.862398][4073:4078] CHIP:TOO: } - [1657002515.862429][4073:4078] CHIP:TOO: [2]: { - [1657002515.862455][4073:4078] CHIP:TOO: Type: 19 - [1657002515.862480][4073:4078] CHIP:TOO: Revision: 1 - [1657002515.862504][4073:4078] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x12, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + ./chip-tool descriptor read device-list 1 13 Verify in TH(all-clusters-app) Log: - [1657002538.134605][4097:4102] CHIP:TOO: Endpoint: 13 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3449178249 - [1657002538.134700][4097:4102] CHIP:TOO: device list: 2 entries - [1657002538.134784][4097:4102] CHIP:TOO: [1]: { - [1657002538.134869][4097:4102] CHIP:TOO: Type: 256 - [1657002538.134916][4097:4102] CHIP:TOO: Revision: 1 - [1657002538.134973][4097:4102] CHIP:TOO: } - [1657002538.135025][4097:4102] CHIP:TOO: [2]: { - [1657002538.135083][4097:4102] CHIP:TOO: Type: 19 - [1657002538.135126][4097:4102] CHIP:TOO: Revision: 1 - [1657002538.135166][4097:4102] CHIP:TOO: } + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x13, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty @@ -212,160 +399,1343 @@ tests: ./chip-tool descriptor read parts-list 1 0 Verify in TH(all-clusters-app) Log: + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x0, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + ./chip-tool descriptor read parts-list 1 1 + + Verify in TH(all-clusters-app) Log: + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x1, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + ./chip-tool descriptor read parts-list 1 2 + + Verify in TH(all-clusters-app) Log: + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x2, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + ./chip-tool descriptor read parts-list 1 3 + + Verify in TH(all-clusters-app) Log: + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 4 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 5 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x5, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 6 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x6, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 7 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x7, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 8 - [1657002201.045720][3893:3899] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 3573910940 - [1657002201.045841][3893:3899] CHIP:TOO: parts list: 12 entries - [1657002201.045887][3893:3899] CHIP:TOO: [1]: 1 - [1657002201.045925][3893:3899] CHIP:TOO: [2]: 3 - [1657002201.045963][3893:3899] CHIP:TOO: [3]: 4 - [1657002201.046000][3893:3899] CHIP:TOO: [4]: 5 - [1657002201.046037][3893:3899] CHIP:TOO: [5]: 6 - [1657002201.046073][3893:3899] CHIP:TOO: [6]: 7 - [1657002201.046110][3893:3899] CHIP:TOO: [7]: 8 - [1657002201.046147][3893:3899] CHIP:TOO: [8]: 9 - [1657002201.046184][3893:3899] CHIP:TOO: [9]: 10 - [1657002201.046221][3893:3899] CHIP:TOO: [10]: 11 - [1657002201.046259][3893:3899] CHIP:TOO: [11]: 12 - [1657002201.046296][3893:3899] CHIP:TOO: [12]: 13 + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x8, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 9 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x9, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 10 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x10, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + ./chip-tool descriptor read parts-list 1 11 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x11, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 12 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x12, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 13 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x13, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + disabled: true + + - label: "" + PICS: MCORE.DEVLIST.UseDevices + verification: | + Verify DUT contains the (supported) devices from the above list + + ./chip-tool descriptor read device-list 1 1 + + Verify in TH(all-clusters-app) Log: + + [1659972694.732632][3652:3652] CHIP:IM: Received Read request + [1659972694.732712][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972694.732739][3652:3652] CHIP:DMG: { + [1659972694.732761][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972694.732800][3652:3652] CHIP:DMG: [ + [1659972694.732824][3652:3652] CHIP:DMG: AttributePathIB = + [1659972694.732866][3652:3652] CHIP:DMG: { + [1659972694.732905][3652:3652] CHIP:DMG: Endpoint = 0x1, + [1659972694.732940][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972694.732980][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972694.733009][3652:3652] CHIP:DMG: } + [1659972694.733066][3652:3652] CHIP:DMG: + [1659972694.733092][3652:3652] CHIP:DMG: ], + [1659972694.733128][3652:3652] CHIP:DMG: + [1659972694.733154][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972694.733188][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972694.733211][3652:3652] CHIP:DMG: }, + [1659972694.733292][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972694.733401][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972694.733429][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + [1659972694.733460][3652:3652] CHIP:DMG: Reading attribute: Cluster=0x0000_001D Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1659972694.733487][3652:3652] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_001D e=1 p=v + [1659972694.733520][3652:3652] CHIP:DMG: AccessControl: allowed ./chip-tool descriptor read device-list 1 3 Verify in TH(all-clusters-app) Log: - [1657002843.395988][4135:4140] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2452512872 - [1657002843.396058][4135:4140] CHIP:TOO: device list: 2 entries - [1657002843.396112][4135:4140] CHIP:TOO: [1]: { - [1657002843.396154][4135:4140] CHIP:TOO: Type: 256 - [1657002843.396204][4135:4140] CHIP:TOO: Revision: 1 - [1657002843.396232][4135:4140] CHIP:TOO: } - [1657002843.396265][4135:4140] CHIP:TOO: [2]: { - [1657002843.396291][4135:4140] CHIP:TOO: Type: 19 - [1657002843.396317][4135:4140] CHIP:TOO: Revision: 1 - [1657002843.396342][4135:4140] CHIP:TOO: } + + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + ./chip-tool descriptor read device-list 1 4 Verify in TH(all-clusters-app) Log: - [1657002927.992247][4143:4148] CHIP:TOO: Endpoint: 4 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1398882309 - [1657002927.992309][4143:4148] CHIP:TOO: device list: 2 entries - [1657002927.992362][4143:4148] CHIP:TOO: [1]: { - [1657002927.992405][4143:4148] CHIP:TOO: Type: 259 - [1657002927.992434][4143:4148] CHIP:TOO: Revision: 1 - [1657002927.992459][4143:4148] CHIP:TOO: } - [1657002927.992490][4143:4148] CHIP:TOO: [2]: { - [1657002927.992516][4143:4148] CHIP:TOO: Type: 19 - [1657002927.992542][4143:4148] CHIP:TOO: Revision: 1 - [1657002927.992567][4143:4148] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 5 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 5 Verify in TH(all-clusters-app) Log: - [1657002949.332151][4156:4161] CHIP:TOO: Endpoint: 5 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 130458766 - [1657002949.332245][4156:4161] CHIP:TOO: device list: 2 entries - [1657002949.332294][4156:4161] CHIP:TOO: [1]: { - [1657002949.332332][4156:4161] CHIP:TOO: Type: 259 - [1657002949.332356][4156:4161] CHIP:TOO: Revision: 1 - [1657002949.332379][4156:4161] CHIP:TOO: } - [1657002949.332405][4156:4161] CHIP:TOO: [2]: { - [1657002949.332427][4156:4161] CHIP:TOO: Type: 19 - [1657002949.332449][4156:4161] CHIP:TOO: Revision: 1 - [1657002949.332470][4156:4161] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 6 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x5, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 6 Verify in TH(all-clusters-app) Log: - [1657002965.947096][4163:4168] CHIP:TOO: Endpoint: 6 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 295450100 - [1657002965.947150][4163:4168] CHIP:TOO: device list: 1 entries - [1657002965.947196][4163:4168] CHIP:TOO: [1]: { - [1657002965.947231][4163:4168] CHIP:TOO: Type: 19 - [1657002965.947256][4163:4168] CHIP:TOO: Revision: 1 - [1657002965.947278][4163:4168] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 7 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x6, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 7 Verify in TH(all-clusters-app) Log: - [1657002981.963307][4176:4181] CHIP:TOO: Endpoint: 7 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2117104859 - [1657002981.963371][4176:4181] CHIP:TOO: device list: 1 entries - [1657002981.963429][4176:4181] CHIP:TOO: [1]: { - [1657002981.963474][4176:4181] CHIP:TOO: Type: 259 - [1657002981.963505][4176:4181] CHIP:TOO: Revision: 1 - [1657002981.963533][4176:4181] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 8 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x7, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 8 Verify in TH(all-clusters-app) Log: - [1657003007.476575][4183:4188] CHIP:TOO: Endpoint: 8 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2026786918 - [1657003007.476635][4183:4188] CHIP:TOO: device list: 1 entries - [1657003007.476689][4183:4188] CHIP:TOO: [1]: { - [1657003007.476731][4183:4188] CHIP:TOO: Type: 259 - [1657003007.476760][4183:4188] CHIP:TOO: Revision: 1 - [1657003007.476786][4183:4188] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 9 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x8, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 9 Verify in TH(all-clusters-app) Log: - [1657003023.263333][4191:4196] CHIP:TOO: Endpoint: 9 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 913116116 - [1657003023.263391][4191:4196] CHIP:TOO: device list: 1 entries - [1657003023.263443][4191:4196] CHIP:TOO: [1]: { - [1657003023.263484][4191:4196] CHIP:TOO: Type: 17 - [1657003023.263512][4191:4196] CHIP:TOO: Revision: 1 - [1657003023.263538][4191:4196] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 10 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x9, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 10 Verify in TH(all-clusters-app) Log: - [1657003044.071972][4204:4209] CHIP:TOO: Endpoint: 10 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 259205426 - [1657003044.072037][4204:4209] CHIP:TOO: device list: 2 entries - [1657003044.072085][4204:4209] CHIP:TOO: [1]: { - [1657003044.072123][4204:4209] CHIP:TOO: Type: 256 - [1657003044.072149][4204:4209] CHIP:TOO: Revision: 1 - [1657003044.072195][4204:4209] CHIP:TOO: } - [1657003044.072227][4204:4209] CHIP:TOO: [2]: { - [1657003044.072250][4204:4209] CHIP:TOO: Type: 19 - [1657003044.072272][4204:4209] CHIP:TOO: Revision: 1 - [1657003044.072295][4204:4209] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 11 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x10, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + ./chip-tool descriptor read device-list 1 11 Verify in TH(all-clusters-app) Log: - [1657003082.358311][4217:4222] CHIP:TOO: Endpoint: 11 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 4248421677 - [1657003082.358379][4217:4222] CHIP:TOO: device list: 2 entries - [1657003082.358432][4217:4222] CHIP:TOO: [1]: { - [1657003082.358471][4217:4222] CHIP:TOO: Type: 256 - [1657003082.358501][4217:4222] CHIP:TOO: Revision: 1 - [1657003082.358529][4217:4222] CHIP:TOO: } - [1657003082.358563][4217:4222] CHIP:TOO: [2]: { - [1657003082.358591][4217:4222] CHIP:TOO: Type: 19 - [1657003082.358619][4217:4222] CHIP:TOO: Revision: 1 - [1657003082.358646][4217:4222] CHIP:TOO: } - ./chip-tool descriptor read device-list 1 12 + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x11, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + + ./chip-tool descriptor read device-list 1 12 Verify in TH(all-clusters-app) Log: - [1657003103.954911][4248:4253] CHIP:TOO: Endpoint: 12 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 2731599835 - [1657003103.954986][4248:4253] CHIP:TOO: device list: 2 entries - [1657003103.955050][4248:4253] CHIP:TOO: [1]: { - [1657003103.955095][4248:4253] CHIP:TOO: Type: 256 - [1657003103.955125][4248:4253] CHIP:TOO: Revision: 1 - [1657003103.955153][4248:4253] CHIP:TOO: } - [1657003103.955186][4248:4253] CHIP:TOO: [2]: { - [1657003103.955214][4248:4253] CHIP:TOO: Type: 19 - [1657003103.955242][4248:4253] CHIP:TOO: Revision: 1 - [1657003103.955269][4248:4253] CHIP:TOO: } + + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x12, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + ./chip-tool descriptor read device-list 1 13 Verify in TH(all-clusters-app) Log: - [1657003125.905572][4261:4266] CHIP:TOO: Endpoint: 13 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3449178249 - [1657003125.905638][4261:4266] CHIP:TOO: device list: 2 entries - [1657003125.905687][4261:4266] CHIP:TOO: [1]: { - [1657003125.905723][4261:4266] CHIP:TOO: Type: 256 - [1657003125.905750][4261:4266] CHIP:TOO: Revision: 1 - [1657003125.905773][4261:4266] CHIP:TOO: } - [1657003125.905800][4261:4266] CHIP:TOO: [2]: { - [1657003125.905823][4261:4266] CHIP:TOO: Type: 19 - [1657003125.905845][4261:4266] CHIP:TOO: Revision: 1 - [1657003125.905867][4261:4266] CHIP:TOO: } + + [1659972745.371532][3652:3652] CHIP:IM: Received Read request + [1659972745.371611][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972745.371654][3652:3652] CHIP:DMG: { + [1659972745.371678][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972745.371716][3652:3652] CHIP:DMG: [ + [1659972745.371742][3652:3652] CHIP:DMG: AttributePathIB = + [1659972745.371781][3652:3652] CHIP:DMG: { + [1659972745.371818][3652:3652] CHIP:DMG: Endpoint = 0x13, + [1659972745.371860][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972745.371902][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972745.371933][3652:3652] CHIP:DMG: } + [1659972745.371971][3652:3652] CHIP:DMG: + [1659972745.371997][3652:3652] CHIP:DMG: ], + [1659972745.372036][3652:3652] CHIP:DMG: + [1659972745.372063][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972745.372099][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972745.372124][3652:3652] CHIP:DMG: }, + [1659972745.372217][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972745.372312][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972745.372343][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + + + + Verify PartsList for available EP + + ./chip-tool descriptor read parts-list 1 0 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x0, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 3 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 4 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 5 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x5, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 6 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x6, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 7 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x7, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 8 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x8, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 9 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x9, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 10 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x10, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + ./chip-tool descriptor read parts-list 1 11 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x11, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 12 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x12, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + + + ./chip-tool descriptor read parts-list 1 13 + + Verify in TH(all-clusters-app) Log: + + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x13, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + disabled: true + + - label: "" + PICS: MCORE.DEVLIST.UseDeviceNames + verification: | + NodeLabel is supported for endpoints 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 + + ./chip-tool bridgeddevicebasic read node-label 1 3 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 4 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 5 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x5, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + + ./chip-tool bridgeddevicebasic read node-label 1 6 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x6, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + + ./chip-tool bridgeddevicebasic read node-label 1 7 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x7, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 8 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x8, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 9 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x9, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 10 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x10, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 11 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x11, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 12 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x12, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + + + + ./chip-tool bridgeddevicebasic read node-label 1 13 + + Verify in TH(all-clusters-app) Log: + + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x13, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty + disabled: true + + - label: "" + PICS: MCORE.DEVLIST.UseDeviceState + verification: | + Read onoff attribute from OnOff cluster with applicable EP (refer step 1a ) + + ./chip-tool onoff read on-off 1 3 + + Verify in TH(all-clusters-app) Log: + + [1659973152.263905][3652:3652] CHIP:IM: Received Read request + [1659973152.264002][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973152.264053][3652:3652] CHIP:DMG: { + [1659973152.264083][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973152.264130][3652:3652] CHIP:DMG: [ + [1659973152.264163][3652:3652] CHIP:DMG: AttributePathIB = + [1659973152.264214][3652:3652] CHIP:DMG: { + [1659973152.264255][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973152.264308][3652:3652] CHIP:DMG: Cluster = 0x6, + [1659973152.264350][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659973152.264404][3652:3652] CHIP:DMG: } + [1659973152.264457][3652:3652] CHIP:DMG: + [1659973152.264494][3652:3652] CHIP:DMG: ], + [1659973152.264541][3652:3652] CHIP:DMG: + [1659973152.264577][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973152.264622][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973152.264654][3652:3652] CHIP:DMG: }, + [1659973152.264756][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973152.264871][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973152.264922][3652:3652] CHIP:DMG: Cluster 6, Attribute 0 is dirty disabled: true - label: @@ -373,17 +1743,58 @@ tests: bridged On/Off lights (use key c in the console to bridge-app)" PICS: MCORE.DEVLIST.UseDeviceState verification: | - Verify on DUT(chip-tool) Log - c - [1659089560.774328][12236:12241] CHIP:DL: Device[Light 1b]: ON - [1659089560.774681][12236:12236] CHIP:DMG: Endpoint 3, Cluster 0x0000_0006 update version to 83dcb371 + Verify on TH(all-clusters-app) Log: + ./chip-tool onoff read on-off 1 3 + [1659973152.263905][3652:3652] CHIP:IM: Received Read request + [1659973152.264002][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973152.264053][3652:3652] CHIP:DMG: { + [1659973152.264083][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973152.264130][3652:3652] CHIP:DMG: [ + [1659973152.264163][3652:3652] CHIP:DMG: AttributePathIB = + [1659973152.264214][3652:3652] CHIP:DMG: { + [1659973152.264255][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973152.264308][3652:3652] CHIP:DMG: Cluster = 0x6, + [1659973152.264350][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659973152.264404][3652:3652] CHIP:DMG: } + [1659973152.264457][3652:3652] CHIP:DMG: + [1659973152.264494][3652:3652] CHIP:DMG: ], + [1659973152.264541][3652:3652] CHIP:DMG: + [1659973152.264577][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973152.264622][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973152.264654][3652:3652] CHIP:DMG: }, + [1659973152.264756][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973152.264871][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973152.264922][3652:3652] CHIP:DMG: Cluster 6, Attribute 0 is dirty + disabled: true + + - label: "" + PICS: MCORE.DEVLIST.UseDeviceState + verification: | + ./chip-tool temperaturemeasurement read measured-value 1 4 Verify on TH(all-clusters-app) Log: - ./chip-tool onoff read on-off 1 3 - [1659089585.162599][8769:8774] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 2212279153 - [1659089585.162714][8769:8774] CHIP:TOO: OnOff: TRUE + [1659973227.630446][3652:3652] CHIP:IM: Received Read request + [1659973227.630527][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973227.630570][3652:3652] CHIP:DMG: { + [1659973227.630594][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973227.630633][3652:3652] CHIP:DMG: [ + [1659973227.630658][3652:3652] CHIP:DMG: AttributePathIB = + [1659973227.630699][3652:3652] CHIP:DMG: { + [1659973227.630728][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659973227.630779][3652:3652] CHIP:DMG: Cluster = 0x402, + [1659973227.630821][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659973227.630853][3652:3652] CHIP:DMG: } + [1659973227.630892][3652:3652] CHIP:DMG: + [1659973227.630919][3652:3652] CHIP:DMG: ], + [1659973227.630957][3652:3652] CHIP:DMG: + [1659973227.630984][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973227.631020][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973227.631044][3652:3652] CHIP:DMG: }, + [1659973227.631126][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973227.631231][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973227.631262][3652:3652] CHIP:DMG: Cluster 402, Attribute 0 is dirty disabled: true - label: @@ -394,17 +1805,8 @@ tests: verification: | Press a key "tbd" on bridge-app to change the simulated temperature - Verify on DUT(chip-tool) Log - [1659351537.115828][14237:14242] CHIP:DL: TempSensorDevice[TempSensor 1]: New measurement=""200"" - [1659351537.115987][14237:14242] CHIP:DL: TempSensorDevice[TempSensor 2]: New measurement=""200"" - [1659351537.116097][14237:14242] CHIP:DL: TempSensorDevice[Composed TempSensor 1]: New measurement=""200"" - [1659351537.116158][14237:14237] CHIP:DMG: Endpoint 4, Cluster 0x0000_0402 update version to 8f732d69 - [1659351537.116300][14237:14237] CHIP:DMG: Endpoint 5, Cluster 0x0000_0402 update version to 36be37c5 - [1659351537.116393][14237:14237] CHIP:DMG: Endpoint 7, Cluster 0x0000_0402 update version to 2cf2064d - [1659351537.116179][14237:14242] CHIP:DL: TempSensorDevice[Composed TempSensor 2]: New measurement=""200"" - " - "./chip-tool temperaturemeasurement read measured-value 1 4 + ./chip-tool temperaturemeasurement read measured-value 1 4 Verify on TH(all-clusters-app) Log: @@ -414,28 +1816,73 @@ tests: [1659351542.393552][12212:12217] CHIP:EM: Sending Standalone Ack for MessageCounter:120981971 on exchange 25924i disabled: true - - label: - "Use the DUT to change the on/off state of one or more of the bridged - On/Off lights" + - label: "" + PICS: MCORE.DEVLIST.UseBatInfo verification: | - ./chip-tool onoff on 1 3 + ./chip-tool powersource read bat-charge-level 1 9 - Verify on DUT(chip-tool) Log + Verify on TH(all-clusters-app) Log: - [1658501274.507714][14425:14425] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0006 e=3 p=o - [1658501274.507760][14425:14425] CHIP:DMG: AccessControl: allowed - [1658501274.507789][14425:14425] CHIP:DMG: Received command for Endpoint=3 Cluster=0x0000_0006 Command=0x0000_0001 - [1658501274.507829][14425:14425] CHIP:ZCL: On/Off set value: 3 1 - [1658501274.507854][14425:14425] CHIP:DL: HandleReadOnOffAttribute: attrId=0, maxReadLength=1 - [1658501274.507886][14425:14425] CHIP:ZCL: On/off already set to new value + [1659973227.630446][3652:3652] CHIP:IM: Received Read request + [1659973227.630527][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973227.630570][3652:3652] CHIP:DMG: { + [1659973227.630594][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973227.630633][3652:3652] CHIP:DMG: [ + [1659973227.630658][3652:3652] CHIP:DMG: AttributePathIB = + [1659973227.630699][3652:3652] CHIP:DMG: { + [1659973227.630728][3652:3652] CHIP:DMG: Endpoint = 0x4, + [1659973227.630779][3652:3652] CHIP:DMG: Cluster = 0x402, + [1659973227.630821][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659973227.630853][3652:3652] CHIP:DMG: } + [1659973227.630892][3652:3652] CHIP:DMG: + [1659973227.630919][3652:3652] CHIP:DMG: ], + [1659973227.630957][3652:3652] CHIP:DMG: + [1659973227.630984][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973227.631020][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973227.631044][3652:3652] CHIP:DMG: }, + [1659973227.631126][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973227.631231][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973227.631262][3652:3652] CHIP:DMG: Cluster 402, Attribute 0 is dirty + disabled: true + - label: "" + verification: | + verification step to be updated. + disabled: true + - label: + "Use the DUT to change the on/off state of one or more of the bridged + On/Off lights" + verification: | ./chip-tool onoff read on-off 1 3 Verify on TH(all-clusters-app) Log: - [1658501339.773125][35583:35588] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0006 Attribute 0x0000_0000 DataVersion: 3868039507 - [1658501339.773139][35583:35588] CHIP:TOO: OnOff: TRUE + [1659973152.263905][3652:3652] CHIP:IM: Received Read request + [1659973152.264002][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973152.264053][3652:3652] CHIP:DMG: { + [1659973152.264083][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973152.264130][3652:3652] CHIP:DMG: [ + [1659973152.264163][3652:3652] CHIP:DMG: AttributePathIB = + [1659973152.264214][3652:3652] CHIP:DMG: { + [1659973152.264255][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973152.264308][3652:3652] CHIP:DMG: Cluster = 0x6, + [1659973152.264350][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659973152.264404][3652:3652] CHIP:DMG: } + [1659973152.264457][3652:3652] CHIP:DMG: + [1659973152.264494][3652:3652] CHIP:DMG: ], + [1659973152.264541][3652:3652] CHIP:DMG: + [1659973152.264577][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973152.264622][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973152.264654][3652:3652] CHIP:DMG: }, + [1659973152.264756][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973152.264871][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973152.264922][3652:3652] CHIP:DMG: Cluster 6, Attribute 0 is dirty + disabled: true + + - label: "" + verification: | + verification step to be updated. disabled: true - label: @@ -447,8 +1894,26 @@ tests: Verify on TH(all-clusters-app) Log: - [1659089932.160005][8810:8815] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 3178625724 - [1659089932.160111][8810:8815] CHIP:TOO: NodeLabel: Light 1 + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty Verify on DUT(chip-tool) Log @@ -459,86 +1924,157 @@ tests: Verify on TH(all-clusters-app) Log: - [1659352004.560327][12241:12246] CHIP:TOO: Endpoint: 3 Cluster: 0x0000_0039 Attribute 0x0000_0005 DataVersion: 2321959095 - [1659352004.560365][12241:12246] CHIP:TOO: NodeLabel: Light 1b + [1659973028.616696][3652:3652] CHIP:IM: Received Read request + [1659973028.616774][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659973028.616810][3652:3652] CHIP:DMG: { + [1659973028.616833][3652:3652] CHIP:DMG: AttributePathIBs = + [1659973028.616859][3652:3652] CHIP:DMG: [ + [1659973028.616891][3652:3652] CHIP:DMG: AttributePathIB = + [1659973028.616919][3652:3652] CHIP:DMG: { + [1659973028.616955][3652:3652] CHIP:DMG: Endpoint = 0x3, + [1659973028.617095][3652:3652] CHIP:DMG: Cluster = 0x39, + [1659973028.617138][3652:3652] CHIP:DMG: Attribute = 0x0000_0005, + [1659973028.617166][3652:3652] CHIP:DMG: } + [1659973028.617194][3652:3652] CHIP:DMG: + [1659973028.617228][3652:3652] CHIP:DMG: ], + [1659973028.617256][3652:3652] CHIP:DMG: + [1659973028.617291][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659973028.617317][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659973028.617348][3652:3652] CHIP:DMG: }, + [1659973028.617428][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659973028.617533][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659973028.617572][3652:3652] CHIP:DMG: Cluster 39, Attribute 5 is dirty disabled: true - - label: - "Use TH/bridge-app to add a bridged light (use key 2 in the console to - bridge-app to add Light 2)" + - label: "" + PICS: MCORE.DEVLIST.UseDeviceNames verification: | Verify on DUT(chip-tool) Log - 2 - [1659352274.915018][14237:14242] CHIP:DMG: Endpoint 1, Cluster 0x0000_001D update version to 7e918bae - [1659352274.915107][14237:14242] CHIP:DMG: Endpoint 0, Cluster 0x0000_001D update version to 7561f371 - [1659352274.915166][14237:14242] CHIP:DL: Added device Light 2 to dynamic endpoint 14 (index=11) + b + [1659089470.077297][12236:12241] CHIP:DL: Device[Light 1]: New Name="Light 1b" + disabled: true + + - label: + "Use TH/bridge-app to add a bridged light (use key 2 in the console to + bridge-app to add Light 2)" + verification: | + Press "2" on TH(chip-tool) Log ./chip-tool descriptor read parts-list 1 0 Verify the endpoints listed in TH(all-clusters-app) Log - [1659352284.821350][12264:12269] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 1969353585 - [1659352284.821433][12264:12269] CHIP:TOO: parts list: 13 entries - [1659352284.821470][12264:12269] CHIP:TOO: [1]: 1 - [1659352284.821500][12264:12269] CHIP:TOO: [2]: 3 - [1659352284.821529][12264:12269] CHIP:TOO: [3]: 4 - [1659352284.821557][12264:12269] CHIP:TOO: [4]: 5 - [1659352284.821586][12264:12269] CHIP:TOO: [5]: 6 - [1659352284.821614][12264:12269] CHIP:TOO: [6]: 7 - [1659352284.821642][12264:12269] CHIP:TOO: [7]: 8 - [1659352284.821670][12264:12269] CHIP:TOO: [8]: 9 - [1659352284.821698][12264:12269] CHIP:TOO: [9]: 10 - [1659352284.821726][12264:12269] CHIP:TOO: [10]: 11 - [1659352284.821755][12264:12269] CHIP:TOO: [11]: 12 - [1659352284.821784][12264:12269] CHIP:TOO: [12]: 13 - [1659352284.821812][12264:12269] CHIP:TOO: [13]: 14 + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x0, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty " ./chip-tool descriptor read parts-list 1 1 Verify the list contains 11 entries in TH(all-clusters-app) Log - [1659352298.310126][12270:12275] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 2123467694 - [1659352298.310213][12270:12275] CHIP:TOO: parts list: 12 entries - [1659352298.310248][12270:12275] CHIP:TOO: [1]: 3 - [1659352298.310277][12270:12275] CHIP:TOO: [2]: 4 - [1659352298.310304][12270:12275] CHIP:TOO: [3]: 5 - [1659352298.310330][12270:12275] CHIP:TOO: [4]: 6 - [1659352298.310356][12270:12275] CHIP:TOO: [5]: 7 - [1659352298.310381][12270:12275] CHIP:TOO: [6]: 8 - [1659352298.310407][12270:12275] CHIP:TOO: [7]: 9 - [1659352298.310433][12270:12275] CHIP:TOO: [8]: 10 - [1659352298.310459][12270:12275] CHIP:TOO: [9]: 11 - [1659352298.310485][12270:12275] CHIP:TOO: [10]: 12 - [1659352298.310512][12270:12275] CHIP:TOO: [11]: 13 - [1659352298.310538][12270:12275] CHIP:TOO: [12]: 14 - [1659352298.310687][12270:12275] CHIP:EM: Sending Standalone Ack for MessageCounter:4449538 on exchange 4393i + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x1, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty ./chip-tool descriptor read parts-list 1 14 Verify on TH(all-clusters-app) Log - - [1659352316.442844][12276:12281] CHIP:TOO: Endpoint: 14 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 3417142897 - [1659352316.442927][12276:12281] CHIP:TOO: parts list: 0 entries - [1659352316.443042][12276:12281] CHIP:EM: Sending Standalone Ack for MessageCounter:85433161 on exchange 30040i + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x14, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty ./chip-tool descriptor read device-list 1 14 Verify the list contains 11 entries in TH(all-clusters-app) Log - [1659352346.719522][12283:12288] CHIP:TOO: Endpoint: 14 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 3417142897 - [1659352346.719601][12283:12288] CHIP:TOO: device list: 2 entries - [1659352346.719645][12283:12288] CHIP:TOO: [1]: { - [1659352346.719675][12283:12288] CHIP:TOO: Type: 256 - [1659352346.719704][12283:12288] CHIP:TOO: Revision: 1 - [1659352346.719732][12283:12288] CHIP:TOO: } - [1659352346.719766][12283:12288] CHIP:TOO: [2]: { - [1659352346.719794][12283:12288] CHIP:TOO: Type: 19 - [1659352346.719822][12283:12288] CHIP:TOO: Revision: 1 - [1659352346.719849][12283:12288] CHIP:TOO: } - [1659352346.719958][12283:12288] CHIP:EM: Sending Standalone Ack fo + [1659972694.732632][3652:3652] CHIP:IM: Received Read request + [1659972694.732712][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972694.732739][3652:3652] CHIP:DMG: { + [1659972694.732761][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972694.732800][3652:3652] CHIP:DMG: [ + [1659972694.732824][3652:3652] CHIP:DMG: AttributePathIB = + [1659972694.732866][3652:3652] CHIP:DMG: { + [1659972694.732905][3652:3652] CHIP:DMG: Endpoint = 0x14, + [1659972694.732940][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972694.732980][3652:3652] CHIP:DMG: Attribute = 0x0000_0000, + [1659972694.733009][3652:3652] CHIP:DMG: } + [1659972694.733066][3652:3652] CHIP:DMG: + [1659972694.733092][3652:3652] CHIP:DMG: ], + [1659972694.733128][3652:3652] CHIP:DMG: + [1659972694.733154][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972694.733188][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972694.733211][3652:3652] CHIP:DMG: }, + [1659972694.733292][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972694.733401][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972694.733429][3652:3652] CHIP:DMG: Cluster 1d, Attribute 0 is dirty + [1659972694.733460][3652:3652] CHIP:DMG: Reading attribute: Cluster=0x0000_001D Endpoint=1 AttributeId=0x0000_0000 (expanded=0) + [1659972694.733487][3652:3652] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_001D e=1 p=v + [1659972694.733520][3652:3652] CHIP:DMG: AccessControl: allowed + disabled: true + + - label: "" + PICS: MCORE.DEVLIST.UseDevices + verification: | + Verify on DUT(chip-tool) Log + + 2 + [1659352274.915018][14237:14242] CHIP:DMG: Endpoint 1, Cluster 0x0000_001D update version to 7e918bae + [1659352274.915107][14237:14242] CHIP:DMG: Endpoint 0, Cluster 0x0000_001D update version to 7561f371 + [1659352274.915166][14237:14242] CHIP:DL: Added device Light 2 to dynamic endpoint 14 (index=11) disabled: true - label: @@ -549,36 +2085,62 @@ tests: Verify on TH(all-clusters-app) Log: - [1659352461.553715][12295:12300] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 1969353586 - [1659352461.553848][12295:12300] CHIP:TOO: parts list: 12 entries - [1659352461.553882][12295:12300] CHIP:TOO: [1]: 1 - [1659352461.553910][12295:12300] CHIP:TOO: [2]: 4 - [1659352461.553936][12295:12300] CHIP:TOO: [3]: 5 - [1659352461.553961][12295:12300] CHIP:TOO: [4]: 6 - [1659352461.553987][12295:12300] CHIP:TOO: [5]: 7 - [1659352461.554013][12295:12300] CHIP:TOO: [6]: 8 - [1659352461.554038][12295:12300] CHIP:TOO: [7]: 9 - [1659352461.554064][12295:12300] CHIP:TOO: [8]: 10 - [1659352461.554090][12295:12300] CHIP:TOO: [9]: 11 - [1659352461.554116][12295:12300] CHIP:TOO: [10]: 12 - [1659352461.554142][12295:12300] CHIP:TOO: [11]: 13 - [1659352461.554168][12295:12300] CHIP:TOO: [12]: 14 + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x0, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty ./chip-tool descriptor read parts-list 1 1 Verify on TH(all-clusters-app) Log: - [1659352492.227696][12302:12307] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 2123467695 - [1659352492.227770][12302:12307] CHIP:TOO: parts list: 11 entries - [1659352492.227804][12302:12307] CHIP:TOO: [1]: 4 - [1659352492.227831][12302:12307] CHIP:TOO: [2]: 5 - [1659352492.227857][12302:12307] CHIP:TOO: [3]: 6 - [1659352492.227883][12302:12307] CHIP:TOO: [4]: 7 - [1659352492.227909][12302:12307] CHIP:TOO: [5]: 8 - [1659352492.227934][12302:12307] CHIP:TOO: [6]: 9 - [1659352492.227960][12302:12307] CHIP:TOO: [7]: 10 - [1659352492.227986][12302:12307] CHIP:TOO: [8]: 11 - [1659352492.228012][12302:12307] CHIP:TOO: [9]: 12 - [1659352492.228038][12302:12307] CHIP:TOO: [10]: 13 - [1659352492.228063][12302:12307] CHIP:TOO: [11]: 14 + [1659972886.385225][3652:3652] CHIP:IM: Received Read request + [1659972886.385307][3652:3652] CHIP:DMG: ReadRequestMessage = + [1659972886.385353][3652:3652] CHIP:DMG: { + [1659972886.385377][3652:3652] CHIP:DMG: AttributePathIBs = + [1659972886.385413][3652:3652] CHIP:DMG: [ + [1659972886.385438][3652:3652] CHIP:DMG: AttributePathIB = + [1659972886.385482][3652:3652] CHIP:DMG: { + [1659972886.385511][3652:3652] CHIP:DMG: Endpoint = 0x1, + [1659972886.385555][3652:3652] CHIP:DMG: Cluster = 0x1d, + [1659972886.385596][3652:3652] CHIP:DMG: Attribute = 0x0000_0003, + [1659972886.385630][3652:3652] CHIP:DMG: } + [1659972886.385668][3652:3652] CHIP:DMG: + [1659972886.385694][3652:3652] CHIP:DMG: ], + [1659972886.385730][3652:3652] CHIP:DMG: + [1659972886.385757][3652:3652] CHIP:DMG: isFabricFiltered = true, + [1659972886.385793][3652:3652] CHIP:DMG: InteractionModelRevision = 1 + [1659972886.385817][3652:3652] CHIP:DMG: }, + [1659972886.385908][3652:3652] CHIP:DMG: IM RH moving to [GeneratingReports] + [1659972886.386016][3652:3652] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1659972886.386056][3652:3652] CHIP:DMG: Cluster 1d, Attribute 3 is dirty + disabled: true + + - label: + "Verify DUT no longer contains the removed device in the list of + devices" + PICS: MCORE.DEVLIST.UseDevices + verification: | + Verify on DUT(chip-tool) Log + + 4 + [1659352426.184434][14237:14242] CHIP:DMG: Endpoint 1, Cluster 0x0000_001D update version to 7e918baf + [1659352426.184489][14237:14242] CHIP:DMG: Endpoint 0, Cluster 0x0000_001D update version to 7561f372 + [1659352426.184512][14237:14242] CHIP:DL: Removed device Light 1b from dynamic endpoint 3 (index=0) disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml index 571518d23f43b7..6bfdea56d5dde6 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml @@ -39,8 +39,7 @@ tests: - label: "TH_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - "1. Provision the device using 1st controller chip-tool on the raspi (use above instructions) - " + "1. Provision the TH_CE (all-cluster-app) device using TH_CR1 (chip-tool ) on the raspi" disabled: true - label: @@ -49,24 +48,22 @@ tests: (Enhanced Commissioning Method)." PICS: CADMIN.C.C00.Tx verification: | - On 1st controller using chip tool, open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On TH_CR1 send the below command ./chip-tool pairing open-commissioning-window 1 1 400 2000 3841 - Verify Manual pairing code On TH1(all-clusters-app) Log + Verify Manual pairing code On TH_CR1(CHIP-TOOL) Log CHIP:IN: Sending encrypted msg 0xaaaad3464d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 5805157 msec [1635691999.946536][3822:3827] CHIP:DMG: ICR moving to [CommandSen] [1635691999.946586][3822:3827] CHIP:CTL: Manual pairing code: [35407541839] [1635691999.946650][3822:3827] CHIP:CTL: SetupQRCode: [MT:00000CQM00G6V851H10] [1635691999.946802][3822:3827] CHIP:EM: Sending Standalone Ack for MessageCounter:3234931243 on exchange 35324i - [1635691999.946850][3822:3827] CHIP:IN: Prepared plaintext message 0xffffaa58a960 to 0x0000000000000000 of type 0x10 and protocolId (0, 0) on exchange 35324i with MessageCounter:1726016118. - [1635691999.946895][3822:3827] CHIP:IN: Sending plaintext msg 0xffffaa58a960 with MessageCounter:1726016118 to 0x0000000000000000 at monotonic time: 5805158 msec - [1635691999.946983][3822:3827] CHIP:EM: Flushed pending ack for MessageCounter:3234931243 on exchange 35324i - On DUT as server side + + On TH_CE(All-cluster-app) log CHIP minimal mDNS started advertising. [1635687658.683388][3792:3792] CHIP:DIS: Failed to find a valid admin pairing. Node ID unknown @@ -81,13 +78,13 @@ tests: - label: "TH_CR1 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On 1st controller using chip tool read fabricList + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners. - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On TH_CR1 send the below command ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - Verify 1 entry in the Fabrics list attributeOn TH1(all-clusters-app) Log + Verify 1 entry in the Fabrics list attributeOn TH_CR1(CHIP-TOOL) Log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 3621507058 [1649245801.244173][10091:10096] CHIP:TOO: Fabrics: 1 entries @@ -105,23 +102,25 @@ tests: - label: "DUT_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 2nd controller, using chip-tool connect using manual code. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On DUT_CR2 send the below command Below is the example when using chip tool as controller (considering 35998938564 as the manual code generated by 1st controller) ./chip-tool pairing code 2 35998938564 --commissioner-name beta - Verify whether you got below message in the log of TH2 (all-clusters-app) + Verify whether you got below message in the log of DUT_CR2(CHIP-TOOL) Device commissioning completed with success disabled: true - label: "Verify TH_CE is now discoverable over DNS-SD with two SRV Records" verification: | - On the raspi , Verify if the DUT is broadcasting using + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + On the raspi , Verify if the TH_CE(All-cluster-app) is broadcasting - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On TH_CR1 send the below command ubuntu@ubuntu:~/may10_cntrl2/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp + eth0 IPv6 E0AF53B23E580769-0000000000000002 _matter._tcp local @@ -143,68 +142,66 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On 2nd controller using chip tool write and read node-label + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners. - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On DUT_CR2 send the below command - ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta - Verify success response On TH2(all-clusters-app) Log - - CHIP:DMG: WriteClient moving to [ResponseRe] - [1649671460.431199][20958:20963] CHIP:DMG: WriteResponseMessage = - [1649671460.431217][20958:20963] CHIP:DMG: { - [1649671460.431230][20958:20963] CHIP:DMG: AttributeStatusIBs = - [1649671460.431252][20958:20963] CHIP:DMG: [ - [1649671460.431266][20958:20963] CHIP:DMG: AttributeStatusIB = - [1649671460.431282][20958:20963] CHIP:DMG: { - [1649671460.431297][20958:20963] CHIP:DMG: AttributePathIB = - [1649671460.431314][20958:20963] CHIP:DMG: { - [1649671460.431331][20958:20963] CHIP:DMG: Endpoint = 0x0, - [1649671460.431347][20958:20963] CHIP:DMG: Cluster = 0x28, - [1649671460.431364][20958:20963] CHIP:DMG: Attribute = 0x0000_0005, - [1649671460.431380][20958:20963] CHIP:DMG: } - [1649671460.431403][20958:20963] CHIP:DMG: - [1649671460.431422][20958:20963] CHIP:DMG: StatusIB = - [1649671460.431445][20958:20963] CHIP:DMG: { - [1649671460.431467][20958:20963] CHIP:DMG: status = 0x00 (SUCCESS), - [1649671460.431488][20958:20963] CHIP:DMG: }, - [1649671460.431511][20958:20963] CHIP:DMG: - [1649671460.431530][20958:20963] CHIP:DMG: }, - [1649671460.431556][20958:20963] CHIP:DMG: - [1649671460.431570][20958:20963] CHIP:DMG: ], - [1649671460.431593][20958:20963] CHIP:DMG: - [1649671460.431607][20958:20963] CHIP:DMG: InteractionModelRevision = 1 - [1649671460.431620][20958:20963] CHIP:DMG: } - [1649671460.431685][20958:20963] CHIP:DMG: WriteClient moving to [AwaitingDe] - [1649671460.431729][20958:20963] CHIP:EM: Sending Standalone Ack for MessageCounter:11088724 on exchange 41848i - - - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta + Verify Write request on TH_CE(all-clusters-app) Log + + [1660894021.901330][2871:2871] CHIP:EM: Handling via exchange: 9616r, Delegate: 0xaaaada21ffc0 + [1660894021.901426][2871:2871] CHIP:IM: Received Write request + [1660894021.901484][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894021.901613][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894021.901676][2871:2871] CHIP:DMG: { + [1660894021.901735][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894021.901802][2871:2871] CHIP:DMG: timedRequest = false, + [1660894021.901864][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894021.901940][2871:2871] CHIP:DMG: [ + [1660894021.902001][2871:2871] CHIP:DMG: AttributeDataIB = + [1660894021.902071][2871:2871] CHIP:DMG: { + [1660894021.902136][2871:2871] CHIP:DMG: AttributePathIB = + [1660894021.902219][2871:2871] CHIP:DMG: { + [1660894021.902302][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894021.902394][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894021.902488][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894021.902574][2871:2871] CHIP:DMG: } + [1660894021.902827][2871:2871] CHIP:DMG: + [1660894021.902912][2871:2871] CHIP:DMG: Data = "te5new" (6 chars), + [1660894021.902985][2871:2871] CHIP:DMG: }, ./chip-tool basic read node-label 2 0 --commissioner-name beta - Verify read attribute returns the updated value written On TH2(all-clusters-app) Log - - - [1649671466.310629][20969:20974] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3582043624 - [1649671466.310646][20969:20974] CHIP:TOO: NodeLabel: te5new - [1649671466.310704][20969:20974] CHIP:EM: Sending Standalone Ack for MessageCounter:15357338 on exchange 20724i + Verify read request on TH_CE(all-clusters-app) Log + + + [1660894142.828718][2871:2871] CHIP:EM: Handling via exchange: 62454r, Delegate: 0xaaaada21ffc0 + [1660894142.828834][2871:2871] CHIP:IM: Received Read request + [1660894142.829023][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894142.829097][2871:2871] CHIP:DMG: { + [1660894142.829153][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894142.829235][2871:2871] CHIP:DMG: [ + [1660894142.829306][2871:2871] CHIP:DMG: AttributePathIB = + [1660894142.829376][2871:2871] CHIP:DMG: { + [1660894142.829449][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894142.829532][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894142.829627][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894142.829703][2871:2871] CHIP:DMG: } + [1660894142.829777][2871:2871] CHIP:DMG: disabled: true - label: "DUT_CR2 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On 2nd controller using chip tool read fabricList - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool operationalcredentials read fabrics 2 0 --fabric-filtered 0 --commissioner-name beta - Verify 2 entries in the Fabrics list attribute On TH2(all-clusters-app) Log + Verify 2 entries in the Fabrics list attribute On DUT_CR2(chip-tool) Log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 3621507063 [1649245825.315152][10098:10103] CHIP:TOO: Fabrics: 2 entries @@ -231,53 +228,52 @@ tests: Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On first controller using chip tool, write attribute and read attribute - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On TH_CR1 send the below command ./chip-tool basic write node-label te8 1 0 - Verify success response On TH1(all-clusters-app) Log - - - CHIP:DMG: WriteResponse = - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] - - + Verify the Write request On TH_CE(all-clusters-app) Log + + + [1660894538.804578][2871:2871] CHIP:EM: Handling via exchange: 64932r, Delegate: 0xaaaada21ffc0 + [1660894538.804677][2871:2871] CHIP:IM: Received Write request + [1660894538.804737][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894538.804867][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894538.804933][2871:2871] CHIP:DMG: { + [1660894538.804993][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894538.805059][2871:2871] CHIP:DMG: timedRequest = false, + [1660894538.805120][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894538.805196][2871:2871] CHIP:DMG: [ + [1660894538.805258][2871:2871] CHIP:DMG: AttributeDataIB = + [1660894538.805346][2871:2871] CHIP:DMG: { + [1660894538.805412][2871:2871] CHIP:DMG: AttributePathIB = + [1660894538.805493][2871:2871] CHIP:DMG: { + [1660894538.805575][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894538.805661][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894538.805752][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894538.805840][2871:2871] CHIP:DMG: } + [1660894538.805922][2871:2871] CHIP:DMG: + [1660894538.806010][2871:2871] CHIP:DMG: Data = "te8" (3 chars), + [1660894538.806082][2871:2871] CHIP:DMG: }, ./chip-tool basic read node-label 1 0 - Verify read attribute returns the updated value written On TH1(all-clusters-app) Log - - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te8 - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + Verify the Read request On TH_CE(all-clusters-app) Log + + [1660894686.511690][2871:2871] CHIP:EM: Received message of type 0x2 with protocolId (0, 1) and MessageCounter:155836021 on exchange 25703r + [1660894686.511817][2871:2871] CHIP:EM: Handling via exchange: 25703r, Delegate: 0xaaaada21ffc0 + [1660894686.511920][2871:2871] CHIP:IM: Received Read request + [1660894686.512190][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894686.512259][2871:2871] CHIP:DMG: { + [1660894686.512314][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894686.512380][2871:2871] CHIP:DMG: [ + [1660894686.512441][2871:2871] CHIP:DMG: AttributePathIB = + [1660894686.512526][2871:2871] CHIP:DMG: { + [1660894686.512599][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894686.512683][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894686.512772][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, disabled: true - label: @@ -285,48 +281,67 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On 2nd controller using chip-tool read, write attribute and then read attribute to and from TH_CE - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta - On TH2(all-clusters-app) Log - - - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660900144.090077][3045:3045] CHIP:EM: Handling via exchange: 23950r, Delegate: 0xaaaaadbeffc0 + [1660900144.090167][3045:3045] CHIP:IM: Received Write request + [1660900144.090226][3045:3045] CHIP:DMG: IM WH moving to [Initialized] + [1660900144.090347][3045:3045] CHIP:DMG: WriteRequestMessage = + [1660900144.090411][3045:3045] CHIP:DMG: { + [1660900144.090470][3045:3045] CHIP:DMG: suppressResponse = false, + [1660900144.090537][3045:3045] CHIP:DMG: timedRequest = false, + [1660900144.090598][3045:3045] CHIP:DMG: AttributeDataIBs = + [1660900144.090677][3045:3045] CHIP:DMG: [ + [1660900144.090739][3045:3045] CHIP:DMG: AttributeDataIB = + [1660900144.090816][3045:3045] CHIP:DMG: { + [1660900144.090887][3045:3045] CHIP:DMG: AttributePathIB = + [1660900144.090976][3045:3045] CHIP:DMG: { + [1660900144.091061][3045:3045] CHIP:DMG: Endpoint = 0x0, + [1660900144.091150][3045:3045] CHIP:DMG: Cluster = 0x28, + [1660900144.091247][3045:3045] CHIP:DMG: Attribute = 0x0000_0005, + [1660900144.091344][3045:3045] CHIP:DMG: } + [1660900144.091432][3045:3045] CHIP:DMG: + [1660900144.091560][3045:3045] CHIP:DMG: Data = "te5new" (6 chars), + [1660900144.091655][3045:3045] CHIP:DMG: }, + + Verify the success response in the DUT_CR2(Chip-tool) log + + [1649245940.789388][10110:10115] CHIP:DMG: [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = [1649245940.789519][10110:10115] CHIP:DMG: { [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] + Verify read attribute returns the updated value written ./chip-tool basic read node-label 2 0 --commissioner-name beta - Verify read attribute returns the updated value written On TH1(all-clusters-app) Log - + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660900360.861128][3045:3045] CHIP:EM: Handling via exchange: 17574r, Delegate: 0xaaaaadbeffc0 + [1660900360.861223][3045:3045] CHIP:IM: Received Read request + [1660900360.861402][3045:3045] CHIP:DMG: ReadRequestMessage = + [1660900360.861471][3045:3045] CHIP:DMG: { + [1660900360.861527][3045:3045] CHIP:DMG: AttributePathIBs = + [1660900360.861591][3045:3045] CHIP:DMG: [ + [1660900360.861651][3045:3045] CHIP:DMG: AttributePathIB = + [1660900360.861727][3045:3045] CHIP:DMG: { + [1660900360.861798][3045:3045] CHIP:DMG: Endpoint = 0x0, + [1660900360.861871][3045:3045] CHIP:DMG: Cluster = 0x28, + [1660900360.861939][3045:3045] CHIP:DMG: Attribute = 0x0000_0005, + [1660900360.862012][3045:3045] CHIP:DMG: } + [1660900360.862088][3045:3045] CHIP:DMG: + [1660900360.862158][3045:3045] CHIP:DMG: ], + + Verify the success response in the DUT_CR2(Chip-tool) log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new @@ -344,23 +359,25 @@ tests: (Enhanced Commissioning Method)" PICS: CADMIN.C.C00.Tx verification: | - On 2nd controller open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On DUT_CR2 send the below command + ./chip-tool pairing open-commissioning-window 2 1 300 1000 3841 --commissioner-name - ./chip-tool pairing open-commissionig-window 2 1 300 1000 3841 --commissioner-name beta + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log - Verify Manual pairing code On TH2(all-clusters-app) Log + [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] + + Verify the Manual pairing code On DUT_CR2(chip-tool) Log CHIP: [IN] Prepared encrypted message 0x124012e80 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 50829i with MessageCounter:0. [1635693418549] [30519:4583024] CHIP: [IN] Sending encrypted msg 0x124012e80 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 5995099243 msec [1635693418549] [30519:4583024] CHIP: [DMG] ICR moving to [CommandSen] [1635693418549] [30519:4583024] CHIP: [CTL] Manual pairing code: [34995354639] [1635693418550] [30519:4583024] CHIP: [CTL] SetupQRCode: [MT:00000CQM00YND84XX10] - [1635693418550] [30519:4583024] CHIP: [EM] Sending Standalone Ack for MessageCounter:3441918415 on exchange 50828i - [1635693418550] [30519:4583024] CHIP: [IN] Prepared plaintext message 0x16b92d198 to 0x0000000000000000 of type 0x10 and protocolId (0, 0) on exchange 50828i with MessageCounter:3727034150. - [1635693418550] [30519:4583024] CHIP: [IN] Sending plaintext msg 0x16b92d198 with Mes disabled: true - label: @@ -368,46 +385,26 @@ tests: using the Revoke Commissioning command" PICS: CADMIN.C.C02.Tx verification: | - On 2nd controller, run revoke command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On DUT_CR2 send the below command ./chip-tool administratorcommissioning revoke-commissioning 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta - Verify success response On TH2(all-clusters-app) Log + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log + [1660901039.590891][3045:3045] CHIP:DMG: AccessControl: allowed + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 + Verify the success response On DUT_CR2(chip-tool) Log - CHIP: [DMG] InvokeResponseMessage = - [1648115245106] [6681:3894448] CHIP: [DMG] { - [1648115245106] [6681:3894448] CHIP: [DMG] suppressResponse = false, - [1648115245106] [6681:3894448] CHIP: [DMG] InvokeResponseIBs = - [1648115245106] [6681:3894448] CHIP: [DMG] [ - [1648115245106] [6681:3894448] CHIP: [DMG] InvokeResponseIB = - [1648115245106] [6681:3894448] CHIP: [DMG] { - [1648115245106] [6681:3894448] CHIP: [DMG] CommandStatusIB = - [1648115245106] [6681:3894448] CHIP: [DMG] { - [1648115245106] [6681:3894448] CHIP: [DMG] CommandPathIB = - [1648115245106] [6681:3894448] CHIP: [DMG] { - [1648115245106] [6681:3894448] CHIP: [DMG] EndpointId = 0x0, - [1648115245106] [6681:3894448] CHIP: [DMG] ClusterId = 0x3c, - [1648115245106] [6681:3894448] CHIP: [DMG] CommandId = 0x2, - [1648115245106] [6681:3894448] CHIP: [DMG] }, - [1648115245106] [6681:3894448] CHIP: [DMG] [1648115245106] [6681:3894448] CHIP: [DMG] StatusIB = [1648115245106] [6681:3894448] CHIP: [DMG] { [1648115245106] [6681:3894448] CHIP: [DMG] status = 0x0, [1648115245106] [6681:3894448] CHIP: [DMG] }, - [1648115245106] [6681:3894448] CHIP: [DMG] - [1648115245106] [6681:3894448] CHIP: [DMG] }, - [1648115245106] [6681:3894448] CHIP: [DMG] - [1648115245106] [6681:3894448] CHIP: [DMG] }, - [1648115245106] [6681:3894448] CHIP: [DMG] - [1648115245106] [6681:3894448] CHIP: [DMG] ], - [1648115245107] [6681:3894448] CHIP: [DMG] - [1648115245107] [6681:3894448] CHIP: [DMG] InteractionModelRevision = 1 - [1648115245107] [6681:3894448] CHIP: [DMG] }, - [1648115245107] [6681:3894448] CHIP: [DMG] Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 Status=0x0 disabled: true - label: @@ -415,13 +412,13 @@ tests: with TH_CE" PICS: CADMIN.C verification: | - On 3rd controller using chip-tool connect using manual code generated from 1st controller. This attempt should fail, i.e + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners. - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On TH_CR3 send the below command ./chip-tool pairing code 3 34995354639 --commissioner-name gamma - verify you got the following message in the TH 3(all-clusters-app) log + verify you got the following message in the TH_CR3(chip-tool) log CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed @@ -433,51 +430,54 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On 2nd controller , write attribute and read attribute to and from TH_CE - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta - Verify success response On TH1(all-clusters-app) Log - - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] - - + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660902144.913634][3045:3045] CHIP:EM: Handling via exchange: 22257r, Delegate: 0xaaaaadbeffc0 + [1660902144.913728][3045:3045] CHIP:IM: Received Write request + [1660902144.913785][3045:3045] CHIP:DMG: IM WH moving to [Initialized] + [1660902144.913912][3045:3045] CHIP:DMG: WriteRequestMessage = + [1660902144.913977][3045:3045] CHIP:DMG: { + [1660902144.914038][3045:3045] CHIP:DMG: suppressResponse = false, + [1660902144.914106][3045:3045] CHIP:DMG: timedRequest = false, + [1660902144.914168][3045:3045] CHIP:DMG: AttributeDataIBs = + [1660902144.914244][3045:3045] CHIP:DMG: [ + [1660902144.914305][3045:3045] CHIP:DMG: AttributeDataIB = + [1660902144.914375][3045:3045] CHIP:DMG: { + [1660902144.914440][3045:3045] CHIP:DMG: AttributePathIB = + [1660902144.914522][3045:3045] CHIP:DMG: { + [1660902144.914602][3045:3045] CHIP:DMG: Endpoint = 0x0, + [1660902144.914691][3045:3045] CHIP:DMG: Cluster = 0x28, + [1660902144.914940][3045:3045] CHIP:DMG: Attribute = 0x0000_0005, + [1660902144.915025][3045:3045] CHIP:DMG: } + [1660902144.915109][3045:3045] CHIP:DMG: + [1660902144.915208][3045:3045] CHIP:DMG: Data = "te5new" (6 chars), + [1660902144.915292][3045:3045] CHIP:DMG: }, + [1660902144.915374][3045:3045] CHIP:DMG: ./chip-tool basic read node-label 2 0 --commissioner-name beta - Verify read attribute returns the updated value written On TH1(all-clusters-app) Log - - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660902253.379018][3045:3045] CHIP:EM: Handling via exchange: 3197r, Delegate: 0xaaaaadbeffc0 + [1660902253.379122][3045:3045] CHIP:IM: Received Read request + [1660902253.379306][3045:3045] CHIP:DMG: ReadRequestMessage = + [1660902253.379373][3045:3045] CHIP:DMG: { + [1660902253.379430][3045:3045] CHIP:DMG: AttributePathIBs = + [1660902253.379496][3045:3045] CHIP:DMG: [ + [1660902253.379557][3045:3045] CHIP:DMG: AttributePathIB = + [1660902253.379634][3045:3045] CHIP:DMG: { + [1660902253.379703][3045:3045] CHIP:DMG: Endpoint = 0x0, + [1660902253.379782][3045:3045] CHIP:DMG: Cluster = 0x28, + [1660902253.379871][3045:3045] CHIP:DMG: Attribute = 0x0000_0005, + [1660902253.379935][3045:3045] CHIP:DMG: } + [1660902253.380141][3045:3045] CHIP:DMG: + [1660902253.380208][3045:3045] CHIP:DMG: ], disabled: true - label: @@ -485,24 +485,25 @@ tests: ECM" PICS: CADMIN.C.C00.Tx verification: | - On 2nd controller open commissioning window using ECM - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool pairing open-commissioning-window 2 1 180 1000 3840 --commissioner-name beta - Verify Manual pairing code On TH2(all-clusters-app) Log + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log + [1660902413.357922][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660902413.358025][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660902413.358116][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] + + Verify Manual pairing code On DUT_CR2(chip-tool) Log - CHIP: [IN] Prepared encrypted message 0x124012e80 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 50829i with MessageCounter:0. [1635693418549] [30519:4583024] CHIP: [IN] Sending encrypted msg 0x124012e80 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 5995099243 msec [1635693418549] [30519:4583024] CHIP: [DMG] ICR moving to [CommandSen] [1635693418549] [30519:4583024] CHIP: [CTL] Manual pairing code: [34995354639] [1635693418550] [30519:4583024] CHIP: [CTL] SetupQRCode: [MT:00000CQM00YND84XX10] - [1635693418550] [30519:4583024] CHIP: [EM] Sending Standalone Ack for MessageCounter:3441918415 on exchange 50828i - [1635693418550] [30519:4583024] CHIP: [IN] Prepared plaintext message 0x16b92d198 to 0x0000000000000000 of type 0x10 and protocolId (0, 0) on exchange 50828i with MessageCounter:3727034150. - [1635693418550] [30519:4583024] CHIP: [IN] Sending plaintext msg 0x16b92d198 with Mes + [1635693418550] [30519:4583024] CHIP: [EM] Sending Standalone Ack for MessageCounter:3441918415 on exchange disabled: true - label: @@ -516,18 +517,20 @@ tests: ECM" PICS: CADMIN.C.C00.Tx verification: | - On 2nd controller open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On DUT_CR2 send the below command + ./chip-tool pairing open-commissioning-window 2 1 300 1000 3840 --commissioner-name beta - ./chip-tool pairing open-commissionig-window 2 1 300 1000 3840 --commissioner-name beta + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log - Verify Manual pairing code On TH2(all-clusters-app) Log + [1660902623.744448][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660902623.744550][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660902623.744634][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] + Verify Manual pairing code On DUT_CR2(chip-tool) Log - CHIP: [IN] Prepared encrypted message 0x124012e80 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 50829i with MessageCounter:0. - [1635693418549] [30519:4583024] CHIP: [IN] Sending encrypted msg 0x124012e80 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 5995099243 msec [1635693418549] [30519:4583024] CHIP: [DMG] ICR moving to [CommandSen] [1635693418549] [30519:4583024] CHIP: [CTL] Manual pairing code: [34995354639] [1635693418550] [30519:4583024] CHIP: [CTL] SetupQRCode: [MT:00000CQM00YND84XX10] @@ -541,30 +544,26 @@ tests: from step 15" PICS: CADMIN.C verification: | - On 1st controller, using chip-tool connect using manual code. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On TH_CR1 send the below command (considering 34995354639 as the manual code generated by DUT) ./chip-tool pairing code 2 34995354639 - Trying to add a NOC for a fabric that already exists On TH1(all-clusters-app) Log + Verify the OperationalCert error 9 in TH_CE(all-clusters-app) Log + [1660902716.613196][3045:3045] CHIP:DMG: Command handler moving to [AddedComma] + [1660902716.613274][3045:3045] CHIP:ZCL: OpCreds: Failed AddNOC request (err=../../examples/all-clusters-app/linux/third_party/connectedhomeip/src/credentials/FabricTable.cpp:1692: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists) with OperationalCert error 9 + [1660902716.613394][3045:3045] CHIP:DMG: Decreasing reference count for CommandHandler, remaining 0 + [1660902716.613497][3045:3045] CHIP:EM: Piggybacking Ack for MessageCounter:176866087 on exchange: 56605r + + Verify that the commissioning process fails as TH_CE was already commissioned by TH_CR1 in step 1 + + Trying to add a NOC for a fabric that already exists On TH_CR1(chip-tool) Log [1651786200275] [36301:315544] CHIP: [DMG] Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 [1651786200275] [36301:315544] CHIP: [CTL] Device returned status 9 on receiving the NOC [1651786200275] [36301:315544] CHIP: [CTL] Add NOC failed with error ../../src/controller/CHIPDeviceController.cpp:1187: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists [1651786200275] [36301:315544] CHIP: [CTL] Error on commissioning step "SendNOC": "../../src/controller/CHIPDeviceController.cpp:1187: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists" - - Verify that the commissioning process fails as TH_CE was already commissioned by TH_CR1 in step 1 - disabled: true - - - label: "" - verification: | - verification step to be updated. - disabled: true - - - label: "" - verification: | - verification step to be updated. disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml index 532bdb8ff32e11..621aa56f0f62f9 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml @@ -41,7 +41,7 @@ tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - "1. Provision the device using your DUT controller (use above instructions) , + "1. Provision TH_CE using DUT_CR1 (Chip-tool as DUT controller) " disabled: true @@ -51,9 +51,14 @@ tests: TH_CR3 Commissions with TH_CE" PICS: CADMIN.C.C01.Tx verification: | - On first controller, open commissioning window using BCM + On DUT_CR1 , open commissioning window using BCM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CE(all-clusters-app) Log CHIP:DMG: InvokeResponseMessage = [1650278416.248379][11064:11069] CHIP:DMG: { @@ -89,10 +94,10 @@ tests: - On 3rd controller, using chip tool connect to the accessory + On DUT_CR2, using chip tool connect to the accessory ./chip-tool pairing onnetwork 1 20202021 --commissioner-name gamma - Verify you got below message + Verify you got below message on TH_CE (all-clusters-app) log Device commissioning completed with success disabled: true @@ -102,9 +107,14 @@ tests: TH_CR2 Commissions with TH_CE" PICS: CADMIN.C.C01.Tx verification: | - On first controller, open commissioning window using BCM + On DUT_CR1 , open commissioning window using BCM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CE (all-clusters-app) Log CHIP:DMG: InvokeResponseMessage = [1650278416.248379][11064:11069] CHIP:DMG: { @@ -140,10 +150,15 @@ tests: - On 2nd controller, using chip tool connect to the accessory + On TH_CR2 , using chip tool connect to the accessory + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool pairing onnetwork 1 20202021 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CE (all-clusters-app) log + Device commissioning completed with success disabled: true @@ -152,9 +167,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.C.C01.Tx verification: | - On first controller, open commissioning window using BCM + On DUT_CR1 , open commissioning window using BCM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CE (all-clusters-app) Log CHIP:DMG: InvokeResponseMessage = [1650278416.248379][11064:11069] CHIP:DMG: { @@ -195,10 +215,17 @@ tests: attribute" PICS: CADMIN.C.A0000 verification: | - On first controller, read WindowStatus + On DUT_CR1 , read WindowStatus + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning read window-status 1 0 + + Verify on TH_CE (all-clusters-app) log successfully reads the WindowStatus + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 2849200592 + [1651137648.760469][14047:14052] CHIP:TOO: WindowStatus: 0 + [1651137648.760534][14047:14052] CHIP:EM: Sending Standalone Ack for MessageCounter:5527412 on exchange 14590i" disabled: true - label: @@ -208,16 +235,55 @@ tests: using ECM" PICS: CADMIN.C.C00.Tx verification: | - On 1st controller chip tool, open commissioning window using ECM + On DUT_CR1 chip tool, open commissioning window using ECM - ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + + ./chip-tool pairing open-commissioning-window 1 1 200 1000 3840 + + Verify that the TH_CE is rejecting the opening of second commissioning session with the response status 0x01 failure in TH_CE Log + + + CHIP:DMG: InvokeResponseMessage = + [1650527622.373450][15824:15829] CHIP:DMG: { + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.374799][15824:15829] CHIP:DMG: + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.375426][15824:15829] CHIP:DMG: + [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375616][15824:15829] CHIP:DMG: + [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375786][15824:15829] CHIP:DMG: + [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375940][15824:15829] CHIP:DMG: + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376058][15824:15829] CHIP:DMG: }, + [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01" disabled: true - label: "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 4" verification: | - verification step to be updated. + Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 4 disabled: true - label: @@ -226,10 +292,14 @@ tests: ECM" PICS: CADMIN.C.C00.Tx verification: | - On 1st controller chip tool, open commissioning window using ECM + On DUT_CR1 chip tool, open commissioning window using ECM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + Verify Manual pairing code on TH_CE (all-clusters-app) Log + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -249,10 +319,17 @@ tests: attribute" PICS: CADMIN.C.A0000 verification: | - On first controller, read WindowStatus + On DUT_CR1 , read WindowStatus + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning read window-status 1 0 + + Verify on TH_CE (all-clusters-app) log successfully reads the WindowStatus + + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 2849200592 + [1651137648.760469][14047:14052] CHIP:TOO: WindowStatus: 0 + [1651137648.760534][14047:14052] CHIP:EM: Sending Standalone Ack for MessageCounter:5527412 on exchange 14590i" disabled: true - label: @@ -262,28 +339,55 @@ tests: using ECM" PICS: CADMIN.C.C00.Tx verification: | - On 3rd controller chip tool, open commissioning window using ECM + On TH_CR3 chip tool, open commissioning window using ECM - ./chip-tool pairing open-commissioning-window 3 1 180 1000 3840 --commissioner-name gamma + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established - [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! - [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635925713.972601][9695:9700] CHIP:DMG: ICR moving to [AddingComm] - [1635925713.972705][9695:9700] CHIP:DMG: ICR moving to [AddedComma] - [1635925713.972815][9695:9700] CHIP:IN: Prepared encrypted message 0xaaaad9b57d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 31056i with MessageCounter:0. - [1635925713.972876][9695:9700] CHIP:IN: Sending encrypted msg 0xaaaad9b57d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 13449459 msec - [1635925713.973006][9695:9700] CHIP:DMG: ICR moving to [CommandSen] - [1635925713.973061][9695:9700] CHIP:CTL: Manual pairing code: [36217551633] - [1635925713.973120][9695:9700] CHIP:CTL: SetupQRCode: [MT:00000CQM00A7F87ZT10] - [1635925713.973178][9695:9700] CHIP:EM: Sending Standalone Ack for MessageCounter:1964916542 on exchange 31055i + + ./chip-tool pairing open-commissioning-window 1 1 200 1000 3840 --commissioner-name beta + + Verify that the TH_CE is rejecting the opening of second commissioning session with the response status 0x01 failure in TH_CE Log + + + CHIP:DMG: InvokeResponseMessage = + [1650527622.373450][15824:15829] CHIP:DMG: { + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.374799][15824:15829] CHIP:DMG: + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.375426][15824:15829] CHIP:DMG: + [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375616][15824:15829] CHIP:DMG: + [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375786][15824:15829] CHIP:DMG: + [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375940][15824:15829] CHIP:DMG: + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376058][15824:15829] CHIP:DMG: }, + [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01" disabled: true - label: "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 8" verification: | - verification step to be updated. + Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 8 disabled: true - label: @@ -291,10 +395,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On 1st controller chip tool, open commissioning window using ECM + On DUT_CR1 chip tool, open commissioning window using ECM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 + Verify Manual pairing code on TH_CE (all-clusters-app) Log + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -315,27 +423,67 @@ tests: PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On 2nd controller using chip tool connect to the accessory using ECM + On TH_CR2 using chip tool connect to the accessory using ECM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 180 1000 3840 --commissioner-name beta + + Verify that the TH_CE is rejecting the opening of second commissioning session with the response status 0x01 failure in TH_CE Log + + CHIP:DMG: InvokeResponseMessage = + [1650527622.373450][15824:15829] CHIP:DMG: { + [1650527622.373531][15824:15829] CHIP:DMG: suppressResponse = false, + [1650527622.373628][15824:15829] CHIP:DMG: InvokeResponseIBs = + [1650527622.373734][15824:15829] CHIP:DMG: [ + [1650527622.373817][15824:15829] CHIP:DMG: InvokeResponseIB = + [1650527622.373913][15824:15829] CHIP:DMG: { + [1650527622.374001][15824:15829] CHIP:DMG: CommandStatusIB = + [1650527622.374087][15824:15829] CHIP:DMG: { + [1650527622.374182][15824:15829] CHIP:DMG: CommandPathIB = + [1650527622.374296][15824:15829] CHIP:DMG: { + [1650527622.374382][15824:15829] CHIP:DMG: EndpointId = 0x0, + [1650527622.374490][15824:15829] CHIP:DMG: ClusterId = 0x3c, + [1650527622.374593][15824:15829] CHIP:DMG: CommandId = 0x1, + [1650527622.374682][15824:15829] CHIP:DMG: }, + [1650527622.374799][15824:15829] CHIP:DMG: + [1650527622.374896][15824:15829] CHIP:DMG: StatusIB = + [1650527622.374979][15824:15829] CHIP:DMG: { + [1650527622.375086][15824:15829] CHIP:DMG: status = 0x01 (FAILURE), + [1650527622.375236][15824:15829] CHIP:DMG: cluster-status = 0x1, + [1650527622.375320][15824:15829] CHIP:DMG: }, + [1650527622.375426][15824:15829] CHIP:DMG: + [1650527622.375527][15824:15829] CHIP:DMG: }, + [1650527622.375616][15824:15829] CHIP:DMG: + [1650527622.375704][15824:15829] CHIP:DMG: }, + [1650527622.375786][15824:15829] CHIP:DMG: + [1650527622.375864][15824:15829] CHIP:DMG: ], + [1650527622.375940][15824:15829] CHIP:DMG: + [1650527622.376000][15824:15829] CHIP:DMG: InteractionModelRevision = 1 + [1650527622.376058][15824:15829] CHIP:DMG: }, + [1650527622.376202][15824:15829] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x1 + [1650527622.376278][15824:15829] CHIP:TOO: Error: IM Error 0x00000601: Cluster-specific error: 0x01" disabled: true - label: "Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 12" verification: | - verification step to be updated. + Wait for the expiration of PIXIT.CADMIN.CwDuration seconds that is set in step 12 disabled: true - label: "DUT_CR1 sends command to TH_CE to read WindowStatus attribute" PICS: CADMIN.C.A0000 verification: | - On first controller, read WindowStatus + On DUT_CR1 , read WindowStatus + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning read window-status 1 0 + Verify on TH_CE(all-clusters-app) log successfully reads the WindowStatus + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0000 DataVersion: 2849200592 [1651137648.760469][14047:14052] CHIP:TOO: WindowStatus: 0 [1651137648.760534][14047:14052] CHIP:EM: Sending Standalone Ack for MessageCounter:5527412 on exchange 14590i" @@ -344,10 +492,14 @@ tests: - label: "DUT_CR1 sends command to TH_CE to read AdminFabricIndex attribute" PICS: CADMIN.C.A0001 verification: | - On first controller, read AdminFabricIndex + On DUT_CR1 , read AdminFabricIndex + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning read admin-fabric-index 1 0 + Verify on TH_CE(all-clusters-app) log successfully reads the AdminFabricIndex + [1659097193.389295][11728:11733] CHIP:DMG: } [1659097193.389588][11728:11733] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0001 DataVersion: 1299585105 [1659097193.389731][11728:11733] CHIP:TOO: AdminFabricIndex: 0 @@ -357,10 +509,14 @@ tests: - label: "DUT_CR1 sends command to TH_CE to read AdminVendorId attribute" PICS: CADMIN.C.A0002 verification: | - On first controller, read AdminVendorId + On DUT_CR1 , read AdminVendorId + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning read admin-vendor-id 1 0 + Verify on TH_CE(all-clusters-app) log successfully reads the AdminVendorId + [1658838521.588942][9317:9322] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003C Attribute 0x0000_0002 DataVersion: 2423106591 [1658838521.589005][9317:9322] CHIP:TOO: AdminVendorId: 0 [1658838521.589079][9317:9322] CHIP:EM: Sending Standalone Ack for MessageCounter:217165763 on exchange 55683i diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml index a6d2ae56fa9342..fecdf6fc80af4d 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml @@ -40,7 +40,7 @@ tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - "1. Provision the device using DUT controller chip tool(use above instructions) , + "1. Provision the device using DUT_CR1 (Chip-tool as DUT controller) " disabled: true @@ -49,13 +49,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On your first controller, open commissioning window using ECM - - Below is the example when using chip tool as controller + On DUT_CR1 , open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Verify Manual pairing code on TH_CE (all-clusters-app) Log + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -86,12 +87,14 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 2nd controller using chip tool connect to the accessory + On TH_CR2 using chip tool connect to the accessory + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing code 1 35484132896 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CE(all-clusters-app) log Device commissioning completed with success disabled: true @@ -100,13 +103,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On your first controller chip tool, open commissioning window using ECM - - Below is the example when using chip tool as controller + On TH_CR1 (chip tool), open commissioning window using ECM + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Verify Manual pairing code on TH_CE(all-clusters-app) Log + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -137,19 +141,24 @@ tests: - label: "TH_CR3 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 3rd controller using chip tool connect to the accessory + On TH_CR3 using chip tool connect to the accessory + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing code 1 35484132896 --commissioner-name gamma - Verify you got below message + Verify you got below message on TH_CE(all-clusters-app) log Device commissioning completed with success disabled: true - label: "DUT_CR1 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On 2nd controller using chip tool, read fabrics list + On DUT_CR1 using chip tool, read fabrics list + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) log ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 --commissioner-name beta @@ -185,10 +194,14 @@ tests: - label: "DUT_CR1 sends RemoveFabric with FabricIndex = 2 command to TH_CE" PICS: OPCREDS.C.C0a.Tx verification: | - on 2nd controller using chip tool, remove fabric with FabricIndex=2 + on DUT_CR1 using chip tool, remove fabric with FabricIndex=2 + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool operationalcredentials remove-fabric 2 1 0 --commissioner-name beta + Verify TH_CE responses with NOCResponse with a StatusCode OK on TH_CE (all-clusters-app) log + CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 CHIP:TOO: NOCResponse: { @@ -203,9 +216,12 @@ tests: Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - Using your 2nd controller, write attribute and read attribute to and from TH_CE + Using TH_CR2 , write attribute and read attribute to and from TH_CE + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Verify read/write commands fail as expected since the TH_CR2 is no longer on the network on TH_CE (all-clusters-app) log - Below is the example while using chip tool on second controller, ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter @@ -214,6 +230,9 @@ tests: ./chip-tool basic read node-label 2 0 --commissioner-name beta + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter [1651819620.929567][4359:4364] CHIP:CTL: OperationalDeviceProxy[B8070CD13C99D367:0000000000000002]: State change 3 --> 2 [1651819620.929700][4359:4364] CHIP:-: ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter at ../../commands/clusters/ModelCommand.cpp:53 @@ -223,12 +242,14 @@ tests: "DUT_CR1 sends command to TH_CE to read the list of Fabrics on TH_CE" PICS: OPCREDS.C.A0001 verification: | - On first controller, read fabrics list + On DUT_CR1 , read fabrics list - Below is the command using chip tool controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) log + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995219 [1647863260.286772][9294:9299] CHIP:TOO: Fabrics: 2 entries [1647863260.286908][9294:9299] CHIP:TOO: [1]: { @@ -254,7 +275,11 @@ tests: "Verify TH_CE is now discoverable over DNS-SD with 2 Operational service records (_matter._tcp SRV records)." verification: | + On any Linux platform execute this command or in TH_CR2 + grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp + + + wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local + wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local = wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local @@ -277,10 +302,13 @@ tests: verification: | On first controller chip tool, open commissioning window using ECM - Below is the example when using chip tool as controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Verify Manual pairing code on TH1(all-clusters-app) Log + + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -297,12 +325,14 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 2nd controller using chip tool connect to the accessory + On TH_CR2 using chip tool connect to the accessory + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing code 1 36217551633 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CE (all-clusters-app) log Device commissioning completed with success disabled: true @@ -310,12 +340,14 @@ tests: "TH_CR2 sends command to TH_CE to read the list of Fabrics on TH_CE" PICS: OPCREDS.C.A0001 verification: | - On second controller, read fabrics list + On TH_CR2 , read fabrics list - Below is the command using chip tool controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 --commissioner-name beta + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) log + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995246 [1647863342.980899][9309:9314] CHIP:TOO: Fabrics: 3 entries [1647863342.981158][9309:9314] CHIP:TOO: [1]: { diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml index dce6d020f8c141..a3acd649a11040 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml @@ -40,7 +40,7 @@ tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - "1. Provision the device using DUT controller chip tool(use above instructions) , + "1. Provision the device using DUT_CR1 (Chip-tool as DUT controller) " disabled: true @@ -49,11 +49,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.C.C01.Tx verification: | - On your first controller chip tool, open commissioning window using BCM + On DUT_CR1 (chip tool), open commissioning window using BCM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + - Below is the example when using chip tool as controller ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH-CE(all-clusters-app) Log CHIP: [DMG] InvokeResponseMessage = [1648116114630] [6871:3898916] CHIP: [DMG] { @@ -90,12 +93,14 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 2nd controller using chip tool connect to the accessory + On TH_CR2 using chip tool connect to the accessory + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CE (all-clusters-app) log Device commissioning completed with success disabled: true @@ -104,11 +109,14 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.C.C01.Tx verification: | - On your first controller chip tool, open commissioning window using BCM + On DUT_CR1 (chip tool), open commissioning window using BCM + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + - Below is the example when using chip tool as controller ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CE (all-clusters-app) Log CHIP: [DMG] InvokeResponseMessage = [1648116114630] [6871:3898916] CHIP: [DMG] { @@ -145,12 +153,14 @@ tests: - label: "TH_CR3 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 3rd controller using chip tool connect to the accessory + On TH_CR3 using chip tool connect to the accessory + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 3 20202021 --commissioner-name gamma - Verify you got below message + Verify you got below message on TH_CE (all-clusters-app) log Device commissioning completed with success disabled: true @@ -158,11 +168,13 @@ tests: "DUT_CR1 sends command to TH_CE to read the list of Fabrics on TH_CE" PICS: OPCREDS.C.A0001 verification: | - On first controller, read fabrics list + On DUT_CR1 , read fabrics list - ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995193 CHIP:TOO: Fabrics: 3 entries @@ -197,7 +209,11 @@ tests: - label: "DUT_CR1 sends RemoveFabric with FabricIndex = 2command to TH_CE" PICS: OPCREDS.C.C0a.Tx verification: | - on 2nd controller using chip tool, remove fabric with FabricIndex=2 + on DUT_CR1 ( using chip tool), remove fabric with FabricIndex=2 + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Verify TH_CE responses with NOCResponse with a StatusCode OK on TH_CE (all-clusters-app) log ./chip-tool operationalcredentials remove-fabric 2 1 0 --commissioner-name beta @@ -215,9 +231,12 @@ tests: Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - Using your 2nd controller, write attribute and read attribute to and from TH_CE + Using TH_CR2 , write attribute and read attribute to and from TH_CE + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Verify read/write commands fail as expected since the TH_CR2 is no longer on the network on TH_CE (all-clusters-app) - Below is the example while using chip tool on second controller, ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta Received error (protocol code 2) during pairing process. ../../third_party/connectedhomeip/src/protocols/secure_channel/CASESession.cpp:1551: CHIP Error 0x00000054: Invalid CASE parameter @@ -234,9 +253,11 @@ tests: - label: "DUT_CR1 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On first controller, read fabrics list + On DUT_CR1 , read fabrics list - Below is the command using chip tool controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 @@ -263,7 +284,10 @@ tests: - label: "" verification: | - 1. Verify if the DUT is broadcasting using + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + Execute the below avahi-browse command in any LInux machine or in TH_CR2. + grl@grl-ThinkPad-L480:~/may16_cntrl03/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp + wlp5s0 IPv6 8E50A59FAF52A809-0000000000000001 _matter._tcp local + wlp5s0 IPv6 03E707466A904C7E-0000000000000003 _matter._tcp local @@ -285,13 +309,15 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.C.C01.Tx verification: | - On first controller chip tool, open commissioning window using BCM + On DUT_CR1 chip tool, open commissioning window using BCM - Below is the example when using chip tool as controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers For BCM, ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CE (all-clusters-app) Log + CHIP:DMG: InvokeResponseMessage = [1650278416.248379][11064:11069] CHIP:DMG: { [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, @@ -328,24 +354,28 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On 2nd controller using chip tool connect to the accessory + On TH_CR2 using chip tool connect to the accessory + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CE (all-clusters-app) log Device commissioning completed with success disabled: true - label: "TH_CR2 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On second controller, read fabrics list + On TH_CR2 , read fabrics list - Below is the command using chip tool controller + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool operationalcredentials read fabrics 1234 0 --fabric-filtered 0 --commissioner-name beta + Verify TH_CE receives and processes the command successfully on TH_CE (all-clusters-app) log + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 2455995246 [1647863342.980899][9309:9314] CHIP:TOO: Fabrics: 3 entries [1647863342.981158][9309:9314] CHIP:TOO: [1]: { diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml index a59932b593d21c..83891c653b5b23 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml @@ -34,7 +34,7 @@ tests: - label: "TH_CR1 starts a commissioning process with DUT_CE" PICS: CADMIN.S verification: | - "1. Provision the device using 1st controller chip tool(use above instructions) , + "1. Provision the device using TH_CR1 -chip tool(use above instructions) , " disabled: true @@ -43,12 +43,12 @@ tests: timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.S.C00.Rsp verification: | - On 1st controller chip tool, open commissioning window using ECM - - Below is the example when using chip tool as controller + On TH_CR1 (chip tool), open commissioning window using ECM ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 + Verify Manual pairing code on TH_CR1 (chip-tool) Log + [1635925713.966786][9695:9700] CHIP:SC: Success status report received. Session was established [1635925713.966839][9695:9700] CHIP:IN: New secure session created for device 0x0000000000000001, key 33!! [1635925713.966938][9695:9700] CHIP:CTL: OpenCommissioningWindow for device ID 1 @@ -65,12 +65,12 @@ tests: - label: "THn starts a commissioning process with DUT_CE" PICS: CADMIN.S verification: | - On nth controller using chip tool connect to the accessory + On TH_CR1+1 controller using chip tool connect to the accessory - ./chip-tool pairing code 2 36217551633 + ./chip-tool pairing code 2 36217551633 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CR1+1(chip-tool) log Device commissioning completed with success disabled: true @@ -79,7 +79,13 @@ tests: to reach an index value of SupportedFabrics on DUT_CE" PICS: CADMIN.S.C00.Rsp verification: | - Repeat step 3 until CommissionedFabrics=SupportedFabrics + Repeat step 3 until CommissionedFabrics=SupportedFabrics (Supported fabrics value obtained in the precondition) + + Use the following command to verify the currentcommissioned fabric (Output number may vary depends on the number successful commissioning ) + + ./chip-tool operationalcredentials read commissioned-fabrics 1 0 + + [1660907933.677983][33780:33785] CHIP:TOO: CommissionedFabrics: 16 disabled: true - label: @@ -87,10 +93,11 @@ tests: with DUT_CE" PICS: CADMIN.S verification: | - On nth controller using chip tool connect to the accessory + On THnth controller using chip tool connect to the accessory + ./chip-tool pairing code 6 36217551633 --commissioner-name 4 - ./chip-tool pairing code 6 36217551633 --commissioner-name beta + Verify DUT_CE responds with NOCResponse with a StatusCode of 0x05 on THn (chip-tool) log CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 [1649756670.402192][10794:10799] CHIP:CTL: Device returned status 5 on receiving the NOC @@ -101,7 +108,21 @@ tests: - label: "TH_CR1 removes FabricIndex1" PICS: OPCREDS.S.C0a.Rsp verification: | - on 1st controller using chip tool, remove fabric with FabricIndex=1 + on TH_CR1 using chip tool, remove fabric with FabricIndex=1 ./chip-tool operationalcredentials remove-fabric 1 1 0 + + CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 + CHIP:TOO: NOCResponse: { + CHIP:TOO: statusCode: 0 + CHIP:TOO: fabricIndex: 1 + CHIP:TOO: } + CHIP:DMG: ICR moving to [AwaitingDe] + + Verify CommissionedFabrics=SupportedFabrics-1 on TH_CR1(chip-tool) log + + ./chip-tool operationalcredentials read commissioned-fabrics 1 0 + + [1660907933.677983][33780:33785] CHIP:TOO: CommissionedFabrics: 15 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml index 2449a35f43ea41..7696714ea2df48 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml @@ -39,7 +39,7 @@ tests: - label: "TH_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - Provision the device using chip tool on first controller + "1. Provision the TH_CE (all-cluster-app) device using TH_CR1 (chip-tool ) on the raspi" disabled: true - label: @@ -48,13 +48,13 @@ tests: (Basic Commissioning Method)" PICS: CADMIN.C.C01.Tx verification: | - On first controller, usinadministratorcommissioningg chip tool open commissioning window. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On TH_CR1 send the below command ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 - On TH1(all-clusters-app) Log + Verify Success response On TH_CR1(CHIP-TOOL) Log CHIP:DMG: InvokeResponseMessage = @@ -93,14 +93,15 @@ tests: - label: "TH_CR1 sends command to TH_CE to read the list of Fabrics" PICS: OPCREDS.C.A0001 verification: | - On first controller, using chip tool read fabricList + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On TH_CR1 send the below command ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 On TH1(all-clusters-app) Log + Verify 1 entry in the Fabrics list attributeOn TH_CR1(CHIP-TOOL) Log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 3621507058 [1649245801.244173][10091:10096] CHIP:TOO: Fabrics: 1 entries @@ -118,24 +119,25 @@ tests: - label: "DUT_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On second Controller connect to the accessory. - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - Verify you got below message On TH2(all-clusters-app) Log + Verify whether you got below message in the log of DUT_CR2(CHIP-TOOL) + Device commissioning completed with success disabled: true - label: "Verify TH_CE is now discoverable over DNS-SD with two SRV Records" verification: | - On the raspi , Verify if the DUT is broadcasting using + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On the raspi , Verify if the TH_CE(All-cluster-app) is broadcasting + On TH_CR1 send the below command ubuntu@ubuntu:~/may10_cntrl2/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matter._tcp + eth0 IPv6 E0AF53B23E580769-0000000000000002 _matter._tcp local @@ -157,67 +159,61 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On the 2nd controller write attribute and read attribute to and from TH_CE - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta On TH2(all-clusters-app) Log + Verify Write request on TH_CE(all-clusters-app) Log - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] - + [1660894021.901330][2871:2871] CHIP:EM: Handling via exchange: 9616r, Delegate: 0xaaaada21ffc0 + [1660894021.901426][2871:2871] CHIP:IM: Received Write request + [1660894021.901484][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894021.901613][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894021.901676][2871:2871] CHIP:DMG: { + [1660894021.901735][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894021.901802][2871:2871] CHIP:DMG: timedRequest = false, + [1660894021.901864][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894021.901940][2871:2871] CHIP:DMG: [ + [1660894021.902001][2871:2871] CHIP:DMG: AttributeDataIB = + [1660894021.902071][2871:2871] CHIP:DMG: { + [1660894021.902136][2871:2871] CHIP:DMG: AttributePathIB = + [1660894021.902219][2871:2871] CHIP:DMG: { + [1660894021.902302][2871:2871] CHIP:DMG: Endpoint = 0x0, - Verify read attribute returns the updated value written - ./chip-tool basic read node-label 1 0 --commissioner-name beta + ./chip-tool basic read node-label 2 0 --commissioner-name beta - On TH2(all-clusters-app) Log + Verify read request on TH_CE(all-clusters-app) Log - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + [1660894142.828718][2871:2871] CHIP:EM: Handling via exchange: 62454r, Delegate: 0xaaaada21ffc0 + [1660894142.828834][2871:2871] CHIP:IM: Received Read request + [1660894142.829023][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894142.829097][2871:2871] CHIP:DMG: { + [1660894142.829153][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894142.829235][2871:2871] CHIP:DMG: [ + [1660894142.829306][2871:2871] CHIP:DMG: AttributePathIB = + [1660894142.829376][2871:2871] CHIP:DMG: { + [1660894142.829449][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894142.829532][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894142.829627][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, disabled: true - label: "DUT_CR2 sends command to TH_CE to read the list of Fabrics on TH_CE" PICS: OPCREDS.C.A0001 verification: | - On second controller controller read fabricList - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool operationalcredentials read fabrics 2 0 --fabric-filtered 0 --commissioner-name beta - On TH2(all-clusters-app) Log + Verify 2 entries in the Fabrics list attribute On DUT_CR2(chip-tool) Log CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 3229397217 @@ -246,52 +242,43 @@ tests: Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On first controller, using chip-tool write attribute, Verify read attribute returns the updated value written. - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool basic write node-label te8 1 0 - On TH1(all-clusters-app) Log + Verify the Write request On TH_CE(all-clusters-app) Log - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] + [1660894538.804578][2871:2871] CHIP:EM: Handling via exchange: 64932r, Delegate: 0xaaaada21ffc0 + [1660894538.804677][2871:2871] CHIP:IM: Received Write request + [1660894538.804737][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894538.804867][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894538.804933][2871:2871] CHIP:DMG: { + [1660894538.804993][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894538.805059][2871:2871] CHIP:DMG: timedRequest = false, + [1660894538.805120][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894538.805196][2871:2871] CHIP:DMG: [ - Verify read attribute returns the updated value written ./chip-tool basic read node-label 1 0 - On TH1(all-clusters-app) Log - - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te8 - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + Verify the Read request On TH_CE(all-clusters-app) Log + + [1660894686.511690][2871:2871] CHIP:EM: Received message of type 0x2 with protocolId (0, 1) and MessageCounter:155836021 on exchange 25703r + [1660894686.511817][2871:2871] CHIP:EM: Handling via exchange: 25703r, Delegate: 0xaaaada21ffc0 + [1660894686.511920][2871:2871] CHIP:IM: Received Read request + [1660894686.512190][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894686.512259][2871:2871] CHIP:DMG: { + [1660894686.512314][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894686.512380][2871:2871] CHIP:DMG: [ + [1660894686.512441][2871:2871] CHIP:DMG: AttributePathIB = + [1660894686.512526][2871:2871] CHIP:DMG: { + [1660894686.512599][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894686.512683][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894686.512772][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894142.829703][2871:2871] CHIP:DMG: } + [1660894142.829777][2871:2871] CHIP:DMG: disabled: true - label: @@ -301,7 +288,7 @@ tests: verification: | On second controller read, write attribute and then read attribute to and from TH_CE - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta @@ -358,47 +345,17 @@ tests: (Basic Commissioning Method)" PICS: CADMIN.C.C01.Tx verification: | - On second controller using chip-tool open commissioning widow using BCM. - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta - On TH2(all-clusters-app) Log - + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] disabled: true - label: @@ -406,47 +363,18 @@ tests: using the Revoke Commissioning command" PICS: CADMIN.C.C02.Tx verification: | - On second controller using chip-tool run revoke command - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool administratorcommissioning revoke-commissioning 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta - On TH2(all-clusters-app) Log - + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 disabled: true - label: @@ -454,14 +382,13 @@ tests: with TH_CE" PICS: CADMIN.C verification: | - 1. On third controller, using chip-tool connect to the accessory. Connect attempt should fail, i.e - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On TH_CR3 send the below command ./chip-tool pairing onnetwork 3 20202021 --commissioner-name gamma - verify you got the following message in the TH3 (all-clusters-app) log + verify you got the following message in the TH_CR3(chip-tool) log CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed @@ -473,50 +400,38 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - On second controller, write attribute and read attribute to and from TH_CE - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta - On TH2(all-clusters-app) Log + Verify the Write request On TH_CE(all-clusters-app) Log + [1660902144.913634][3045:3045] CHIP:EM: Handling via exchange: 22257r, Delegate: 0xaaaaadbeffc0 + [1660902144.913728][3045:3045] CHIP:IM: Received Write request + [1660902144.913785][3045:3045] CHIP:DMG: IM WH moving to [Initialized] + [1660902144.913912][3045:3045] CHIP:DMG: WriteRequestMessage = + [1660902144.913977][3045:3045] CHIP:DMG: { + [1660902144.914038][3045:3045] CHIP:DMG: suppressResponse = false, + [1660902144.914106][3045:3045] CHIP:DMG: timedRequest = false, + [1660902144.914168][3045:3045] CHIP:DMG: AttributeDataIBs = - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] - - Verify read attribute returns the updated value written - - On TH2(all-clusters-app) Log + [1660902144.915374][3045:3045] CHIP:DMG: ./chip-tool basic read node-label 2 0 --commissioner-name beta - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + + Verify the Write request On TH_CE(all-clusters-app) Log + + [1660902253.379018][3045:3045] CHIP:EM: Handling via exchange: 3197r, Delegate: 0xaaaaadbeffc0 + [1660902253.379122][3045:3045] CHIP:IM: Received Read request + [1660902253.379306][3045:3045] CHIP:DMG: ReadRequestMessage = + [1660902253.379373][3045:3045] CHIP:DMG: { + [1660902253.379430][3045:3045] CHIP:DMG: AttributePathIBs = + [1660902253.379496][3045:3045] CHIP:DMG: [ + [1660902253.379557][3045:3045] CHIP:DMG: AttributePathIB = + [1660902253.379634][3045:3045] CHIP:DMG: { + [1660902253.379703][3045:3045] CHIP:DMG: Endpoint = 0x0, disabled: true - label: @@ -524,47 +439,17 @@ tests: BCM" PICS: CADMIN.C.C01.Tx verification: | - On second controller using chip-tool open commissioning widow using BCM. - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool administratorcommissioning open-basic-commissioning-window 180 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta - On TH2(all-clusters-app) Log + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log - - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + [1660902413.357922][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660902413.358025][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660902413.358116][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] disabled: true - label: @@ -578,46 +463,17 @@ tests: BCM" PICS: CADMIN.C.C01.Tx verification: | - On second controller using chip-tool open commissioning widow using BCM. - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + On DUT_CR2 send the below command ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 --commissioner-name beta - On TH2(all-clusters-app) Log + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, - [1650278416.249430][11064:11069] CHIP:DMG: - [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = - [1650278416.249581][11064:11069] CHIP:DMG: { - [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), - [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + [1660902623.744448][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660902623.744550][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660902623.744634][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] disabled: true - label: @@ -625,19 +481,23 @@ tests: from step 15" PICS: CADMIN.C verification: | - Using your 1st Controller connect to the accessory. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + On TH_CR1 send the below command ./chip-tool pairing onnetwork 1 20202021 - On TH1(all-clusters-app) Log + Verify the OperationalCert error 9 in TH_CE(all-clusters-app) Log + + [1660902716.613196][3045:3045] CHIP:DMG: Command handler moving to [AddedComma] + [1660902716.613274][3045:3045] CHIP:ZCL: OpCreds: Failed AddNOC request (err=../../examples/all-clusters-app/linux/third_party/connectedhomeip/src/credentials/FabricTable.cpp:1692: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists) with OperationalCert error 9 + [1660902716.613394][3045:3045] CHIP:DMG: Decreasing reference count for CommandHandler, remaining 0 + [1660902716.613497][3045:3045] CHIP:EM: Piggybacking Ack for MessageCounter:176866087 on exchange: 56605r + Trying to add a NOC for a fabric that already exists On TH_CR1(chip-tool) Log [1651786200275] [36301:315544] CHIP: [DMG] Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 [1651786200275] [36301:315544] CHIP: [CTL] Device returned status 9 on receiving the NOC [1651786200275] [36301:315544] CHIP: [CTL] Add NOC failed with error ../../src/controller/CHIPDeviceController.cpp:1187: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists [1651786200275] [36301:315544] CHIP: [CTL] Error on commissioning step "SendNOC": "../../src/controller/CHIPDeviceController.cpp:1187: CHIP Error 0x0000007E: Trying to add a NOC for a fabric that already exists" - - Verify that the commissioning process fails as TH_CE was already commissioned by TH_CR1 in step 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml index 0c279f676577c5..18672ffa5ddad4 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml @@ -35,7 +35,7 @@ tests: - label: "TH_CR1 starts a commissioning process with DUT_CE" PICS: CADMIN.S verification: | - "1. Provision the device using 1st controller chip tool(use above instructions) , + "1. Provision the device using TH_CR1 - chip tool(use above instructions) , " disabled: true @@ -44,12 +44,12 @@ tests: timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.S.C01.Rsp verification: | - On 1st controller chip tool, open commissioning window using BCM - - Below is the example when using chip tool as controller + On TH_CR1 (chip tool), open commissioning window using BCM ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify success response On TH_CR1(chip-tool) Log + CHIP:DMG: InvokeResponseMessage = [1649756654.928453][3385:3390] CHIP:DMG: { [1649756654.928511][3385:3390] CHIP:DMG: suppressResponse = false, @@ -86,12 +86,11 @@ tests: - label: "THn starts a commissioning process with DUT_CE" PICS: CADMIN.S verification: | - On nth controller using chip tool connect to the accessory - + On TH_CR1+1 controller using chip tool connect to the accessory - ./chip-tool pairing onnetwork 2 20202021 + ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - Verify you got below message + Verify you got below message on TH_CR1+1(chip-tool) log Device commissioning completed with success disabled: true @@ -100,7 +99,13 @@ tests: to reach an index value of SupportedFabrics on DUT_CE" PICS: CADMIN.S.C01.Rsp verification: | - Repeat step 3 until CommissionedFabrics=SupportedFabrics + Repeat step 3 until CommissionedFabrics=SupportedFabrics (Supported fabrics value obtained in the precondition) + + Use the following command to verify the currentcommissioned fabric (Output number may vary depends on the number successful commissioning ) + + ./chip-tool operationalcredentials read commissioned-fabrics 1 0 + + [1660907933.677983][33780:33785] CHIP:TOO: CommissionedFabrics: 16 disabled: true - label: @@ -108,10 +113,11 @@ tests: with DUT_CE" PICS: CADMIN.S.C01.Rsp verification: | - On nth controller using chip tool connect to the accessory + On THnth controller using chip tool connect to the accessory + ./chip-tool pairing onnetwork 6 20202021 --commissioner-name 4 - ./chip-tool pairing onnetwork 6 20202021 --commissioner-name beta + Verify DUT_CE responds with NOCResponse with a StatusCode of 0x05 on THn (chip-tool) log CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 [1649756670.402192][10794:10799] CHIP:CTL: Device returned status 5 on receiving the NOC @@ -122,7 +128,21 @@ tests: - label: "TH_CR1 removes FabricIndex1" PICS: OPCREDS.S.C0a.Rsp verification: | - on 1st controller using chip tool, remove fabric with FabricIndex=1 + on TH_CR1 using chip tool, remove fabric with FabricIndex=1 ./chip-tool operationalcredentials remove-fabric 1 1 0 + + CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 + CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 + CHIP:TOO: NOCResponse: { + CHIP:TOO: statusCode: 0 + CHIP:TOO: fabricIndex: 1 + CHIP:TOO: } + CHIP:DMG: ICR moving to [AwaitingDe] + + Verify CommissionedFabrics=SupportedFabrics-1 on TH_CR1(chip-tool) log + + ./chip-tool operationalcredentials read commissioned-fabrics 1 0 + + [1660907933.677983][33780:33785] CHIP:TOO: CommissionedFabrics: 15 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml index c71b2bbee02a5d..51584addb07c21 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml @@ -40,7 +40,7 @@ tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - 1. Provision the device using DUT_CR1 controller on the raspi. + "1. Provision the TH_CE (all-cluster-app) device using DUT_CR1 (chip-tool ) on the raspi" " disabled: true - label: @@ -48,19 +48,21 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On 1st controller open commissioning widow using ECM. + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners. + + Verify the Open commisioning window on the TH_CE(all-cluster-app) Log: + + [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 + [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window + [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - [1635871058.908790][4273:4278] CHIP:SC: Success status report received. Session was established - [1635871058.908827][4273:4278] CHIP:IN: New secure session created for device 0x0000000000000001, key 47!! - [1635871058.908924][4273:4278] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635871058.916166][4273:4278] CHIP:DMG: ICR moving to [AddingComm] - [1635871058.916223][4273:4278] CHIP:DMG: ICR moving to [AddedComma] - [1635871058.916362][4273:4278] CHIP:IN: Prepared encrypted message 0xaaaac41dfd10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 21937i with MessageCounter:0. - [1635871058.916421][4273:4278] CHIP:IN: Sending encrypted msg 0xaaaac41dfd10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 12630575 msec + Verify the Manual pairing code on the DUT_CR1(chip-tool) Log: + + 0x0000000000000001 at monotonic time: 12630575 msec [1635871058.916549][4273:4278] CHIP:DMG: ICR moving to [CommandSen] [1635871058.916607][4273:4278] CHIP:CTL: Manual pairing code: [36366524220] [1635871058.916679][4273:4278] CHIP:CTL: SetupQRCode: [MT:00000CQM0088GL3XV00] @@ -94,13 +96,15 @@ tests: PIXIT.CADMIN.CwDuration (that was given in step 2) + 10 seconds" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect using manual code generated by DUT Controller + On TH_CR2 send the below command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example when using chip tool as controller (considering 36366524220 as the manual code generated by DUT controller) + (considering 36366524220 as the manual code generated by DUT controller) ./chip-tool pairing code 2 36366524220 --commissioner-name beta - verify you got the following message in the TH log + Verify the below message in the TH_CR2(chip-tool) Log: + CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout @@ -112,19 +116,21 @@ tests: ECM" PICS: CADMIN.C.C00.Tx verification: | - On your second controller open commissioning widow using ECM. + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 2 1 300 1000 3840 --commissioner-name beta - [1635871058.908790][4273:4278] CHIP:SC: Success status report received. Session was established - [1635871058.908827][4273:4278] CHIP:IN: New secure session created for device 0x0000000000000001, key 47!! - [1635871058.908924][4273:4278] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635871058.916166][4273:4278] CHIP:DMG: ICR moving to [AddingComm] - [1635871058.916223][4273:4278] CHIP:DMG: ICR moving to [AddedComma] - [1635871058.916362][4273:4278] CHIP:IN: Prepared encrypted message 0xaaaac41dfd10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 21937i with MessageCounter:0. - [1635871058.916421][4273:4278] CHIP:IN: Sending encrypted msg 0xaaaac41dfd10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 12630575 msec + Verify the Open commisioning window on the TH_CE(all-cluster-app) Log: + + [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 + [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window + [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 + + Verify the Manual pairing code on the DUT_CR1(chip-tool) Log: + + 0x0000000000000001 at monotonic time: 12630575 msec [1635871058.916549][4273:4278] CHIP:DMG: ICR moving to [CommandSen] [1635871058.916607][4273:4278] CHIP:CTL: Manual pairing code: [36366524220] [1635871058.916679][4273:4278] CHIP:CTL: SetupQRCode: [MT:00000CQM0088GL3XV00] @@ -134,55 +140,43 @@ tests: - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" PICS: CADMIN.C.C02.Tx verification: | - On First controller send revoke commissioning + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000 - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, + Verify success response On DUT_CR1(CHIP-TOOL) Log + + [1650278416.249347][11064:11069] CHIP:DMG: }, [1650278416.249430][11064:11069] CHIP:DMG: [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = [1650278416.249581][11064:11069] CHIP:DMG: { [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 + [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log + + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 disabled: true - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect using manual code generated by DUT Controller + On TH_CR2 send the below command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example when using chip tool as controller (considering 34921141778 as the manual code generated by DUT controller) + (considering 34921141778 as the manual code generated by DUT controller) ./chip-tool pairing code 2 34921141778 --commissioner-name beta - verify you got the following message in the TH log + verify you got the following message in the TH_CR2(chip-tool) log CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout @@ -191,26 +185,22 @@ tests: - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" PICS: CADMIN.C.C02.Tx verification: | - On your first controller revoke commissioning - - Below is the example while using chip tool as controller, - - /chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000 - - CHIP:DMG: InvokeResponseMessage = - [1650524034.111241][15422:15427] CHIP:DMG: { - [1650524034.111316][15422:15427] CHIP:DMG: suppressResponse = false, - [1650524034.111383][15422:15427] CHIP:DMG: InvokeResponseIBs = - [1650524034.111464][15422:15427] CHIP:DMG: [ - [1650524034.111531][15422:15427] CHIP:DMG: InvokeResponseIB = - [1650524034.111643][15422:15427] CHIP:DMG: { - [1650524034.111714][15422:15427] CHIP:DMG: CommandStatusIB = - [1650524034.111803][15422:15427] CHIP:DMG: { - [1650524034.111886][15422:15427] CHIP:DMG: CommandPathIB = - [1650524034.111979][15422:15427] CHIP:DMG: { - [1650524034.112072][15422:15427] CHIP:DMG: EndpointId = 0x0, - [1650524034.112167][15422:15427] CHIP:DMG: ClusterId = 0x3c, - [1650524034.112257][15422:15427] CHIP:DMG: CommandId = 0x2, + On DUT_CR1 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000 + + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log + + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 + + Verify cluster-status code 3 On DUT_CR1(chip-tool) Log + + [1650524034.112345][15422:15427] CHIP:DMG: }, [1650524034.112456][15422:15427] CHIP:DMG: [1650524034.112543][15422:15427] CHIP:DMG: StatusIB = @@ -219,16 +209,6 @@ tests: [1650524034.112825][15422:15427] CHIP:DMG: cluster-status = 0x3, [1650524034.112914][15422:15427] CHIP:DMG: }, [1650524034.113005][15422:15427] CHIP:DMG: - [1650524034.113084][15422:15427] CHIP:DMG: }, - [1650524034.113176][15422:15427] CHIP:DMG: - [1650524034.113245][15422:15427] CHIP:DMG: }, - [1650524034.113328][15422:15427] CHIP:DMG: - [1650524034.113392][15422:15427] CHIP:DMG: ], - [1650524034.113477][15422:15427] CHIP:DMG: - [1650524034.113545][15422:15427] CHIP:DMG: InteractionModelRevision = 1 - [1650524034.113610][15422:15427] CHIP:DMG: }, - [1650524034.113780][15422:15427] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 Status=0x1 - [1650524034.113892][15422:15427] CHIP:TOO: Error: IM Error 0x00000603: Cluster-specific error: 0x03 disabled: true - label: @@ -236,43 +216,52 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - Using your DUT controller, write attribute and read attribute to and from TH_CE - - Below is the example while using chip tool on second controller, - ./chip-tool basic write node-label te5new 1 0 - - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] - - - Verify read attribute returns the updated value written - ./chip-tool basic read node-label 2 0 - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + On DUT_CR1 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta + + Verify Write request on TH_CE(all-clusters-app) Log + + [1660894021.901330][2871:2871] CHIP:EM: Handling via exchange: 9616r, Delegate: 0xaaaada21ffc0 + [1660894021.901426][2871:2871] CHIP:IM: Received Write request + [1660894021.901484][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894021.901613][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894021.901676][2871:2871] CHIP:DMG: { + [1660894021.901735][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894021.901802][2871:2871] CHIP:DMG: timedRequest = false, + [1660894021.901864][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894021.901940][2871:2871] CHIP:DMG: [ + [1660894021.902001][2871:2871] CHIP:DMG: AttributeDataIB = + [1660894021.902071][2871:2871] CHIP:DMG: { + [1660894021.902136][2871:2871] CHIP:DMG: AttributePathIB = + [1660894021.902219][2871:2871] CHIP:DMG: { + [1660894021.902302][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894021.902394][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894021.902488][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894021.902574][2871:2871] CHIP:DMG: } + [1660894021.902827][2871:2871] CHIP:DMG: + [1660894021.902912][2871:2871] CHIP:DMG: Data = "te5new" (6 chars), + [1660894021.902985][2871:2871] CHIP:DMG: }, + + ./chip-tool basic read node-label 2 0 --commissioner-name beta + + Verify read request on TH_CE(all-clusters-app) Log + + + [1660894142.828718][2871:2871] CHIP:EM: Handling via exchange: 62454r, Delegate: 0xaaaada21ffc0 + [1660894142.828834][2871:2871] CHIP:IM: Received Read request + [1660894142.829023][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894142.829097][2871:2871] CHIP:DMG: { + [1660894142.829153][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894142.829235][2871:2871] CHIP:DMG: [ + [1660894142.829306][2871:2871] CHIP:DMG: AttributePathIB = + [1660894142.829376][2871:2871] CHIP:DMG: { + [1660894142.829449][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894142.829532][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894142.829627][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894142.829703][2871:2871] CHIP:DMG: } + [1660894142.829777][2871:2871] CHIP:DMG: disabled: true - label: @@ -280,19 +269,21 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using ECM" PICS: CADMIN.C.C00.Tx verification: | - On your first controller open commissioning widow using ECM. + On DUT_CR1 send the below command - Below is the example while using chip tool as controller, + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing open-commissioning-window 1 1 300 1000 3840 - [1635871373.773447][4322:4328] CHIP:SC: Success status report received. Session was established - [1635871373.773517][4322:4328] CHIP:IN: New secure session created for device 0x0000000000000001, key 54!! - [1635871373.773611][4322:4328] CHIP:CTL: OpenCommissioningWindow for device ID 1 - [1635871373.780891][4322:4328] CHIP:DMG: ICR moving to [AddingComm] - [1635871373.780942][4322:4328] CHIP:DMG: ICR moving to [AddedComma] - [1635871373.781067][4322:4328] CHIP:IN: Prepared encrypted message 0xaaaae2653d10 to 0x0000000000000001 of type 0x8 and protocolId (0, 1) on exchange 62089i with MessageCounter:0. - [1635871373.781124][4322:4328] CHIP:IN: Sending encrypted msg 0xaaaae2653d10 with MessageCounter:0 to 0x0000000000000001 at monotonic time: 12945439 msec + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log + + [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] + + Verify Manual pairing code on DUT_CR1(chip-tool) Log + + [1635871373.781269][4322:4328] CHIP:DMG: ICR moving to [CommandSen] [1635871373.781329][4322:4328] CHIP:CTL: Manual pairing code: [35256543344] [1635871373.781482][4322:4328] CHIP:CTL: SetupQRCode: [MT:00000CQM00CIWV01J10] @@ -302,42 +293,30 @@ tests: - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect using manual code generated by DUT Controller + On TH_CR2 send the below command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers - Below is the example when using chip tool as controller (considering 35256543344 as the manual code generated by DUT controller) + (considering 35256543344 as the manual code generated by DUT controller) ./chip-tool pairing code 2 35256543344 --commissioner-name beta - Verify you got below message + Verify whether you got below message in the log of TH_CR2(CHIP-TOOL) Device commissioning completed with success disabled: true - label: "TH_CR3 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 3rd controller using chip-tool , connect using manual code generated by DUT Controller + On TH_CR3 send the below command + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command with their all-cluster-app and for the second and third commissioners. - Below is the example when using chip tool as controller (considering 35256543344 as the manual code generated by DUT controller) + (considering 35256543344 as the manual code generated by DUT controller) ./chip-tool pairing code 3 35256543344 --commissioner-name gamma - verify you got the following message in the TH log + verify you got the following message in the TH_CR3(chip-tool) log + CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout disabled: true - - - label: "" - verification: | - verification step to be updated. - disabled: true - - - label: "" - verification: | - verification step to be updated. - disabled: true - - - label: "" - verification: | - verification step to be updated. - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml index 963add49c1e061..b5bec5f1454f45 100644 --- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml @@ -40,7 +40,7 @@ tests: - label: "DUT_CR1 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - 1. Provision the device using DUT_CR1 controller on the raspi. + "1. Provision the TH_CE (all-cluster-app) device using DUT_CR1 (chip-tool ) on the raspi" " disabled: true - label: @@ -48,45 +48,28 @@ tests: commissioning timeout of PIXIT.CADMIN.CwDuration seconds using BCM" PICS: CADMIN.C.C01.Tx verification: | - On your 1st controller open commissioning widow using BCM. + On DUT_CR1 send the below command - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 - Verify success response On TH1(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, - [1650278416.249347][11064:11069] CHIP:DMG: }, + Verify the Open commisioning window on the TH_CE(all-cluster-app) Log: + + [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 + [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window + [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 + + Verify success response On DUT_CR1(chip-tool) Log + + [1650278416.249430][11064:11069] CHIP:DMG: [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = [1650278416.249581][11064:11069] CHIP:DMG: { [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), [1650278416.249738][11064:11069] CHIP:DMG: }, [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: @@ -116,13 +99,13 @@ tests: PIXIT.CADMIN.CwDuration (that was given in step 2) + 10 seconds" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect to the accessory + On TH_CR2 send the below command - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - verify you got the following message in the TH2 (all-clusters-app) log + Verify the below message in the TH_CR2(chip-tool) Log: CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed @@ -135,28 +118,20 @@ tests: BCM" PICS: CADMIN.C.C01.Tx verification: | - On your first controller open commissioning widow using BCM. + On DUT_CR1 send the below command - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning open-basic-commissioning-window 500 1 0 --timedInteractionTimeoutMs 1000 + Verify the Open commisioning window on the TH_CE(all-cluster-app) Log: + + [1660904553.796857][3537:3537] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 + [1660904553.796951][3537:3537] CHIP:ZCL: Received command to open commissioning window + [1660904553.797255][3537:3537] CHIP:IN: SecureSession[0xaaab142ef7f0]: Allocated Type:1 LSID:34523 + Verify success response On TH1(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, [1650278416.249347][11064:11069] CHIP:DMG: }, [1650278416.249430][11064:11069] CHIP:DMG: [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = @@ -164,72 +139,44 @@ tests: [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), [1650278416.249738][11064:11069] CHIP:DMG: }, [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" PICS: CADMIN.C.C02.Tx verification: | - On your DUT controller revoke commissioning + On DUT_CR1 send the below command - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers /chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000 - Verify success response On TH1(all-clusters-app) Log + Verify success response On DUT_CR1(CHIP-TOOL) Log - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, [1650278416.249347][11064:11069] CHIP:DMG: }, [1650278416.249430][11064:11069] CHIP:DMG: [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = [1650278416.249581][11064:11069] CHIP:DMG: { [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), [1650278416.249738][11064:11069] CHIP:DMG: }, - [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] + + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log + + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 disabled: true - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect to the accessory + On TH_CR2 send the below command - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - verify you got the following message in the TH2(all-clusters-app) log + verify you got the following message in the TH_CR2(CHIP-TOOL) log CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed @@ -239,28 +186,25 @@ tests: - label: "DUT_CR1 sends command to TH_CE to revoke the commissioning window" PICS: CADMIN.C.C02.Tx verification: | - On your 1st controller revoke commissioning + On DUT_CR1 send the below command - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers /chip-tool administratorcommissioning revoke-commissioning 1 0 --timedInteractionTimeoutMs 1000 Verify success response On TH1(all-clusters-app) Log - CHIP:DMG: InvokeResponseMessage = - [1650524034.111241][15422:15427] CHIP:DMG: { - [1650524034.111316][15422:15427] CHIP:DMG: suppressResponse = false, - [1650524034.111383][15422:15427] CHIP:DMG: InvokeResponseIBs = - [1650524034.111464][15422:15427] CHIP:DMG: [ - [1650524034.111531][15422:15427] CHIP:DMG: InvokeResponseIB = - [1650524034.111643][15422:15427] CHIP:DMG: { - [1650524034.111714][15422:15427] CHIP:DMG: CommandStatusIB = - [1650524034.111803][15422:15427] CHIP:DMG: { - [1650524034.111886][15422:15427] CHIP:DMG: CommandPathIB = - [1650524034.111979][15422:15427] CHIP:DMG: { - [1650524034.112072][15422:15427] CHIP:DMG: EndpointId = 0x0, - [1650524034.112167][15422:15427] CHIP:DMG: ClusterId = 0x3c, - [1650524034.112257][15422:15427] CHIP:DMG: CommandId = 0x2, + + Verify the Commissioning window is closed in TH_CE(all-clusters-app) Log + + [1660901039.590962][3045:3045] CHIP:DMG: Received command for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 + [1660901039.591036][3045:3045] CHIP:ZCL: Received command to close commissioning window + [1660901039.591094][3045:3045] CHIP:SVR: Closing pairing window + [1660901039.591169][3045:3045] CHIP:IN: SecureSession[0xaaaab010d400]: Released - Type:1 LSID:14411 + + Verify cluster-status code 3 On DUT_CR1(CHIP-TOOL) Log + + [1650524034.112345][15422:15427] CHIP:DMG: }, [1650524034.112456][15422:15427] CHIP:DMG: [1650524034.112543][15422:15427] CHIP:DMG: StatusIB = @@ -269,16 +213,6 @@ tests: [1650524034.112825][15422:15427] CHIP:DMG: cluster-status = 0x3, [1650524034.112914][15422:15427] CHIP:DMG: }, [1650524034.113005][15422:15427] CHIP:DMG: - [1650524034.113084][15422:15427] CHIP:DMG: }, - [1650524034.113176][15422:15427] CHIP:DMG: - [1650524034.113245][15422:15427] CHIP:DMG: }, - [1650524034.113328][15422:15427] CHIP:DMG: - [1650524034.113392][15422:15427] CHIP:DMG: ], - [1650524034.113477][15422:15427] CHIP:DMG: - [1650524034.113545][15422:15427] CHIP:DMG: InteractionModelRevision = 1 - [1650524034.113610][15422:15427] CHIP:DMG: }, - [1650524034.113780][15422:15427] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0002 Status=0x1 - [1650524034.113892][15422:15427] CHIP:TOO: Error: IM Error 0x00000603: Cluster-specific error: 0x03 disabled: true - label: @@ -286,48 +220,53 @@ tests: Information Clusters NodeLabel mandatory attribute" PICS: BINFO.C.A0005 verification: | - Using 1st controller, write attribute and read attribute to and from TH_CE - - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. - - ./chip-tool basic write node-label te5new 2 0 - - Verify success response On TH1(all-clusters-app) Log - - CHIP:DMG: WriteResponseMessage = - [1649245940.788522][10110:10115] CHIP:DMG: { - [1649245940.788577][10110:10115] CHIP:DMG: AttributeStatusIBs = - [1649245940.788653][10110:10115] CHIP:DMG: [ - [1649245940.788713][10110:10115] CHIP:DMG: AttributeStatusIB = - [1649245940.788787][10110:10115] CHIP:DMG: { - [1649245940.788852][10110:10115] CHIP:DMG: AttributePathIB = - [1649245940.788931][10110:10115] CHIP:DMG: { - [1649245940.789009][10110:10115] CHIP:DMG: Endpoint = 0x0, - [1649245940.789143][10110:10115] CHIP:DMG: Cluster = 0x28, - [1649245940.789228][10110:10115] CHIP:DMG: Attribute = 0x0000_0005, - [1649245940.789313][10110:10115] CHIP:DMG: } - [1649245940.789388][10110:10115] CHIP:DMG: - [1649245940.789454][10110:10115] CHIP:DMG: StatusIB = - [1649245940.789519][10110:10115] CHIP:DMG: { - [1649245940.789588][10110:10115] CHIP:DMG: status = 0x00 (SUCCESS), - [1649245940.789654][10110:10115] CHIP:DMG: }, - [1649245940.789719][10110:10115] CHIP:DMG: - [1649245940.789778][10110:10115] CHIP:DMG: }, - [1649245940.789841][10110:10115] CHIP:DMG: - [1649245940.789885][10110:10115] CHIP:DMG: ], - [1649245940.789941][10110:10115] CHIP:DMG: - [1649245940.789984][10110:10115] CHIP:DMG: InteractionModelRevision = 1 - [1649245940.790033][10110:10115] CHIP:DMG: } - [1649245940.790167][10110:10115] CHIP:DMG: WriteClient moving to [AwaitingDe] - - - ./chip-tool basic read node-label 2 0 - - Verify read attribute returns the updated value written On TH1(all-clusters-app) Log - - CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0005 DataVersion: 3061847068 - [1649245950.006849][10116:10121] CHIP:TOO: NodeLabel: te5new - [1649245950.007024][10116:10121] CHIP:EM: Sending Standalone Ack for MessageCounter:12495101 on exchange 24816i + On DUT_CR1 send the below command + + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers + + ./chip-tool basic write node-label te5new 2 0 --commissioner-name beta + + Verify Write request on TH_CE(all-clusters-app) Log + + [1660894021.901330][2871:2871] CHIP:EM: Handling via exchange: 9616r, Delegate: 0xaaaada21ffc0 + [1660894021.901426][2871:2871] CHIP:IM: Received Write request + [1660894021.901484][2871:2871] CHIP:DMG: IM WH moving to [Initialized] + [1660894021.901613][2871:2871] CHIP:DMG: WriteRequestMessage = + [1660894021.901676][2871:2871] CHIP:DMG: { + [1660894021.901735][2871:2871] CHIP:DMG: suppressResponse = false, + [1660894021.901802][2871:2871] CHIP:DMG: timedRequest = false, + [1660894021.901864][2871:2871] CHIP:DMG: AttributeDataIBs = + [1660894021.901940][2871:2871] CHIP:DMG: [ + [1660894021.902001][2871:2871] CHIP:DMG: AttributeDataIB = + [1660894021.902071][2871:2871] CHIP:DMG: { + [1660894021.902136][2871:2871] CHIP:DMG: AttributePathIB = + [1660894021.902219][2871:2871] CHIP:DMG: { + [1660894021.902302][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894021.902394][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894021.902488][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894021.902574][2871:2871] CHIP:DMG: } + [1660894021.902827][2871:2871] CHIP:DMG: + [1660894021.902912][2871:2871] CHIP:DMG: Data = "te5new" (6 chars), + [1660894021.902985][2871:2871] CHIP:DMG: }, + + ./chip-tool basic read node-label 2 0 --commissioner-name beta + + Verify read request on TH_CE(all-clusters-app) Log + + + [1660894142.828718][2871:2871] CHIP:EM: Handling via exchange: 62454r, Delegate: 0xaaaada21ffc0 + [1660894142.828834][2871:2871] CHIP:IM: Received Read request + [1660894142.829023][2871:2871] CHIP:DMG: ReadRequestMessage = + [1660894142.829097][2871:2871] CHIP:DMG: { + [1660894142.829153][2871:2871] CHIP:DMG: AttributePathIBs = + [1660894142.829235][2871:2871] CHIP:DMG: [ + [1660894142.829306][2871:2871] CHIP:DMG: AttributePathIB = + [1660894142.829376][2871:2871] CHIP:DMG: { + [1660894142.829449][2871:2871] CHIP:DMG: Endpoint = 0x0, + [1660894142.829532][2871:2871] CHIP:DMG: Cluster = 0x28, + [1660894142.829627][2871:2871] CHIP:DMG: Attribute = 0x0000_0005, + [1660894142.829703][2871:2871] CHIP:DMG: } + [1660894142.829777][2871:2871] CHIP:DMG: disabled: true - label: @@ -336,28 +275,21 @@ tests: BCM" PICS: CADMIN.C.C01.Tx verification: | - On 1st controller open commissioning widow using BCM. + On DUT_CR1 send the below command - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool administratorcommissioning open-basic-commissioning-window 500 2 0 --timedInteractionTimeoutMs 1000 - Verify success response On TH1(all-clusters-app) Log + Verify the Commissioning window is opened in TH_CE(all-clusters-app) Log + + [1660901022.112296][3045:3045] CHIP:DIS: mDNS service published: _matterc._udp + [1660901022.112389][3045:3045] CHIP:ZCL: Commissioning window is now open + [1660901022.112474][3045:3045] CHIP:DMG: Command handler moving to [ Preparing] + + Verify Manual pairing code on DUT_CR1(chip-tool) Log + - CHIP:DMG: InvokeResponseMessage = - [1650278416.248379][11064:11069] CHIP:DMG: { - [1650278416.248436][11064:11069] CHIP:DMG: suppressResponse = false, - [1650278416.248495][11064:11069] CHIP:DMG: InvokeResponseIBs = - [1650278416.248570][11064:11069] CHIP:DMG: [ - [1650278416.248630][11064:11069] CHIP:DMG: InvokeResponseIB = - [1650278416.248718][11064:11069] CHIP:DMG: { - [1650278416.248783][11064:11069] CHIP:DMG: CommandStatusIB = - [1650278416.248860][11064:11069] CHIP:DMG: { - [1650278416.248931][11064:11069] CHIP:DMG: CommandPathIB = - [1650278416.249011][11064:11069] CHIP:DMG: { - [1650278416.249100][11064:11069] CHIP:DMG: EndpointId = 0x0, - [1650278416.249186][11064:11069] CHIP:DMG: ClusterId = 0x3c, - [1650278416.249268][11064:11069] CHIP:DMG: CommandId = 0x1, [1650278416.249347][11064:11069] CHIP:DMG: }, [1650278416.249430][11064:11069] CHIP:DMG: [1650278416.249501][11064:11069] CHIP:DMG: StatusIB = @@ -365,41 +297,32 @@ tests: [1650278416.249664][11064:11069] CHIP:DMG: status = 0x00 (SUCCESS), [1650278416.249738][11064:11069] CHIP:DMG: }, [1650278416.249823][11064:11069] CHIP:DMG: - [1650278416.249889][11064:11069] CHIP:DMG: }, - [1650278416.249969][11064:11069] CHIP:DMG: - [1650278416.250035][11064:11069] CHIP:DMG: }, - [1650278416.250113][11064:11069] CHIP:DMG: - [1650278416.250169][11064:11069] CHIP:DMG: ], - [1650278416.250241][11064:11069] CHIP:DMG: - [1650278416.250298][11064:11069] CHIP:DMG: InteractionModelRevision = 1 - [1650278416.250355][11064:11069] CHIP:DMG: }, - [1650278416.250535][11064:11069] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0001 Status=0x0 - [1650278416.250634][11064:11069] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: "TH_CR2 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 2nd controller using chip-tool , connect to the accessory + On TH_CR2 send the below command - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 2 20202021 --commissioner-name beta - Verify you got below message on TH2(all-clusters-app) log + Verify whether you got below message in the log of TH_CR2(CHIP-TOOL) Device commissioning completed with success disabled: true - label: "TH_CR3 starts a commissioning process with TH_CE" PICS: CADMIN.C verification: | - On the 3rd controller using chip-tool , connect to the accessory + On TH_CR3 send the below command - Below are the example command using chip-tool with single RPI. Vendor should have the provision to use the equivalent command with their DUT and for the second and third commissioners. + Below are the example command for using single RPI as multiple controller. Vendor should have the provision to use the equivalent command in their DUT or use multiple commissioners/controllers ./chip-tool pairing onnetwork 3 20202021 --commissioner-name gamma - verify you got the following message in the TH3(all-clusters-app) log + verify you got the following message in the TH_CR3(all-clusters-app) log + CHIP:SC: PASESession timed out while waiting for a response from the peer. Expected message type was 33 CHIP:TOO: Secure Pairing Failed CHIP:TOO: Pairing Failure: ../../third_party/connectedhomeip/src/protocols/secure_channel/PASESession.cpp:324: CHIP Error 0x00000032: Timeout diff --git a/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml index f14af7b4d5c81e..1cc684a78110d2 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_1_1.yaml @@ -14,6 +14,9 @@ name: 25.1.1. [TC-CC-1.1] Global attributes with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml index 5ec62e14fd1454..a629614f4b3795 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml @@ -14,6 +14,9 @@ name: 25.3.2. [TC-CC-3.2] Hue Move functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml index f34c9bf733dc81..c3e2ad14f2714e 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml @@ -14,6 +14,9 @@ name: 25.3.3. [TC-CC-3.3] Hue Step functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml index 861d16be0b72aa..2f4fe4a27f5e9b 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_1.yaml @@ -14,6 +14,9 @@ name: 25.3.5. [TC-CC-4.1] Saturation MoveTo functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml index 4f275574c0f43f..f338768af6aa88 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml @@ -14,6 +14,9 @@ name: 25.3.6. [TC-CC-4.2] Saturation Move functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml index e7b72f1ef8184b..f66cfa2afa84bc 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml @@ -14,6 +14,9 @@ name: 25.3.7. [TC-CC-4.3] Saturation Step functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml index f855351c446655..5de1f4e59a1f19 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_4.yaml @@ -15,6 +15,9 @@ name: 25.3.8. [TC-CC-4.4] MoveToHueAndSaturation functionality with server as DUT +PICS: + - CC.S + config: nodeId: 0x12344321 cluster: "Color Control" diff --git a/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml b/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml index 3598f9811bc510..1660f93e10be43 100644 --- a/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml @@ -30,7 +30,7 @@ tests: numTrustedRootsOriginal" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TH reads TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658482014.176273][26852:26857] CHIP:DMG: } [1658482014.176359][26852:26857] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687668 @@ -45,7 +45,7 @@ tests: PICS: CGEN.S.A0001 verification: | ./chip-tool generalcommissioning read basic-commissioning-info 1 0 - On TH1 verify that TH reads BasicCommissioningInfo attribute from DUT + On TH1 verify the BasicCommissioningInfo attribute from DUT [1658482413.950617][27013:27018] CHIP:DMG: } [1658482413.950753][27013:27018] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_0001 DataVersion: 2195123768 @@ -63,7 +63,7 @@ tests: PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx verification: | ./chip-tool generalcommissioning arm-fail-safe 900 1 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658482454.092676][27036:27041] CHIP:DMG: }, [1658482454.092739][27036:27041] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 @@ -81,7 +81,7 @@ tests: verification: | ./chip-tool generalcommissioning read breadcrumb 1 0 - On TH1 Verify that the breadcrumb attribute value + On TH1 Verify the breadcrumb attribute value [1658482504.991161][27058:27064] CHIP:DMG: } [1658482504.991205][27058:27064] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_0000 DataVersion: 2195123769 [1658482504.991215][27058:27064] CHIP:TOO: Breadcrumb: 1 @@ -121,7 +121,7 @@ tests: Operational Credentials cluster" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658482718.809139][27144:27149] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687668 [1658482718.809271][27144:27149] CHIP:TOO: TrustedRootCertificates: 2 entries [1658482718.809327][27144:27149] CHIP:TOO: [1]: 1530010100240201370324140018260480228127260580254D3A370624140018240701240801300941045B7F0549925832A9A1294607ADC4695EA3477D3DC9E584431F53A60FC57629C6A616814389C479D3E059D931600F62CA328087462582A350AD015B32756DDC69370A3501290118240260300414A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF3300514A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF318300B40E878725378AEA74A5F6CB6267CB9F7ACD0DACF26741FB24356379D850DD5F23A746281C845FD76D89E97AB188E9BF8A98047B43E3E868A5A8B8E50BAE62F116F18 @@ -134,7 +134,7 @@ tests: "TH1 waits for PIXIT.CGEN.FailsafeExpiryLengthSeconds to ensure the failsafe timer has expired" verification: | - The expiry length is mentioned in above step as 900 secs so wait till 60secs and proced for next step + The expiry length is mentioned in above step as 900 secs so wait till 900secs and proced for next step disabled: true - label: @@ -142,7 +142,7 @@ tests: Operational Credentials cluster" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658483361.121153][27343:27348] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687668 [1658483361.121212][27343:27348] CHIP:TOO: TrustedRootCertificates: 1 entries [1658483361.121257][27343:27348] CHIP:TOO: [1]: 1530010100240201370324140018260480228127260580254D3A370624140018240701240801300941045B7F0549925832A9A1294607ADC4695EA3477D3DC9E584431F53A60FC57629C6A616814389C479D3E059D931600F62CA328087462582A350AD015B32756DDC69370A3501290118240260300414A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF3300514A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF318300B40E878725378AEA74A5F6CB6267CB9F7ACD0DACF26741FB24356379D850DD5F23A746281C845FD76D89E97AB188E9BF8A98047B43E3E868A5A8B8E50BAE62F116F18 @@ -154,7 +154,7 @@ tests: verification: | ./chip-tool generalcommissioning read breadcrumb 1 0 - On TH1 Verify that the breadcrumb attribute value + On TH1 Verify the breadcrumb attribute value [1658483428.627422][27375:27380] CHIP:DMG: } [1658483428.627566][27375:27380] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_0000 DataVersion: 2195123770 [1658483428.627610][27375:27380] CHIP:TOO: Breadcrumb: 0 @@ -164,6 +164,51 @@ tests: - label: "TH1 repeats steps 3 through 5" verification: | TH1 repeats steps 3 through 5 + + To repeat Step 3 please send below mentioned command + ./chip-tool generalcommissioning arm-fail-safe 900 1 1 0 + On TH1 verify that TH reads ArmFailSafe command from DUT + + [1658482454.092676][27036:27041] CHIP:DMG: }, + [1658482454.092739][27036:27041] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 + [1658482454.092777][27036:27041] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 + [1658482454.092821][27036:27041] CHIP:TOO: ArmFailSafeResponse: { + [1658482454.092853][27036:27041] CHIP:TOO: errorCode: 0 + [1658482454.092866][27036:27041] CHIP:TOO: debugText: + [1658482454.092878][27036:27041] CHIP:TOO: } + [1658482454.092910][27036:27041] CHIP:DMG: ICR moving to [AwaitingDe] + [1658482454.092955][27036:27041] CHIP:EM: Sending Standalone Ack for MessageCounter:147679912 on exchange 8754i + + To repeat Step 4 please send below mentioned command + ./chip-tool generalcommissioning read breadcrumb 1 0 + + On TH1 Verify that the breadcrumb attribute value + [1658482504.991161][27058:27064] CHIP:DMG: } + [1658482504.991205][27058:27064] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_0000 DataVersion: 2195123769 + [1658482504.991215][27058:27064] CHIP:TOO: Breadcrumb: 1 + [1658482504.991243][27058:27064] CHIP:EM: Sending Standalone Ack for MessageCounter:52534281 on exchange 8370i + + To repeat Step 5 please send below mentioned command + To generate TrustedRootCertificate, need to buld chip-cert in connectedhomeip by giving below mentioned commands + 1. gn gen --check out/debug + 2. ninja -v -C out/debug chip-cert + Once build completes + 3. cd out/debug + 4. ./chip-cert gen-cert --type r --subject-chip-id CACACACA00000001 --valid-from ""2020-10-15 14:23:43"" --lifetime 7305 --out-key Chip-Root-Key.txt --out Chip-Root-Cert.txt --out-format chip-hex + 5. cat Chip-Root-Cert.txt + + While adding new add-trusted-root-certificate please use the above generated new root key + + ./chip-tool operationalcredentials add-trusted-root-certificate hex:1530010828c376ebc17f21512402013703271401000000cacacaca182604ef171b2726056eb5b94c3706271401000000cacacaca182407012408013009410452c19fd9d329a738fd65722a8309fa68bcaa9ffe87d8114b802c922e5066d0b2f0573b89b38bf98fc9c424ab8ffdabcb18d42e623d82a02d0ca0c062ccadb4bc370a350129011824026030041457934de5405e9a40eacb86ee647e583141ae78f430051457934de5405e9a40eacb86ee647e583141ae78f418300b40a0b0d57bddbc7bcf44480a8b7bd0231d54ccacd68d90efb67b7aa3206adbd268725092992a0388c8e934504178613c5b932d422eed7463f38fd82aaa429b574a18 1 0 + + + on TH1, Verify that the DUT responds with SUCCESS + + + [1658482609.069728][27095:27100] CHIP:DMG: InteractionModelRevision = 1 + [1658482609.069733][27095:27100] CHIP:DMG: }, + [1658482609.069760][27095:27100] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003E Command=0x0000_000B Status=0x0 + [1658482609.069779][27095:27100] CHIP:DMG: ICR moving to [AwaitingDe] disabled: true - label: @@ -172,7 +217,7 @@ tests: PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx verification: | ./chip-tool generalcommissioning arm-fail-safe 0 1 1 0 - On TH1 verify that ArmFailSafe command from DUT + On TH1 verify the ArmFailSafeResponse with ErrorCode as "OK"(0) and DebugText argument is of type string with max length 512 or empty from DUT [1658483503.637026][27397:27402] CHIP:DMG: }, [1658483503.637054][27397:27402] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1658483503.637074][27397:27402] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 @@ -187,6 +232,21 @@ tests: - label: "Repeat steps 8 through 9" verification: | Repeat steps 8 through 9 + To repeat Step 8 please send below mentioned command + ./chip-tool operationalcredentials read trusted-root-certificates 1 0 + On TH1 verify the TrustedRootCertificates entries from DUT + [1658483361.121153][27343:27348] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687668 + [1658483361.121212][27343:27348] CHIP:TOO: TrustedRootCertificates: 1 entries + [1658483361.121257][27343:27348] CHIP:TOO: [1]: 1530010100240201370324140018260480228127260580254D3A370624140018240701240801300941045B7F0549925832A9A1294607ADC4695EA3477D3DC9E584431F53A60FC57629C6A616814389C479D3E059D931600F62CA328087462582A350AD015B32756DDC69370A3501290118240260300414A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF3300514A1BBCB2500D57101023ACB4AFD7EBD4FC0487AF318300B40E878725378AEA74A5F6CB6267CB9F7ACD0DACF26741FB24356379D850DD5F23A746281C845FD76D89E97AB188E9BF8A98047B43E3E868A5A8B8E50BAE62F116F18 + [1658483361.121342][27343:27348] CHIP:EM: Sending Standalone Ack for MessageCounter:8407614 on exchange 22615i + + To repeat Step 9 please send below mentioned command + ./chip-tool generalcommissioning read breadcrumb 1 0 + On TH1 Verify the breadcrumb attribute value + [1658483428.627422][27375:27380] CHIP:DMG: } + [1658483428.627566][27375:27380] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Attribute 0x0000_0000 DataVersion: 2195123770 + [1658483428.627610][27375:27380] CHIP:TOO: Breadcrumb: 0 + [1658483428.627696][27375:27380] CHIP:EM: Sending Standalone Ack for MessageCounter:242324966 on exchange 46358i disabled: true - label: @@ -223,8 +283,8 @@ tests: - label: "TH2 opens a PASE session with the DUT" verification: | - ./chip-tool pairing code 1 36116400648 - On TH2 verify that the PASE established successfully + ./chip-tool pairing code 2 36116400648 --commissioner-name beta + while pairing On TH2 verify that the PASE established successfully [1658483765.114083][8082:8087] CHIP:CTL: Stopping commissioning discovery over DNS-SD [1658483765.114107][8082:8087] CHIP:TOO: Pairing Success [1658483765.114130][8082:8087] CHIP:TOO: PASE establishment successful @@ -263,7 +323,7 @@ tests: as nocs" verification: | ./chip-tool operationalcredentials read nocs 1 0 --fabric-filtered 0 - On TH1 verify that TH reads nocs entries from DUT + On TH1 verify the nocs entries from DUT [1658484050.459056][27576:27582] CHIP:DMG: } [1658484050.459316][27576:27582] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0000 DataVersion: 527687672 [1658484050.459362][27576:27582] CHIP:TOO: NOCs: 2 entries @@ -358,7 +418,7 @@ tests: cluster using a non-fabric-filtered read" verification: | ./chip-tool operationalcredentials read nocs 1 0 - On TH1 verify that TH reads nocs entries from DUT + On TH1 verify the nocs entries from DUT [1658484226.587652][27658:27663] CHIP:DMG: } [1658484226.587884][27658:27663] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687672 [1658484226.587936][27658:27663] CHIP:TOO: TrustedRootCertificates: 2 entries @@ -372,7 +432,7 @@ tests: cluster using a non-fabric-filtered read" verification: | ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - On TH1 verify that TH reads fabrics list from DUT + On TH1 verify the fabrics list from DUT [1658484405.562192][27710:27716] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 527687672 [1658484405.562321][27710:27716] CHIP:TOO: Fabrics: 2 entries [1658484405.562395][27710:27716] CHIP:TOO: [1]: { @@ -399,7 +459,7 @@ tests: Operational Credentials cluster" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TH reads TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658484601.144043][28501:28506] CHIP:DMG: InteractionModelRevision = 1 [1658484601.144050][28501:28506] CHIP:DMG: } [1658484601.144213][28501:28506] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687672 @@ -414,7 +474,12 @@ tests: - label: "TH2 fully commissions the DUT" verification: | - verification step to be updated. + While pairing between DUT and TH2, On TH2 verify that commissioning completes successfully + [1660748637.271112][21572:21577] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 + [1660748637.271128][21572:21577] CHIP:CTL: Received CommissioningComplete response, errorCode=0 + [1660748637.271139][21572:21577] CHIP:CTL: Successfully finished commissioning step "SendComplete" + [1660748637.271146][21572:21577] CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup" + [1660748637.271156][21572:21577] CHIP:CTL: Performing next commissioning step "Cleanup" disabled: true - label: @@ -429,10 +494,10 @@ tests: Once build completes 3. cd out/debug 4. ./chip-cert gen-cert --type r --subject-chip-id CACACACA00000001 --valid-from "2020-10-15 14:23:43" --lifetime 7305 --out-key Chip-Root-Key.txt --out Chip-Root-Cert.txt --out-format chip-hex - 5. cat Chip-Root-Key.txt + 5. cat Chip-Root-Cert.txt - ./chip-tool operationalcredentials add-trusted-root-certificate 04614D01D2897082D7F85832CE00AC787A5A221A6F7B19C4202C069E3D70DDC615E5B9436919266360AC847F2FAB3EAEE3902B43812A13D18C061CC5028EADB775583DCB1008E4CEBFF810EEB2BC60FF7A3CF954C57101798443DA39E75F5FFDEA 2 0 + ./chip-tool operationalcredentials add-trusted-root-certificate 04614D01D2897082D7F85832CE00AC787A5A221A6F7B19C4202C069E3D70DDC615E5B9436919266360AC847F2FAB3EAEE3902B43812A13D18C061CC5028EADB775583DCB1008E4CEBFF810EEB2BC60FF7A3CF954C57101798443DA39E75F5FFDEA 2 0 --commissioner-name beta On TH2 verify that DUT responds with FAILSAFE_REQUIRED [1658484766.785916][8132:8137] CHIP:DMG: [1658484766.785961][8132:8137] CHIP:DMG: InteractionModelRevision = 1 @@ -447,7 +512,7 @@ tests: cluster using a non-fabric-filtered read" verification: | ./chip-tool operationalcredentials read fabrics 1 0 --fabric-filtered 0 - On TH1 verify that TH reads fabrics list from DUT + On TH1 verify the fabrics list from DUT [1658484969.071455][28631:28636] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0000 DataVersion: 527687672 [1658484969.071527][28631:28636] CHIP:TOO: NOCs: 2 entries [1658484969.071587][28631:28636] CHIP:TOO: [1]: { @@ -470,7 +535,7 @@ tests: PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx verification: | ./chip-tool generalcommissioning arm-fail-safe 60 1 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658485224.066397][28732:28737] CHIP:DMG: InteractionModelRevision = 1 [1658485224.066407][28732:28737] CHIP:DMG: }, [1658485224.066441][28732:28737] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 @@ -505,7 +570,7 @@ tests: verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TH reads TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658485696.739931][28920:28925] CHIP:DMG: InteractionModelRevision = 1 [1658485696.739936][28920:28925] CHIP:DMG: } [1658485696.740122][28920:28925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687672 @@ -522,7 +587,7 @@ tests: PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx verification: | ./chip-tool generalcommissioning arm-fail-safe 900 1 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658486181.080260][29218:29223] CHIP:DMG: }, [1658486181.080289][29218:29223] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1658486181.080319][29218:29223] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 @@ -558,8 +623,8 @@ tests: value as 1" PICS: CGEN.S.C00.Rsp && CGEN.S.C01.Tx verification: | - ./chip-tool generalcommissioning arm-fail-safe 900 1 2 0 - On TH2 verify that TH reads ArmFailSafe command from DUT + ./chip-tool generalcommissioning arm-fail-safe 900 1 2 0 --commissioner-name beta + On TH2 verify the ArmFailSafe command from DUT [1658486289.473526][8200:8205] CHIP:DMG: InteractionModelRevision = 1 [1658486289.473563][8200:8205] CHIP:DMG: }, [1658486289.473639][8200:8205] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 @@ -578,7 +643,7 @@ tests: PICS: CGEN.S.C00.Rsp verification: | ./chip-tool generalcommissioning arm-fail-safe 0 1 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658486510.232274][29388:29393] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 [1658486510.232302][29388:29393] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0030 Command 0x0000_0001 [1658486510.232334][29388:29393] CHIP:TOO: ArmFailSafeResponse: { @@ -595,7 +660,7 @@ tests: PICS: CGEN.S.C00.Rsp verification: | ./chip-tool generalcommissioning arm-fail-safe 900 1 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658486418.024554][29343:29348] CHIP:DMG: InteractionModelRevision = 1 [1658486418.024559][29343:29348] CHIP:DMG: }, [1658486418.024588][29343:29348] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0001 @@ -625,7 +690,7 @@ tests: Once build completes 3. cd out/debug 4. ./chip-cert gen-cert --type r --subject-chip-id CACACACA00000001 --valid-from "2020-10-15 14:23:43" --lifetime 7305 --out-key Chip-Root-Key.txt --out Chip-Root-Cert.txt --out-format chip-hex - 5. cat Chip-Root-Key.txt + 5. cat Chip-Root-Cert.txt @@ -643,7 +708,7 @@ tests: Operational Credentials cluster" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TH reads TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658487613.357548][30232:30237] CHIP:DMG: } [1658487613.358000][30232:30237] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687672 @@ -669,7 +734,7 @@ tests: PICS: CGEN.S.C00.Rsp verification: | ./chip-tool generalcommissioning arm-fail-safe 900 0 1 0 - On TH1 verify that TH reads ArmFailSafe command from DUT + On TH1 verify the ArmFailSafe command from DUT [1658487663.593485][30268:30273] CHIP:DMG: InteractionModelRevision = 1 [1658487663.593506][30268:30273] CHIP:DMG: }, @@ -697,7 +762,7 @@ tests: Operational Credentials cluster" verification: | ./chip-tool operationalcredentials read trusted-root-certificates 1 0 - On TH1 verify that TH reads TrustedRootCertificates entries from DUT + On TH1 verify the TrustedRootCertificates entries from DUT [1658489869.278413][31188:31193] CHIP:DMG: } [1658489869.278997][31188:31193] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0004 DataVersion: 527687672 [1658489869.279090][31188:31193] CHIP:TOO: TrustedRootCertificates: 2 entries diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml index 0d282af563100f..63861455bce4fd 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml @@ -26,6 +26,23 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT on Thread setup" + verification: | + verification step to be updated. + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + verification step to be updated. + disabled: true + + - label: "The FeatureMap attribute value is 2" + verification: | + verification step to be updated. + disabled: true + - label: "During the commissioning process, TH and DUT, TH sends ArmFailSafe command to the DUT" diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml index ee7443197417c5..68bbd8f20f9910 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml @@ -26,6 +26,73 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + ./chip-tool descriptor read server-list 1 0 + + Verify the "server-list" on the TH(Chip-tool) log + + [1653474860.462391][29901:29906] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1237231415 + [1653474860.462487][29901:29906] CHIP:TOO: server list: 25 entries + [1653474860.462524][29901:29906] CHIP:TOO: [1]: 3 + [1653474860.462549][29901:29906] CHIP:TOO: [2]: 4 + [1653474860.462574][29901:29906] CHIP:TOO: [3]: 29 + [1653474860.462598][29901:29906] CHIP:TOO: [4]: 30 + [1653474860.462622][29901:29906] CHIP:TOO: [5]: 31 + [1653474860.462646][29901:29906] CHIP:TOO: [6]: 40 + [1653474860.462670][29901:29906] CHIP:TOO: [7]: 42 + [1653474860.462693][29901:29906] CHIP:TOO: [8]: 43 + [1653474860.462717][29901:29906] CHIP:TOO: [9]: 44 + [1653474860.462741][29901:29906] CHIP:TOO: [10]: 45 + [1653474860.462765][29901:29906] CHIP:TOO: [11]: 46 + [1653474860.462788][29901:29906] CHIP:TOO: [12]: 48 + [1653474860.462812][29901:29906] CHIP:TOO: [13]: 49 + [1653474860.462836][29901:29906] CHIP:TOO: [14]: 50 + [1653474860.462859][29901:29906] CHIP:TOO: [15]: 51 + [1653474860.462883][29901:29906] CHIP:TOO: [16]: 52 + [1653474860.462906][29901:29906] CHIP:TOO: [17]: 53 + [1653474860.462930][29901:29906] CHIP:TOO: [18]: 54 + [1653474860.462954][29901:29906] CHIP:TOO: [19]: 55 + [1653474860.462977][29901:29906] CHIP:TOO: [20]: 60 + [1653474860.463001][29901:29906] CHIP:TOO: [21]: 62 + [1653474860.463024][29901:29906] CHIP:TOO: [22]: 63 + [1653474860.463048][29901:29906] CHIP:TOO: [23]: 64 + [1653474860.463071][29901:29906] CHIP:TOO: [24]: 65 + [1653474860.463095][29901:29906] CHIP:TOO: [25]: 1029 + [1653474860.463296][29901:29906] CHIP:EM: Sending Standalone Ack for MessageCounter:10703464 on exchange 2435i + disabled: true + + - label: "The FeatureMap attribute value is 1" + verification: | + ./chip-tool networkcommissioning read feature-map 1 0 + + Verify the "feature-map" on the TH(Chip-tool) log + + [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167 + [1653474932.055578][29920:29925] CHIP:TOO: FeatureMap: 1 + [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i + disabled: true + + - label: + "MaxNetworks attribute value is at least 4 which is saved as + MaxNetworksValue for future use" + verification: | + The test case is not verifiable. As MaxNetworks value is 1 but expected is 4 + + ./chip-tool networkcommissioning read max-networks 1 0 + + [1653476960.303444][30164:30169] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0000 DataVersion: 1600858167 + [1653476960.303531][30164:30169] CHIP:TOO: MaxNetworks: 1 + [1653476960.303641][30164:30169] CHIP:EM: Sending Standalone Ack for MessageCounter:2083922 on exchange 45120i + disabled: true + - label: "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set to 900" @@ -68,8 +135,8 @@ tests: disabled: true - label: - "TH calculates the midpoint of the network list - as floor((MaxNetwor ksValue + 1)/2) and saves as Midpoint" + "TH calculates the midpoint of the network list as floor((MaxNetwor + ksValue + 1)/2) and saves as Midpoint" verification: | The test case is not verifiable in RPI platform. As MaxNetworks value is 1 but expected is 4 ( Pre-Condition) diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml index 637f12813fa436..db445de96a72be 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml @@ -26,6 +26,73 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT on Thread setup" + verification: | + + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + ./chip-tool descriptor read server-list 1 0 + + Verify the "server-list" on the TH(Chip-tool) log + + [1653474860.462391][29901:29906] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1237231415 + [1653474860.462487][29901:29906] CHIP:TOO: server list: 25 entries + [1653474860.462524][29901:29906] CHIP:TOO: [1]: 3 + [1653474860.462549][29901:29906] CHIP:TOO: [2]: 4 + [1653474860.462574][29901:29906] CHIP:TOO: [3]: 29 + [1653474860.462598][29901:29906] CHIP:TOO: [4]: 30 + [1653474860.462622][29901:29906] CHIP:TOO: [5]: 31 + [1653474860.462646][29901:29906] CHIP:TOO: [6]: 40 + [1653474860.462670][29901:29906] CHIP:TOO: [7]: 42 + [1653474860.462693][29901:29906] CHIP:TOO: [8]: 43 + [1653474860.462717][29901:29906] CHIP:TOO: [9]: 44 + [1653474860.462741][29901:29906] CHIP:TOO: [10]: 45 + [1653474860.462765][29901:29906] CHIP:TOO: [11]: 46 + [1653474860.462788][29901:29906] CHIP:TOO: [12]: 48 + [1653474860.462812][29901:29906] CHIP:TOO: [13]: 49 + [1653474860.462836][29901:29906] CHIP:TOO: [14]: 50 + [1653474860.462859][29901:29906] CHIP:TOO: [15]: 51 + [1653474860.462883][29901:29906] CHIP:TOO: [16]: 52 + [1653474860.462906][29901:29906] CHIP:TOO: [17]: 53 + [1653474860.462930][29901:29906] CHIP:TOO: [18]: 54 + [1653474860.462954][29901:29906] CHIP:TOO: [19]: 55 + [1653474860.462977][29901:29906] CHIP:TOO: [20]: 60 + [1653474860.463001][29901:29906] CHIP:TOO: [21]: 62 + [1653474860.463024][29901:29906] CHIP:TOO: [22]: 63 + [1653474860.463048][29901:29906] CHIP:TOO: [23]: 64 + [1653474860.463071][29901:29906] CHIP:TOO: [24]: 65 + [1653474860.463095][29901:29906] CHIP:TOO: [25]: 1029 + [1653474860.463296][29901:29906] CHIP:EM: Sending Standalone Ack for MessageCounter:10703464 on exchange 2435i + disabled: true + + - label: "The FeatureMap attribute value is 2" + verification: | + ./chip-tool networkcommissioning read feature-map 1 0 + + Verify the "feature-map" on the TH(Chip-tool) log + + [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167 + [1653474932.055578][29920:29925] CHIP:TOO: FeatureMap: 1 + [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i + disabled: true + + - label: + "MaxNetworks attribute value is at least 4 which is saved as + MaxNetworksValue for future use" + verification: | + The test case is not verifiable. As MaxNetworks value is 1 but expected is 4 + + ./chip-tool networkcommissioning read max-networks 1 0 + + [1653476960.303444][30164:30169] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0000 DataVersion: 1600858167 + [1653476960.303531][30164:30169] CHIP:TOO: MaxNetworks: 1 + [1653476960.303641][30164:30169] CHIP:EM: Sending Standalone Ack for MessageCounter:2083922 on exchange 45120i + disabled: true + - label: "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set to 900" diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml index 3519c474b73ec3..4c97f68359c397 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml @@ -26,6 +26,35 @@ config: endpoint: 0 tests: + - label: "Factory Reset the DUT" + verification: | + verification step to be updated. + disabled: true + + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + verification step to be updated. + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + verification step to be updated. + disabled: true + + - label: "The FeatureMap attribute value is 1" + verification: | + verification step to be updated. + disabled: true + + - label: + "MaxNetworks attribute value is at least 1 which is saved as + MaxNetworksValue for future use" + verification: | + verification step to be updated. + disabled: true + - label: "TH sends ArmFailSafe command to the DUT with the ExpiryLengthSeco nds field set to 900" @@ -48,7 +77,7 @@ tests: "TH sends RemoveNetwork Command to the DUT with NetworkID field set to PIXIT.CNET.WIFI_ 2ND_ACCESSPOIN T_SSID, which does not match the provisioned network, and Breadcrumb field set to 1" - PICS: CNET.S.C06.Rsp && CNET.S.C07.Tx + PICS: CNET.S.C04.Rsp && CNET.S.C05.Tx verification: | ./chip-tool networkcommissioning remove-network hex: 1 0 diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml index 7963d5e3a75fca..c8de75528e18e3 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml @@ -26,6 +26,35 @@ config: endpoint: 0 tests: + - label: "Factory Reset the DUT" + verification: | + verification step to be updated. + disabled: true + + - label: "Commission TH and DUT to setup the Thread" + verification: | + verification step to be updated. + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + verification step to be updated. + disabled: true + + - label: "The FeatureMap attribute value is 2" + verification: | + verification step to be updated. + disabled: true + + - label: + "MaxNetworks attribute value is at least 1 which is saved as + MaxNetworksValue for future use" + verification: | + verification step to be updated. + disabled: true + - label: "TH sends ArmFailSafe command to the DUT" verification: | ./chip-tool generalcommissioning arm-fail-safe 900 0 54 0 diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml index 5e70a7db0f11b4..ea25d1506d0157 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml @@ -31,6 +31,11 @@ tests: Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + verification step to be updated. + disabled: true + - label: "DUT reads the MaxNetworks attribute from the TH" PICS: CNET.S.A0000 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml index b21221f902dba5..e43c2b5422c02b 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml @@ -31,6 +31,11 @@ tests: Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Commission TH and DUT on Thread setup" + verification: | + verification step to be updated. + disabled: true + - label: "DUT reads the MaxNetworks attribute from the TH" PICS: CNET.S.A0000 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml index 6ccf90ff45fb6a..c6986de08c4b45 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml @@ -31,6 +31,11 @@ tests: Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Commission TH and DUT on Ethernet setup" + verification: | + verification step to be updated. + disabled: true + - label: "DUT reads the MaxNetworks attribute from the TH" PICS: CNET.S.A0000 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml index c1bcc524516814..286ad3a2b050a4 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml @@ -30,6 +30,11 @@ tests: Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + verification step to be updated. + disabled: true + - label: "DUT sends the ScanNetwork command to the TH" PICS: CNET.C.C00.Tx verification: | @@ -60,7 +65,7 @@ tests: disabled: true - label: "DUT sends the AddOrUpdateWiFiNetwork command to the TH" - PICS: CNET.C.C03.Tx + PICS: CNET.C.C02.Tx verification: | ./chip-tool networkcommissioning add-or-update-wi-fi-network-network hex: 1 0 diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml index fd1cabf5b3bb18..8bb383b44f2388 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml @@ -31,6 +31,11 @@ tests: Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true + - label: "Commission TH and DUT on Thread setup" + verification: | + verification step to be updated. + disabled: true + - label: "DUT sends the ScanNetwork command to the TH" PICS: CNET.C.C00.Tx verification: | diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml index 6fa3d6745f312b..0d5946a130707a 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml @@ -26,6 +26,30 @@ config: endpoint: 0 tests: + - label: "DUT supports CNET.S.F01(TH)" + verification: | + verification step to be updated. + disabled: true + + - label: + "DUT has a Network Commissioning cluster on endpoint + PIXIT.CNET.ENDPOINT_THREAD with FeatureMap attribute of 2" + verification: | + verification step to be updated. + disabled: true + + - label: "DUT is commissioned on PIXIT.CNET.THREAD_1ST_OPERATIONALDATASET" + verification: | + verification step to be updated. + disabled: true + + - label: + "TH can communicate with the DUT on + PIXIT.CNET.THREAD_1ST_OPERATIONALDATASET" + verification: | + verification step to be updated. + disabled: true + - label: "TH sends ScanNetworks command to the DUT with the SSID field omitted and the Breadcrumb field set to 1" diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml index 8fa6d52855988d..ae7d031e7e0eaa 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml @@ -26,6 +26,60 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) in present in the ServerList + attribute" + verification: | + ./chip-tool descriptor read server-list 1 0 + + Verify tthe "descriptor" on the TH(Chip-tool) Log: + + [1653474860.462391][29901:29906] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1237231415 + [1653474860.462487][29901:29906] CHIP:TOO: server list: 25 entries + [1653474860.462524][29901:29906] CHIP:TOO: [1]: 3 + [1653474860.462549][29901:29906] CHIP:TOO: [2]: 4 + [1653474860.462574][29901:29906] CHIP:TOO: [3]: 29 + [1653474860.462598][29901:29906] CHIP:TOO: [4]: 30 + [1653474860.462622][29901:29906] CHIP:TOO: [5]: 31 + [1653474860.462646][29901:29906] CHIP:TOO: [6]: 40 + [1653474860.462670][29901:29906] CHIP:TOO: [7]: 42 + [1653474860.462693][29901:29906] CHIP:TOO: [8]: 43 + [1653474860.462717][29901:29906] CHIP:TOO: [9]: 44 + [1653474860.462741][29901:29906] CHIP:TOO: [10]: 45 + [1653474860.462765][29901:29906] CHIP:TOO: [11]: 46 + [1653474860.462788][29901:29906] CHIP:TOO: [12]: 48 + [1653474860.462812][29901:29906] CHIP:TOO: [13]: 49 + [1653474860.462836][29901:29906] CHIP:TOO: [14]: 50 + [1653474860.462859][29901:29906] CHIP:TOO: [15]: 51 + [1653474860.462883][29901:29906] CHIP:TOO: [16]: 52 + [1653474860.462906][29901:29906] CHIP:TOO: [17]: 53 + [1653474860.462930][29901:29906] CHIP:TOO: [18]: 54 + [1653474860.462954][29901:29906] CHIP:TOO: [19]: 55 + [1653474860.462977][29901:29906] CHIP:TOO: [20]: 60 + [1653474860.463001][29901:29906] CHIP:TOO: [21]: 62 + [1653474860.463024][29901:29906] CHIP:TOO: [22]: 63 + [1653474860.463048][29901:29906] CHIP:TOO: [23]: 64 + [1653474860.463071][29901:29906] CHIP:TOO: [24]: 65 + [1653474860.463095][29901:29906] CHIP:TOO: [25]: 1029 + [1653474860.463296][29901:29906] CHIP:EM: Sending Standalone Ack for MessageCounter:10703464 on exchange 2435i + disabled: true + + - label: "The FeatureMap attribute value is 1" + verification: | + ./chip-tool networkcommissioning read feature-map 1 0 + + Verify the "feature-map" on the TH(Chip-tool) Log: + + [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167 + [1653474932.055578][29920:29925] CHIP:TOO: FeatureMap: 1 + [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i + disabled: true + - label: "TH sends ScanNetworks command to the DUT with the SSID field set to null and Breadcrumb field set to 1" diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml index 8de8180dd2332c..5ca63fec18f1fc 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml @@ -26,6 +26,29 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + verification step to be updated. + disabled: true + + - label: "The FeatureMap attribute value is 1" + verification: | + "./chip-tool networkcommissioning read feature-map 1 0 + + Verify the "feature-map" on the TH(Chip-tool) Log: + + [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167 + [1653474932.055578][29920:29925] CHIP:TOO: FeatureMap: 1 + [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i" + disabled: true + - label: "TH sends the AddOrUpdateWiFiNetwork command to the DUT with the following argument: SSID argument value as Userwifi_ssid Credentials diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml index 0f38ac33930338..5a5a0d81c960d6 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml @@ -26,6 +26,23 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT on Thread setup" + verification: | + verification step to be updated. + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + verification step to be updated. + disabled: true + + - label: "The FeatureMap attribute value is 2" + verification: | + verification step to be updated. + disabled: true + - label: "TH sends the AddOrUpdateThreadNetwork command to the DUT with the following argument: OperationalDataset argument value as Userth_op @@ -36,7 +53,7 @@ tests: Below is an example: - ./chip-tool networkcommissioning add-or-update-thread-network hex:1232034768527434274 51 0 + ./chip-tool networkcommissioning add-or-update-thread-network hex:1011101122222229 51 0 Verify "FAILSAFE_REQUIRED status code" on the TH(Chip-tool) Log: @@ -54,7 +71,7 @@ tests: Below is an example: - /chip-tool networkcommissioning remove-network hex:1232034768527434274 51 0 + ./chip-tool networkcommissioning remove-network hex:1011101122222229 51 0 Verify "FAILSAFE_REQUIRED status code" on the TH(Chip-tool) Log: @@ -72,7 +89,7 @@ tests: Below is an example: - ./chip-tool networkcommissioning connect-network hex:1232034768527434274 51 0 + ./chip-tool networkcommissioning connect-network hex:1011101122222229 51 0 Verify "FAILSAFE_REQUIRED status code" on the TH(chip-tool) Log: diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml index 8bbc9c3b5801fe..4a1dfefa8cd73e 100644 --- a/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml @@ -26,6 +26,88 @@ config: endpoint: 0 tests: + - label: "Commission TH and DUT over BLE to setup the Wi-Fi" + verification: | + + disabled: true + + - label: + "The cluster Identifier 49 (0x0031) is present in the ServerList + attribute" + verification: | + ./chip-tool descriptor read server-list 1 0 + + Verify the "descriptor" on the TH(Chip-tool) log + + [1653474860.462391][29901:29906] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1237231415 + [1653474860.462487][29901:29906] CHIP:TOO: server list: 25 entries + [1653474860.462524][29901:29906] CHIP:TOO: [1]: 3 + [1653474860.462549][29901:29906] CHIP:TOO: [2]: 4 + [1653474860.462574][29901:29906] CHIP:TOO: [3]: 29 + [1653474860.462598][29901:29906] CHIP:TOO: [4]: 30 + [1653474860.462622][29901:29906] CHIP:TOO: [5]: 31 + [1653474860.462646][29901:29906] CHIP:TOO: [6]: 40 + [1653474860.462670][29901:29906] CHIP:TOO: [7]: 42 + [1653474860.462693][29901:29906] CHIP:TOO: [8]: 43 + [1653474860.462717][29901:29906] CHIP:TOO: [9]: 44 + [1653474860.462741][29901:29906] CHIP:TOO: [10]: 45 + [1653474860.462765][29901:29906] CHIP:TOO: [11]: 46 + [1653474860.462788][29901:29906] CHIP:TOO: [12]: 48 + [1653474860.462812][29901:29906] CHIP:TOO: [13]: 49 + [1653474860.462836][29901:29906] CHIP:TOO: [14]: 50 + [1653474860.462859][29901:29906] CHIP:TOO: [15]: 51 + [1653474860.462883][29901:29906] CHIP:TOO: [16]: 52 + [1653474860.462906][29901:29906] CHIP:TOO: [17]: 53 + [1653474860.462930][29901:29906] CHIP:TOO: [18]: 54 + [1653474860.462954][29901:29906] CHIP:TOO: [19]: 55 + [1653474860.462977][29901:29906] CHIP:TOO: [20]: 60 + [1653474860.463001][29901:29906] CHIP:TOO: [21]: 62 + [1653474860.463024][29901:29906] CHIP:TOO: [22]: 63 + [1653474860.463048][29901:29906] CHIP:TOO: [23]: 64 + [1653474860.463071][29901:29906] CHIP:TOO: [24]: 65 + [1653474860.463095][29901:29906] CHIP:TOO: [25]: 1029 + [1653474860.463296][29901:29906] CHIP:EM: Sending Standalone Ack for MessageCounter:10703464 on exchange 2435i + disabled: true + + - label: "The FeatureMap attribute value is 1" + verification: | + ./chip-tool networkcommissioning read feature-map 1 0 + + Verify the "feature-map" on the TH(Chip-tool) log + + [1653474932.055513][29920:29925] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_FFFC DataVersion: 1600858167 + [1653474932.055578][29920:29925] CHIP:TOO: FeatureMap: 1 + [1653474932.055675][29920:29925] CHIP:EM: Sending Standalone Ack for MessageCounter:1494059 on exchange 5482i + disabled: true + + - label: "The Networks attribute value is 1 entries" + verification: | + ./chip-tool networkcommissioning read networks 1 0 + + Verify the "networks" on the TH(Chip-tool) log + + [1653478044.910989][30351:30356] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0001 DataVersion: 1600858167 + [1653478044.911109][30351:30356] CHIP:TOO: Networks: 1 entries + [1653478044.911192][30351:30356] CHIP:TOO: [1]: { + [1653478044.911238][30351:30356] CHIP:TOO: NetworkID: 47524C50726976617465 + [1653478044.911280][30351:30356] CHIP:TOO: Connected: FALSE + [1653478044.911322][30351:30356] CHIP:TOO: } + [1653478044.911474][30351:30356] CHIP:EM: Sending Standalone Ack for MessageCounter:3575760 on exchange 51774i + disabled: true + + - label: + "MaxNetworks attribute value is at least 1 which is saved as + MaxNetworksValue for future use" + verification: | + ./chip-tool networkcommissioning read max-networks 1 0 + + Verify the "max-networks" on the TH(Chip-tool) log + + [1653476960.303444][30164:30169] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Attribute 0x0000_0000 DataVersion: 1600858167 + [1653476960.303531][30164:30169] CHIP:TOO: MaxNetworks: 1 + [1653476960.303641][30164:30169] CHIP:EM: Sending Standalone Ack for MessageCounter:2083922 on exchange 45120i + disabled: true + - label: "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set to 900" @@ -181,6 +263,8 @@ tests: "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set to 0" verification: | + Mark as not applicable and proceed to next step + ./chip-tool generalcommissioning arm-fail-safe 0 0 1 0 Verify "ArmFailSafeResponse" on the TH(Chip-tool) Log: @@ -196,6 +280,8 @@ tests: - label: "TH reads Networks attribute from the DUT" PICS: CNET.S.A0001 verification: | + Mark as not applicable and proceed to next step + ./chip-tool networkcommissioning read networks 1 0 Verify "Networks entiries and its status" on the TH(Chip-tool) Log: @@ -208,6 +294,8 @@ tests: "TH sends ArmFailSafe command to the DUT with ExpiryLengthSeco nds set to 90" verification: | + Mark as not applicable and proceed to next step + ./chip-tool generalcommissioning arm-fail-safe 90 1 1 0 Verify "ArmFailSafeResponse" on the TH(Chip-tool) Log: @@ -225,6 +313,8 @@ tests: PIXIT.CNET.WIFI_ 1ST_ACCESSPOINT _SSID and Breadcrumb field set to 1" PICS: CNET.S.C04.Rsp && CNET.S.C05.Tx verification: | + Mark as not applicable and proceed to next step + ./chip-tool networkcommissioning remove-network hex: 1 0 Below is an example: diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml index 914a15ac8d93f5..a4606fa7781765 100644 --- a/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml @@ -49,11 +49,20 @@ tests: - label: "DUT generates 32-byte AttestationNonce" verification: | - To generate the Attestation Nonce give below command - - echo hex:$(hexdump -vn32 -e"4/4 "%08X" " /dev/urandom) - - The generated Attestation Nonce is hex:F573438E58E445EAB50665023A298E351446F5E5E9493F05F4C63CCC02E1F834 + DUT generates 32-byte AttestationNonce on TH(all-clusters-app) log + + [1660832898.375011][2480:2485] CHIP:DMG: } + [1660832898.375071][2480:2485] CHIP:DMG: Device Type Id = 22 + [1660832898.375136][2480:2485] CHIP:DMG: Certificate Id (19) = ZIG20142ZB330003-24 + [1660832898.375198][2480:2485] CHIP:DMG: Security Level = 0 + [1660832898.375257][2480:2485] CHIP:DMG: Security Information = 0 + [1660832898.375315][2480:2485] CHIP:DMG: Version Number = 9876 + [1660832898.375374][2480:2485] CHIP:DMG: Certification Type = 0 + [1660832898.375431][2480:2485] CHIP:DMG: } + [1660832898.375496][2480:2485] CHIP:DMG: Attestation Nonce (32) = 79C7156A8580C653945226CD5B5994EF4EC3D79CEAE6D32325CA2EA24B5201CB + [1660832898.375552][2480:2485] CHIP:DMG: Timestamp = 0 + [1660832898.375605][2480:2485] CHIP:DMG: } + [1660832898.375655][2480:2485] CHIP:DMG: disabled: true - label: @@ -62,16 +71,16 @@ tests: verification: | DUT sends AttestationRequest Command with AttestationNonce as field to the TH1, verify attestation response is received on TH(all-clusters-app) log - ./chip-tool operationalcredentials attestation-request hex:F573438E58E445EAB50665023A298E351446F5E5E9493F05F4C63CCC02E1F834 1 0 + ./chip-tool operationalcredentials attestation-request hex:79C7156A8580C653945226CD5B5994EF4EC3D79CEAE6D32325CA2EA24B5201CB 1 0 - [1659514429.238042][3458:3464] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001 - [1659514429.238161][3458:3464] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0001 - [1659514429.238282][3458:3464] CHIP:TOO: AttestationResponse: { - [1659514429.238447][3458:3464] CHIP:TOO: attestationElements: 1531011D023082021906092A864886F70D010702A082020A30820206020103310D300B06096086480165030402013082017106092A864886F70D010701A08201620482015E152400012501F1FF3602050080050180050280050380050480050580050680050780050880050980050A80050B80050C80050D80050E80050F80051080051180051280051380051480051580051680051780051880051980051A80051B80051C80051D80051E80051F80052080052180052280052380052480052580052680052780052880052980052A80052B80052C80052D80052E80052F80053080053180053280053380053480053580053680053780053880053980053A80053B80053C80053D80053E80053F80054080054180054280054380054480054580054680054780054880054980054A80054B80054C80054D80054E80054F80055080055180055280055380055480055580055680055780055880055980055A80055B80055C80055D80055E80055F80056080056180056280056380182403162C04135A494732303134325A423333303030332D3234240500240600250794 - [1659514429.238593][3458:3464] CHIP:TOO: ...................: 2624080018317D307B020103801462FA823359ACFAA9963E1CFA140ADDF504F37160300B0609608648016503040201300A06082A8648CE3D04030204473045022024E5D1F47A7D7B0D206A26EF699B7C9757B72D469089DE3192E678C745E7F60C022100F8AA2FA711FCB79B97E397CEDA667BAE464E2BD3FFDFC3CCED7AA8CA5F4C1A7C300220F573438E58E445EAB50665023A298E351446F5E5E9493F05F4C63CCC02E1F83424030018 - [1659514429.238672][3458:3464] CHIP:TOO: signature: 1644376FEC5DE29C92AD9CDF43E0051EA2C46DA93429BEEADDA5C7B74A6EF8ACFB47D8AAD77EBEEDEEFE987639ECCA596E1BBDBD39BF0ED5EE7BACAA7A899CA0 - [1659514429.238756][3458:3464] CHIP:TOO: } + Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001 + [1660833399.901252][2506:2511] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0001 + [1660833399.901498][2506:2511] CHIP:TOO: AttestationResponse: { + [1660833399.901607][2506:2511] CHIP:TOO: attestationElements: 1531011D023082021906092A864886F70D010702A082020A30820206020103310D300B06096086480165030402013082017106092A864886F70D010701A08201620482015E152400012501F1FF3602050080050180050280050380050480050580050680050780050880050980050A80050B80050C80050D80050E80050F80051080051180051280051380051480051580051680051780051880051980051A80051B80051C80051D80051E80051F80052080052180052280052380052480052580052680052780052880052980052A80052B80052C80052D80052E80052F80053080053180053280053380053480053580053680053780053880053980053A80053B80053C80053D80053E80053F80054080054180054280054380054480054580054680054780054880054980054A80054B80054C80054D80054E80054F80055080055180055280055380055480055580055680055780055880055980055A80055B80055C80055D80055E80055F80056080056180056280056380182403162C04135A494732303134325A423333303030332D3234240500240600250794 + [1660833399.901733][2506:2511] CHIP:TOO: ...................: 2624080018317D307B020103801462FA823359ACFAA9963E1CFA140ADDF504F37160300B0609608648016503040201300A06082A8648CE3D04030204473045022024E5D1F47A7D7B0D206A26EF699B7C9757B72D469089DE3192E678C745E7F60C022100F8AA2FA711FCB79B97E397CEDA667BAE464E2BD3FFDFC3CCED7AA8CA5F4C1A7C30022079C7156A8580C653945226CD5B5994EF4EC3D79CEAE6D32325CA2EA24B5201CB24030018 + [1660833399.901816][2506:2511] CHIP:TOO: signature: 920E22FE88765058D28A248636828BDBD612D24FFA4B27A06FFFB5D76061E0D0EE7FBCED7030026624A012B32F11596FB87CE147323B13F55A3654F27ED59FB3 + [1660833399.901881][2506:2511] CHIP:TOO: } disabled: true - label: @@ -79,7 +88,7 @@ tests: by setting the following error condition: Commissionee is not yet certified" verification: | - To Execute ths step follow the following + To Execute this step follow the following 1. To generate the CD use the below command ./out/debug/chip-cert gen-cd -C credentials/test/certification-declaration/Chip-Test-CD-Signing-Cert.pem -K credentials/test/certification-declaration/Chip-Test-CD-Signing-Key.pem --out dec_message.txt -f 1 -V FFF1 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 @@ -113,12 +122,7 @@ tests: [1658320787.292739][4152:4157] CHIP:CTL: Expiring failsafe on proxy 0xffff7c000b60 disabled: true - - label: - "Verify that DUT notifies a warning stating that Commissionee is not a - fully trusted device,Verify that the warning contains the information - about the reason for error condition,If the warning message indicates - that Commissioning is allowed then confirm that CSRRequest Command is - sent from DUT to TH1" + - label: "" PICS: MCORE.DA.ATTEST_WARNING verification: | ------>sudo ./chip-all-clusters-app --dac_provide /dec_message.json @@ -166,13 +170,10 @@ tests: 1. To generate the CD use the below command ./out/debug/chip-cert gen-cd -C credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1/dac-Cert.pem -K credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1/dac-Key.pem --out dec_message_3 -f 1 -V FFF1 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 - - 2. Use the below command to see the generated CD xxd -p -c 1024 dec_message_3 3082021806092a864886f70d010702a082020930820205020103310d300b06096086480165030402013082017106092a864886f70d010701a08201620482015e152400012501f1ff3602050080050180050280050380050480050580050680050780050880050980050a80050b80050c80050d80050e80050f80051080051180051280051380051480051580051680051780051880051980051a80051b80051c80051d80051e80051f80052080052180052280052380052480052580052680052780052880052980052a80052b80052c80052d80052e80052f80053080053180053280053380053480053580053680053780053880053980053a80053b80053c80053d80053e80053f80054080054180054280054380054480054580054680054780054880054980054a80054b80054c80054d80054e80054f80055080055180055280055380055480055580055680055780055880055980055a80055b80055c80055d80055e80055f80056080056180056280056380182403162c04135a494732303134325a423333303030332d32342405002406002507942624080018317c307a02010380146f4b2077c703a3d97e2c7d0f7c309c9db12abbb3300b0609608648016503040201300a06082a8648ce3d04030204463044022065ce44afabe7ad98eba7f382825be984fd4da28a5b00904acaf9f904e12bfd93022037b92fc4343578c5305d0ef0fb85dd2105f8b665bfe97687e24834d7a27c5096 - 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app 4. Commission TH to DUT using the above generated CD by using dac_provider parameter @@ -187,8 +188,6 @@ tests: [1658320256.356675][4486:4486] CHIP:IN: SecureSession[0xaaaaf9556b00]: Released - Type:1 LSID:62352 [1658320256.356758][4486:4486] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:71: CHIP Error 0x00000032: Timeout - - --->./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3840 --trace_decode 1 [1658320256.309769][4098:4103] CHIP:CTL: Commissioning stage next step: "SendAttestationRequest" -> "AttestationVerification" @@ -202,6 +201,80 @@ tests: [1658320256.315610][4098:4103] CHIP:CTL: Expiring failsafe on proxy 0xffff6c000b60 [1658320256.315707][4098:4103] CHIP:DMG: ICR moving to [AddingComm] [1658320256.315748][4098:4103] CHIP:DMG: ICR moving to [AddedComma] + + + Similarly for condition 2 follow below steps + + 1. To generate the CD use the below command + ./out/debug/chip-cert gen-cd -E vid-mismatch -C credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1/dac-Cert.der -K credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1/dac-Key.der --out dec_message_6.txt -f 1 -V FFF1 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 + + 2. Use the below command to see the generated CD + xxd -p -c 1024 dec_message_6.txt + 3082021906092a864886f70d010702a082020a30820206020103310d300b06096086480165030402013082017106092a864886f70d010701a08201620482015e152400012501f1ff3602050080050180050280050380050480050580050680050780050880050980050a80050b80050c80050d80050e80050f80051080051180051280051380051480051580051680051780051880051980051a80051b80051c80051d80051e80051f80052080052180052280052380052480052580052680052780052880052980052a80052b80052c80052d80052e80052f80053080053180053280053380053480053580053680053780053880053980053a80053b80053c80053d80053e80053f80054080054180054280054380054480054580054680054780054880054980054a80054b80054c80054d80054e80054f80055080055180055280055380055480055580055680055780055880055980055a80055b80055c80055d80055e80055f80056080056180056280056380182403162c04135a494732303134325a423333303030332d32342405002406002507942624080018317d307b02010380146f4b2077c703a3d97e2c7d0f7c309c9db12abbb3300b0609608648016503040201300a06082a8648ce3d040302044730450221009bc4c8759ff98a68fb1b42f2d7b2300a856f7830982a4876ff54855dcc25e773022060c17079368bc8e33171c52d9c73a09d690614c28303c119d1bdc1f9b4be869e + + 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app + + 4. Commission TH to DUT using the above generated CD by using dac_provider parameter + + sudo rm -rf /tmp/chip_* + ./all-cluster-app --wifi --dac_provider /dec_3.json + + [1660836160.681814][4884:4884] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 + [1660836160.681873][4884:4884] CHIP:SVR: Failsafe timer expired + [1660836160.681923][4884:4884] CHIP:IN: SecureSession[0xaaaad5440e10]: MarkForEviction Type:1 LSID:22448 + [1660836160.681975][4884:4884] CHIP:SC: SecureSession[0xaaaad5440e10]: Moving from state "kActive" --> "kPendingEviction" + [1660836160.682126][4884:4884] CHIP:IN: SecureSession[0xaaaad5440e10]: Released - Type:1 LSID:22448 + [1660836160.682202][4884:4884] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:73: CHIP Error 0x00000032: Timeout + + + + --->./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3840 --trace_decode 1 + + [1660836160.627772][2653:2658] CHIP:CTL: Performing next commissioning step "AttestationVerification" + [1660836160.627826][2653:2658] CHIP:CTL: Verifying attestation + [1660836160.686379][2653:2658] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 601. Look at AttestationVerificationResult enum to understand the errors + [1660836160.686579][2653:2658] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660836160.686648][2653:2658] CHIP:CTL: Failed to perform commissioning step 8 + [1660836160.686714][2653:2658] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" -> "Cleanup" + [1660836160.686806][2653:2658] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660836160.686869][2653:2658] CHIP:CTL: Expiring failsafe on proxy 0xffffa4032330 + + + + Similarly for condition 3 follow below steps + + 1. To generate the CD use the below command + ./out/debug/chip-cert gen-att-cert --type a --subject-cn "Matter Development PAA 01" --valid-from "2020-10-15 14:23:43" --lifetime 7305 --out-key Chip-PAA-Key.pem --out Chip-PAA-Cert.pem + + 2. Use the below command to see the generated CD + xxd -p -c 1024 Chip-PAA-Cert.pem + 2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d49494270444343415571674177494241674949636769574a6f6e394f653477436759494b6f5a497a6a3045417749774a4445694d434147413155454177775a0a54574630644756794945526c646d5673623342745a57353049464242515341774d544165467730794d4445774d5455784e44497a4e444e61467730304d4445770a4d5455784e44497a4e444a614d435178496a416742674e5642414d4d475531686448526c636942455a585a6c624739776257567564434251515545674d4445770a5754415442676371686b6a4f5051494242676771686b6a4f50514d4242774e4341415461314478507a5873473870372f6d755231686f5631783042797072516a0a58672b77536e742b5a6c45542b78424745373252624b4c6c474f2f54694d427776354972633534664d316e697067483546435078536258736f3259775a4441530a42674e5648524d4241663845434441474151482f416745424d41344741315564447745422f77514541774942426a416442674e564851344546675155307551580a4a6b4c73533667487174717875384a6e5a69487946343077487759445652306a42426777466f4155307551584a6b4c73533667487174717875384a6e5a6948790a46343077436759494b6f5a497a6a30454177494453414177525149674a703546485a545739617958334e575777774870543933677434614f7679424c555937500a74423875397038434951446c4e38375755324c6b6c68313339377a63517942565351345833634e6d4d426f336b5a4853584f475843673d3d0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0 + + 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app + + 4. Commission TH to DUT using the above generated CD by using dac_provider parameter + + sudo rm -rf /tmp/chip_* + ./all-cluster-app --wifi --dac_provider /dec_7.json + + [1660894197.335249][5005:5005] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 + [1660894197.335308][5005:5005] CHIP:SVR: Failsafe timer expired + [1660894197.335357][5005:5005] CHIP:IN: SecureSession[0xaaaae7002e10]: MarkForEviction Type:1 LSID:31514 + [1660894197.335430][5005:5005] CHIP:SC: SecureSession[0xaaaae7002e10]: Moving from state "kActive" --> "kPendingEviction" + [1660894197.335607][5005:5005] CHIP:IN: SecureSession[0xaaaae7002e10]: Released - Type:1 LSID:31514 + [1660894197.335686][5005:5005] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:73: CHIP Error 0x00000032: Timeout + + + --->./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3840 --trace_decode 1 + + [1660894197.296303][4561:4566] CHIP:CTL: Performing next commissioning step "AttestationVerification" + [1660894197.296356][4561:4566] CHIP:CTL: Verifying attestation + [1660894197.350259][4561:4566] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 600. Look at AttestationVerificationResult enum to understand the errors + [1660894197.350444][4561:4566] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660894197.350508][4561:4566] CHIP:CTL: Failed to perform commissioning step 8 + [1660894197.350574][4561:4566] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" -> "Cleanup" + [1660894197.350659][4561:4566] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660894197.350718][4561:4566] CHIP:CTL: Expiring failsafe on proxy 0xffff6c032330 disabled: true - label: @@ -219,8 +292,6 @@ tests: 1. To generate the CD use the below command ./out/debug/chip-cert gen-cd -I -E dac-origin-vid-present -C credentials/test/certification-declaration/Chip-Test-CD-Signing-Cert.pem -K credentials/test/certification-declaration/Chip-Test-CD-Signing-Key.pem --out cd_vid_present_pid_missing.txt -o 0x8000 -r 0xFFF1 -f 1 -V FFF1 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 - - 2. Use the below command to see the generated CD xxd -p -c 1024 cd_vid_present_pid_missing.txt 3082010506092a864886f70d010702a081f73081f4020103310d300b0609608648016503040201306106092a864886f70d010701a0540452152000012501f1ff3602050080182403162c04135a494732303134325a423333303030332d32342405002406002507942624080025090080360b10140b44cabbc5016577aa8b44ffb90fcca140fe66201818317d307b020103801462fa823359acfaa9963e1cfa140addf504f37160300b0609608648016503040201300a06082a8648ce3d0403020447304502205adea20956fcdce1213f2878da4a5f4a35907eaafa70efe367edc9cec23eb2f80221009b2482360c8713ccd2738150874f9b811ec2149c3ec1f579357219985ecc765a @@ -232,7 +303,6 @@ tests: sudo rm -rf /tmp/chip_* sudo ./chip-all-clusters-app --dac_provider /cd.json - [1658320561.405436][4521:4521] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 [1658320561.405489][4521:4521] CHIP:SVR: Failsafe timer expired [1658320561.405546][4521:4521] CHIP:IN: SecureSession[0xaaaaec7c9e10]: MarkForEviction Type:1 LSID:27478 @@ -242,7 +312,6 @@ tests: [1658320561.405815][4521:4521] CHIP:IN: Clearing BLE pending packets. - --->./chip-tool pairing ble-wifi 1 zigbee-thread matter123 20202021 3840 --trace_decode 1 [1658320561.366298][4126:4132] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 603. Look at AttestationVerificationResult enum to understand the errors @@ -252,7 +321,110 @@ tests: [1658320561.366524][4126:4132] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1011: CHIP Error 0x000000AC: Internal error" [1658320561.366554][4126:4132] CHIP:CTL: Expiring failsafe on proxy 0xffff84000b60 - Similary for 2nd error condition follow the below steps - 1. 1. To generate the CD use the below command + Similarly for 2nd error condition follow the below steps + + 1. To generate the CD use the below command + ./out/debug/chip-cert gen-cd -E vid-mismatch -C credentials/development/commissioner_dut/struct_cd_vid_mismatch/dac-Cert.der -K credentials/development/commissioner_dut/struct_cd_vid_mismatch/dac-Key.der --out dec_message_3.txt -f 1 -V FFF5 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 + + + 2. Use the below command to see the generated CD + xxd -p -c 1024 dec_message_3.txt + 3082021906092a864886f70d010702a082020a30820206020103310d300b06096086480165030402013082017106092a864886f70d010701a08201620482015e152400012501f5ff3602050080050180050280050380050480050580050680050780050880050980050a80050b80050c80050d80050e80050f80051080051180051280051380051480051580051680051780051880051980051a80051b80051c80051d80051e80051f80052080052180052280052380052480052580052680052780052880052980052a80052b80052c80052d80052e80052f80053080053180053280053380053480053580053680053780053880053980053a80053b80053c80053d80053e80053f80054080054180054280054380054480054580054680054780054880054980054a80054b80054c80054d80054e80054f80055080055180055280055380055480055580055680055780055880055980055a80055b80055c80055d80055e80055f80056080056180056280056380182403162c04135a494732303134325a423333303030332d32342405002406002507942624080018317d307b02010380140b36c601086c7232d905bd8b1eb2ce75d9aa8eee300b0609608648016503040201300a06082a8648ce3d04030204473045022100afdf19ccdf9ebb227554c11b066d70d648d030cf49c9b16bfbb82f922af325da02201ea59fcb3fb51b99f40283b736486c141f4f136fec63983d72811b5804221d9f + + 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app + + 4. Commission TH to DUT using the above generated CD by using dac_provider parameter + + ./chip-all-clusters-app --dac_provider dec.json + + [1660834197.222084][4765:4765] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 + [1660834197.222142][4765:4765] CHIP:SVR: Failsafe timer expired + [1660834197.222191][4765:4765] CHIP:IN: SecureSession[0xaaaad7a03e10]: MarkForEviction Type:1 LSID:52084 + [1660834197.222242][4765:4765] CHIP:SC: SecureSession[0xaaaad7a03e10]: Moving from state "kActive" --> "kPendingEviction" + [1660834197.222392][4765:4765] CHIP:IN: SecureSession[0xaaaad7a03e10]: Released - Type:1 LSID:52084 + [1660834197.222468][4765:4765] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:73: CHIP Error 0x00000032: Timeout + + ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2753 5540 --trace_decode 1 + + [1660834197.161864][2546:2551] CHIP:CTL: Performing next commissioning step "AttestationVerification" + [1660834197.161918][2546:2551] CHIP:CTL: Verifying attestation + [1660834197.217691][2546:2551] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 601. Look at AttestationVerificationResult enum to understand the errors + [1660834197.218073][2546:2551] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834197.218139][2546:2551] CHIP:CTL: Failed to perform commissioning step 8 + [1660834197.218207][2546:2551] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" -> "Cleanup" + [1660834197.218295][2546:2551] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834197.218358][2546:2551] CHIP:CTL: Expiring failsafe on proxy 0xffff80032330 + + + Similary for 3rd error condition follow the below steps + + 1. To generate the CD use the below command + ./out/debug/chip-cert gen-cd -E vid-mismatch -C credentials/development/commissioner_dut/struct_cd_vid_mismatch/dac-Cert.der -K credentials/development/commissioner_dut/struct_cd_vid_mismatch/dac-Key.der --out dec_message_3.txt -f 1 -V FFF5 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 + + + 2. Use the below command to see the generated CD + xxd -p -c 1024 dec_message_3.txt + 3082021906092a864886f70d010702a082020a30820206020103310d300b06096086480165030402013082017106092a864886f70d010701a08201620482015e152400012501f5ff3602050080050180050280050380050480050580050680050780050880050980050a80050b80050c80050d80050e80050f80051080051180051280051380051480051580051680051780051880051980051a80051b80051c80051d80051e80051f80052080052180052280052380052480052580052680052780052880052980052a80052b80052c80052d80052e80052f80053080053180053280053380053480053580053680053780053880053980053a80053b80053c80053d80053e80053f80054080054180054280054380054480054580054680054780054880054980054a80054b80054c80054d80054e80054f80055080055180055280055380055480055580055680055780055880055980055a80055b80055c80055d80055e80055f80056080056180056280056380182403162c04135a494732303134325a423333303030332d32342405002406002507942624080018317d307b02010380140b36c601086c7232d905bd8b1eb2ce75d9aa8eee300b0609608648016503040201300a06082a8648ce3d04030204473045022100afdf19ccdf9ebb227554c11b066d70d648d030cf49c9b16bfbb82f922af325da02201ea59fcb3fb51b99f40283b736486c141f4f136fec63983d72811b5804221d9f + + 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app + + 4. Commission TH to DUT using the above generated CD by using dac_provider parameter + + ./chip-all-clusters-app --dac_provider dec.json + + [1660834197.222084][4765:4765] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 + [1660834197.222142][4765:4765] CHIP:SVR: Failsafe timer expired + [1660834197.222191][4765:4765] CHIP:IN: SecureSession[0xaaaad7a03e10]: MarkForEviction Type:1 LSID:52084 + [1660834197.222242][4765:4765] CHIP:SC: SecureSession[0xaaaad7a03e10]: Moving from state "kActive" --> "kPendingEviction" + [1660834197.222392][4765:4765] CHIP:IN: SecureSession[0xaaaad7a03e10]: Released - Type:1 LSID:52084 + [1660834197.222468][4765:4765] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:73: CHIP Error 0x00000032: Timeout + + ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2753 5540 --trace_decode 1 + + [1660834197.161864][2546:2551] CHIP:CTL: Performing next commissioning step "AttestationVerification" + [1660834197.161918][2546:2551] CHIP:CTL: Verifying attestation + [1660834197.217691][2546:2551] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 601. Look at AttestationVerificationResult enum to understand the errors + [1660834197.218073][2546:2551] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834197.218139][2546:2551] CHIP:CTL: Failed to perform commissioning step 8 + [1660834197.218207][2546:2551] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" -> "Cleanup" + [1660834197.218295][2546:2551] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834197.218358][2546:2551] CHIP:CTL: Expiring failsafe on proxy 0xffff80032330 + + + Similary for 4th error condition follow the below steps + + 1. To generate the CD use the below command + ./out/debug/chip-cert gen-cd -E vid-mismatch -C credentials/development/commissioner_dut/struct_cd_pid_array_missing/dac-Cert.der -K credentials/development/commissioner_dut/struct_cd_pid_array_missing/dac-Key.der --out dec_message_5.txt -f 1 -V FFF1 -p 8000 -p 8001 -p 8002 -p 8003 -p 8004 -p 8005 -p 8006 -p 8007 -p 8008 -p 8009 -p 800A -p 800B -p 800C -p 800D -p 800E -p 800F -p 8010 -p 8011 -p 8012 -p 8013 -p 8014 -p 8015 -p 8016 -p 8017 -p 8018 -p 8019 -p 801A -p 801B -p 801C -p 801D -p 801E -p 801F -p 8020 -p 8021 -p 8022 -p 8023 -p 8024 -p 8025 -p 8026 -p 8027 -p 8028 -p 8029 -p 802A -p 802B -p 802C -p 802D -p 802E -p 802F -p 8030 -p 8031 -p 8032 -p 8033 -p 8034 -p 8035 -p 8036 -p 8037 -p 8038 -p 8039 -p 803A -p 803B -p 803C -p 803D -p 803E -p 803F -p 8040 -p 8041 -p 8042 -p 8043 -p 8044 -p 8045 -p 8046 -p 8047 -p 8048 -p 8049 -p 804A -p 804B -p 804C -p 804D -p 804E -p 804F -p 8050 -p 8051 -p 8052 -p 8053 -p 8054 -p 8055 -p 8056 -p 8057 -p 8058 -p 8059 -p 805A -p 805B -p 805C -p 805D -p 805E -p 805F -p 8060 -p 8061 -p 8062 -p 8063 -d 0016 -c "ZIG20142ZB330003-24" -l 0 -i 0 -n 2694 -t 0 + + + 2. Use the below command to see the generated CD + xxd -p -c 1024 dec_message_5.txt + 3082021906092a864886f70d010702a082020a30820206020103310d300b06096086480165030402013082017106092a864886f70d010701a08201620482015e152400012501f1ff3602050080050180050280050380050480050580050680050780050880050980050a80050b80050c80050d80050e80050f80051080051180051280051380051480051580051680051780051880051980051a80051b80051c80051d80051e80051f80052080052180052280052380052480052580052680052780052880052980052a80052b80052c80052d80052e80052f80053080053180053280053380053480053580053680053780053880053980053a80053b80053c80053d80053e80053f80054080054180054280054380054480054580054680054780054880054980054a80054b80054c80054d80054e80054f80055080055180055280055380055480055580055680055780055880055980055a80055b80055c80055d80055e80055f80056080056180056280056380182403162c04135a494732303134325a423333303030332d32342405002406002507942624080018317d307b0201038014e84b969e3104277c0a25ec2fd2e014cf6cabbc50300b0609608648016503040201300a06082a8648ce3d04030204473045022005a46eb5d9ba996c44abcad5498a65898a8a7711bc91b25b24949b154949b046022100873aaac936ef14cf795c59629603d6d9ffa193f3e6d13082b47b0d018b21d60f + + 3. Copy the result from step 2 in json file and transfer the json file to Raspi That will be running chip-all-clusters-app + + 4. Commission TH to DUT using the above generated CD by using dac_provider parameter + + ./chip-all-clusters-app --dac_provider dec_1.json + + [1660834938.999182][4811:4811] CHIP:DL: HandlePlatformSpecificBLEEvent 32782 + [1660834938.999232][4811:4811] CHIP:SVR: Failsafe timer expired + [1660834938.999276][4811:4811] CHIP:IN: SecureSession[0xaaaae51efe10]: MarkForEviction Type:1 LSID:59289 + [1660834938.999321][4811:4811] CHIP:SC: SecureSession[0xaaaae51efe10]: Moving from state "kActive" --> "kPendingEviction" + [1660834938.999452][4811:4811] CHIP:IN: SecureSession[0xaaaae51efe10]: Released - Type:1 LSID:59289 + [1660834938.999519][4811:4811] CHIP:SVR: Commissioning failed (attempt 1): ../../third_party/connectedhomeip/src/app/server/CommissioningWindowManager.cpp:73: CHIP Error 0x00000032: Timeout + + + ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2753 5540 --trace_decode 1 + + [1660834938.937220][2589:2594] CHIP:CTL: Commissioning stage next step: "SendAttestationRequest" -> "AttestationVerification" + [1660834938.937294][2589:2594] CHIP:CTL: Performing next commissioning step "AttestationVerification" + [1660834938.937346][2589:2594] CHIP:CTL: Verifying attestation + [1660834938.995809][2589:2594] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 601. Look at AttestationVerificationResult enum to understand the errors + [1660834938.996010][2589:2594] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834938.996077][2589:2594] CHIP:CTL: Failed to perform commissioning step 8 + [1660834938.996145][2589:2594] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" -> "Cleanup" + [1660834938.996234][2589:2594] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../src/controller/CHIPDeviceController.cpp:1018: CHIP Error 0x000000AC: Internal error" + [1660834938.996293][2589:2594] CHIP:CTL: Expiring failsafe on proxy 0xffff84032330 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml index 471121b5640352..f0e874045bb00b 100644 --- a/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml @@ -57,6 +57,31 @@ tests: [1657774756.281289][7964:7969] CHIP:TOO: certificate: 308201CB30820171A003020102020856AD8222AD945B64300A06082A8648CE3D04030230303118301606035504030C0F4D617474657220546573742050414131143012060A2B0601040182A27C02010C04464646313020170D3232303230353030303030305A180F39393939313233313233353935395A303D3125302306035504030C1C4D6174746572204465762050414920307846464631206E6F2050494431143012060A2B0601040182A27C02010C04464646313059301306072A8648CE3D020106082A8648CE3D03010703420004419A9315C2173E0C8C876D03CCFC944852647F7FEC5E5082F4059928ECA894C594151309AC631E4CB03392AF684B0BAFB7E65B3B8162C2F52BF931B8E77AAA82A366306430120603551D130101FF040830060101FF020100300E0603551D0F0101FF040403020106301D0603551D0E0416041463540E47F64B1C38D13884A462D16C195D8FFB3C301F0603551D230418301680146AFD22771F511FECBF1641976710DCDC31A1717E300A06082A8648CE3D0403020348003045022100B2EF27F49AE9B50FB91EEAC94C4D0BDBB8D7929C6C [1657774756.281357][7964:7969] CHIP:TOO: ...........: B88FACE529368D12054C0C0220655DC92B86BD909882A6C62177B825D7D05EDBE7C22F9FEA71220E7EA703F891 [1657774756.281388][7964:7969] CHIP:TOO: } + + The log has certificate details (starting with ---BEGIN CERTIFICATE and ending with ---END CERTIFICATE ) as highlighted below , save the certificate in .pem file format. Open editor on your TH , save that in file, example: pai.pem + + [1660952198157] [17290:5268348] CHIP: [DMG] Encrypted Payload (531 bytes) = + [1660952198157] [17290:5268348] CHIP: [DMG] { + [1660952198157] [17290:5268348] CHIP: [DMG] data = 001c39000820730541fea9f0e9b148d6c50bdd30d20acef8a0ee67b0458c5fe377d9793092b83e0670ad46770ce44154de4d131731f7065b8329d08be8a280db77f8c12b48300c5fb009c0d3f4b0b1b0a8f4523e319db11ee5d8eb679325c2982248aa5c75b474c50f3bbb0f617ab06a04df403557a564bac4cf08c56fd2eb951d4be875f290dd7b9da01e558fc85ad7b4922d804029410735cae9910a6df282145059b3228e9349467ddc917a268638fa7882a3f7b278355ec848c2ac3f466d3cca746ca416733b85dc6bd8e99ecd35bfc0d3b85f28db6e897636bec89fc41ee2eba78bc7ca11fe959a913ec37901b30a193e6665672e8159e194ca133831251205bca75c00dd8b10160a5b6b814e0cc4fc52f48cc2b68819212bcf71ba11785d2c4628363718e9943216a3f4a3f28adcb988997af982a48d793cd9bd0b62648aa2ffed8f373cd7d5ca86ae703415016adf45a1e8ee26a62d023a6a09accca619ca28e3db15cd4ee5b850608c8319e166dc540877683d960d4b9fde0ae4042096ce696532e9d6b8c96f030def011e59a8762753fc0d50ecf30842377249f78c9b3ee164f5f7988a777a4a1ca407f40923737480eca5e0181977b6048d8835b3d3cedd0d36b9c39098e49048c31db9b48decd744f3121b0260e07b9afe9a8a71d9c14a230e48a1b56894c0453b9779bc8fe269e072ee842aa17821ee09b83cfab5e852918a37bbc1414b7f62cd5dc4c254bfa4 + [1660952198157] [17290:5268348] CHIP: [DMG] buffer_ptr = 140233457951312 + [1660952198157] [17290:5268348] CHIP: [DMG] } + [1660952198157] [17290:5268348] CHIP: [DMG] + [1660952198157] [17290:5268348] CHIP: [DMG] DAC/PAI (463) = + [1660952198157] [17290:5268348] CHIP: [DMG] { + -----BEGIN CERTIFICATE----- + MIIByzCCAXGgAwIBAgIIVq2CIq2UW2QwCgYIKoZIzj0EAwIwMDEYMBYGA1UEAwwP + TWF0dGVyIFRlc3QgUEFBMRQwEgYKKwYBBAGConwCAQwERkZGMTAgFw0yMjAyMDUw + MDAwMDBaGA85OTk5MTIzMTIzNTk1OVowPTElMCMGA1UEAwwcTWF0dGVyIERldiBQ + QUkgMHhGRkYxIG5vIFBJRDEUMBIGCisGAQQBgqJ8AgEMBEZGRjEwWTATBgcqhkjO + PQIBBggqhkjOPQMBBwNCAARBmpMVwhc+DIyHbQPM/JRIUmR/f+xeUIL0BZko7KiU + xZQVEwmsYx5MsDOSr2hLC6+35ls7gWLC9Sv5MbjneqqCo2YwZDASBgNVHRMBAf8E + CDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUY1QOR/ZLHDjROISk + YtFsGV2P+zwwHwYDVR0jBBgwFoAUav0idx9RH+y/FkGXZxDc3DGhcX4wCgYIKoZI + zj0EAwIDSAAwRQIhALLvJ/Sa6bUPuR7qyUxNC9u415KcbLiPrOUpNo0SBUwMAiBl + Xckrhr2QmIKmxiF3uCXX0F7b58Ivn+pxIg5+pwP4kQ== + -----END CERTIFICATE----- + [1660952198157] [17290:5268348] CHIP: [DMG] } + [1660952198157] [17290:5268348] CHIP: [DMG] disabled: true - label: @@ -77,153 +102,49 @@ tests: [1657774717.722181][7956:7961] CHIP:TOO: certificate: 308201E73082018EA003020102020869CDF10DE9E54ED1300A06082A8648CE3D040302303D3125302306035504030C1C4D6174746572204465762050414920307846464631206E6F2050494431143012060A2B0601040182A27C02010C04464646313020170D3232303230353030303030305A180F39393939313233313233353935395A30533125302306035504030C1C4D61747465722044657620444143203078464646312F30783830303131143012060A2B0601040182A27C02010C044646463131143012060A2B0601040182A27C02020C04383030313059301306072A8648CE3D020106082A8648CE3D03010703420004463AC69342910A0E5588FC6FF56BB63E62ECCECB148F7D4EB03EE552601415767D16A5C663F793E49123260B8297A7CD7E7CFC7B316B39D98E90D29377738E82A360305E300C0603551D130101FF04023000300E0603551D0F0101FF040403020780301D0603551D0E0416041488DDE7B300382932CFF734C04624810F44168A6F301F0603551D2304183016801463540E47F64B1C38D13884A462D16C195D8FFB3C300A06082A8648CE3D040302 [1657774717.722269][7956:7961] CHIP:TOO: ...........: 034700304402200127A27B4B44610EE2FCDC4D2B7885563660BC0F76F17219ED6A08DFB2B3C1CD02206B59E0AF45F3EB2A85B919D35731528C6028C415239545E108E4E54E70971353 [1657774717.722297][7956:7961] CHIP:TOO: } - disabled: true - - label: "TH extracts the Authority Key Identifier from the PAI certificate" - verification: | - During commissioning we will get PAI certificate, see on TH(chip-tool) log: - [1659415376.883870][2666:2671] CHIP:CTL: Performing next commissioning step "SendPAICertificateRequest" - [1659415376.883925][2666:2671] CHIP:CTL: Sending request for PAI certificate - [1659415376.884015][2666:2671] CHIP:CTL: Sending Certificate Chain request to 0xffffa0000b60 device - [1659415376.884167][2666:2671] CHIP:DMG: ICR moving to [AddingComm] - [1659415376.884302][2666:2671] CHIP:DMG: ICR moving to [AddedComma] - [1659415376.884867][2666:2671] CHIP:IN: Prepared secure message 0xffffb37ec8d8 to 0xFFFFFFFB00000000 (0) of type 0x8 and protocolId (0, 1) on exchange 61632i with MessageCounter:72933899. - [1659415376.884965][2666:2671] CHIP:IN: Sending encrypted msg 0xffffb37ec8d8 with MessageCounter:72933899 to 0xFFFFFFFB00000000 (0) at monotonic time: 0000000000161D55 msec - [1659415376.885796][2666:2671] CHIP:DMG: >> to BLE | 72933899 | [Interaction Model (1) / InvokeCommandRequest (0x08) / Session = 384 / Exchange = 61632] - [1659415376.885890][2666:2671] CHIP:DMG: Header Flags = - [1659415376.885944][2666:2671] CHIP:DMG: { - [1659415376.886028][2666:2671] CHIP:DMG: Exchange (0x01) = - [1659415376.886081][2666:2671] CHIP:DMG: { - [1659415376.886154][2666:2671] CHIP:DMG: Initiator = true - [1659415376.886206][2666:2671] CHIP:DMG: } - [1659415376.886296][2666:2671] CHIP:DMG: } - [1659415376.886350][2666:2671] CHIP:DMG: - [1659415376.886438][2666:2671] CHIP:DMG: Encrypted Payload (62 bytes) = - [1659415376.886492][2666:2671] CHIP:DMG: { - [1659415376.886542][2666:2671] CHIP:DMG: data = 008001000be258046e751fb56b97dabcc7ee6b6611ede33a66461e188834bb1fe5b6332edb4a3896d32bce2eb59dee722e070c4426af77c82dfca14619bb - [1659415376.886616][2666:2671] CHIP:DMG: buffer_ptr = 281473366182720 - [1659415376.886666][2666:2671] CHIP:DMG: } - [1659415376.886714][2666:2671] CHIP:DMG: - [1659415376.886900][2666:2671] CHIP:DMG: InvokeRequestMessage = - [1659415376.886962][2666:2671] CHIP:DMG: { - [1659415376.887039][2666:2671] CHIP:DMG: suppressResponse = false, - [1659415376.887103][2666:2671] CHIP:DMG: timedRequest = false, - [1659415376.887162][2666:2671] CHIP:DMG: InvokeRequests = - [1659415376.887234][2666:2671] CHIP:DMG: [ - [1659415376.887312][2666:2671] CHIP:DMG: CommandDataIB = - [1659415376.887380][2666:2671] CHIP:DMG: { - [1659415376.887442][2666:2671] CHIP:DMG: CommandPathIB = - [1659415376.887538][2666:2671] CHIP:DMG: { - [1659415376.887633][2666:2671] CHIP:DMG: EndpointId = 0x0, - [1659415376.887874][2666:2671] CHIP:DMG: ClusterId = 0x3e, - [1659415376.888039][2666:2671] CHIP:DMG: CommandId = 0x2, - [1659415376.888125][2666:2671] CHIP:DMG: }, - [1659415376.888225][2666:2671] CHIP:DMG: - [1659415376.888289][2666:2671] CHIP:DMG: CommandFields = - [1659415376.888384][2666:2671] CHIP:DMG: { - [1659415376.888478][2666:2671] CHIP:DMG: 0x0 = 2, - [1659415376.888560][2666:2671] CHIP:DMG: }, - [1659415376.888655][2666:2671] CHIP:DMG: }, - [1659415376.888728][2666:2671] CHIP:DMG: - [1659415376.888806][2666:2671] CHIP:DMG: ], - [1659415376.888877][2666:2671] CHIP:DMG: - [1659415376.888955][2666:2671] CHIP:DMG: InteractionModelRevision = 1 - [1659415376.889012][2666:2671] CHIP:DMG: }, - [1659415376.889086][2666:2671] CHIP:DMG: - [1659415376.889368][2666:2671] CHIP:DMG: ICR moving to [CommandSen] - [1659415376.889523][2666:2671] CHIP:DMG: ICR moving to [AwaitingDe] - [1659415376.972895][2666:2671] CHIP:DL: HandlePlatformSpecificBLEEvent 16387 - [1659415377.021227][2666:2669] CHIP:DL: Indication received, conn = 0xffffa803b9b0 - [1659415377.021488][2666:2671] CHIP:DL: HandlePlatformSpecificBLEEvent 16389 - [1659415377.122119][2666:2669] CHIP:DL: Indication received, conn = 0xffffa803b9b0 - [1659415377.122505][2666:2671] CHIP:DL: HandlePlatformSpecificBLEEvent 16389 - [1659415377.217641][2666:2669] CHIP:DL: Indication received, conn = 0xffffa803b9b0 - [1659415377.217905][2666:2671] CHIP:DL: HandlePlatformSpecificBLEEvent 16389 - [1659415377.219135][2666:2671] CHIP:DMG: << from BLE | 199585160 | [Interaction Model (1) / InvokeCommandResponse (0x09) / Session = 46479 / Exchange = 61632] - [1659415377.219238][2666:2671] CHIP:DMG: Header Flags = - [1659415377.219295][2666:2671] CHIP:DMG: { - [1659415377.219391][2666:2671] CHIP:DMG: } - [1659415377.219446][2666:2671] CHIP:DMG: - [1659415377.219518][2666:2671] CHIP:DMG: Encrypted Payload (527 bytes) = - [1659415377.219573][2666:2671] CHIP:DMG: { - [1659415377.219626][2666:2671] CHIP:DMG: data = 008fb500886de50b9dd1c80f8f48187dc9457d6066ed57c1f15550aefb6a675573c3fcff99cc266b26bdbd97c5ac460ff50e513fd8ef02f39294c2e79b507b0d7b6342caea806048b1c64804aae7bb9d4cdb04d4c7c4d345788e332256c05e7ea38eddd7693e4a39cdfe625688f0101cf16af6f5281049b25e47e6931b06c832d9a014a8248d7cfe31d8b75ebb7805b511293591caa108030939b43b951ad2a164692b051201f9c777e769b9632f05b94bc1990718ec3d2e0fa0161da28ec39bc51017c519e994e9fbbc68693e86ae9fa72618a5a0bc9a133e919bf61ca0805a90a09807c5c4b88329bd1d99149788c5464650dc3b7223e11f4d5a487c0b589453f725b035b543b0159801bee756dcd835832af45402931d73f4977371c90a3fd406905b278fefccf607e0699cac0b082d062b563f17d6e9438720a885f6b5d0dd035d652fd9b88790b1e79995030977f4423139eff3d2e36915065474ea1996705bd63b40395344e402c191e54c1c136c4daa31040ea09cc39c5804dd4203763d05e30d2cfd50ed84e12fd01ecf9c49a4bf7fe73c13416af1cc8bed4f5f2e8919f5724d698990115f97c08f43f9dd463883b53d09e6f888ac8a8d8ba91bd65b242ae049cccd4af6fdcfa402877ba10fb560008d07054deb1e9f1a39fd9110930e1e620fc64f999255a52f8064dc1c83fe6aa35de56c44850e932c82919c1f1af174afa75f3ef77c8b08fcace33883 - [1659415377.219729][2666:2671] CHIP:DMG: buffer_ptr = 281473366176768 - [1659415377.219780][2666:2671] CHIP:DMG: } - [1659415377.219830][2666:2671] CHIP:DMG: - [1659415377.220104][2666:2671] CHIP:DMG: DAC/PAI (463) = - [1659415377.220220][2666:2671] CHIP:DMG: { + The log has certificate details (starting with ---BEGIN CERTIFICATE and ending with ---END CERTIFICATE ) as highlighted below , save the certificate in .pem file format. Open editor on your TH , save that in file , example: dac.pem + + 1660951953700] [17233:5262446] CHIP: [DMG] data = 0068e9001f1f110e4f813e5e997100f2b1c69eb72b23bd4e69002a0485ecc741a33706d82f20c8ea99d6b830b2f60ed69c07cecba48142c7f3c8ded67e9ed878b5d68fe28facaf111ee3ce4510fc9b00ad13d57c2a7bd8bdcf868ca8e0aa0bb96c873862f32f12a32207a22e33fe3d8124435207df4f5747414a21b9674685a486f0d3c0aae5d96ba2f02067be2221b98415244522a221f570b62c21a83d88a9ee1a085c5a8c8f5d598f7cb168b4b36ca2306a4554a062e058dba25e7058a4e2f9f976fc71e3d6fcdafb40346d74600e033100243c0837f30f2e6fb337582f6a7d122ffc8943bbc17ba447f80fbac538609c9822d0ab95f6c831071a68ccc9cb1e5180f4daf0a1ae16a33ee3ac7d4754d5f6dca657e44f5a1f9405e668ce848132bb62b1fab6f5cd9aa2d4357fd14e516f18f5c158373f21479aef4c290477141e6d1894901a1c88db870fc1fc005be219dce3f708868ba532c657cf98b8d154d569d6f3de7639cdf72cc43af330ddbac0b910a839416e38a8b305a7eb1b069d274c8c31868363615adb08bfe99a4353f34927785acdb8c1619e1d4f8574491a3e77a46e6c5b47bdd722adfcb00937be7f9ba8c53a8188d42795439a435e6f6a26288c9278981dcac442d480ee40397e2a808d4ae55139562111120bd69411ef301d1b6caf3a4793d143c57092d4944ca93e848f553a19145dc6c02a0b68a67ea83b66afd10988737a753ea8d1f49ca534d12590bf7c3fddd0d7d00baf0121c883a743fcd289dab3d2a8e5131bd987 + [1660951953700] [17233:5262446] CHIP: [DMG] buffer_ptr = 140355398986080 + [1660951953700] [17233:5262446] CHIP: [DMG] } + [1660951953700] [17233:5262446] CHIP: [DMG] + [1660951953700] [17233:5262446] CHIP: [DMG] DAC/PAI (491) = + [1660951953700] [17233:5262446] CHIP: [DMG] { -----BEGIN CERTIFICATE----- - MIIByzCCAXGgAwIBAgIIVq2CIq2UW2QwCgYIKoZIzj0EAwIwMDEYMBYGA1UEAwwP - TWF0dGVyIFRlc3QgUEFBMRQwEgYKKwYBBAGConwCAQwERkZGMTAgFw0yMjAyMDUw - MDAwMDBaGA85OTk5MTIzMTIzNTk1OVowPTElMCMGA1UEAwwcTWF0dGVyIERldiBQ - QUkgMHhGRkYxIG5vIFBJRDEUMBIGCisGAQQBgqJ8AgEMBEZGRjEwWTATBgcqhkjO - PQIBBggqhkjOPQMBBwNCAARBmpMVwhc+DIyHbQPM/JRIUmR/f+xeUIL0BZko7KiU - xZQVEwmsYx5MsDOSr2hLC6+35ls7gWLC9Sv5MbjneqqCo2YwZDASBgNVHRMBAf8E - CDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUY1QOR/ZLHDjROISk - YtFsGV2P+zwwHwYDVR0jBBgwFoAUav0idx9RH+y/FkGXZxDc3DGhcX4wCgYIKoZI - zj0EAwIDSAAwRQIhALLvJ/Sa6bUPuR7qyUxNC9u415KcbLiPrOUpNo0SBUwMAiBl - Xckrhr2QmIKmxiF3uCXX0F7b58Ivn+pxIg5+pwP4kQ== + MIIB5zCCAY6gAwIBAgIIac3xDenlTtEwCgYIKoZIzj0EAwIwPTElMCMGA1UEAwwc + TWF0dGVyIERldiBQQUkgMHhGRkYxIG5vIFBJRDEUMBIGCisGAQQBgqJ8AgEMBEZG + RjEwIBcNMjIwMjA1MDAwMDAwWhgPOTk5OTEyMzEyMzU5NTlaMFMxJTAjBgNVBAMM + HE1hdHRlciBEZXYgREFDIDB4RkZGMS8weDgwMDExFDASBgorBgEEAYKifAIBDARG + RkYxMRQwEgYKKwYBBAGConwCAgwEODAwMTBZMBMGByqGSM49AgEGCCqGSM49AwEH + A0IABEY6xpNCkQoOVYj8b/Vrtj5i7M7LFI99TrA+5VJgFBV2fRalxmP3k+SRIyYL + gpenzX58/HsxaznZjpDSk3dzjoKjYDBeMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/ + BAQDAgeAMB0GA1UdDgQWBBSI3eezADgpMs/3NMBGJIEPRBaKbzAfBgNVHSMEGDAW + gBRjVA5H9kscONE4hKRi0WwZXY/7PDAKBggqhkjOPQQDAgNHADBEAiABJ6J7S0Rh + DuL83E0reIVWNmC8D3bxchntagjfsrPBzQIga1ngr0Xz6yqFuRnTVzFSjGAoxBUj + lUXhCOTlTnCXE1M= -----END CERTIFICATE----- - [1659415377.220439][2666:2671] CHIP:DMG: } - [1659415377.220490][2666:2671] CHIP:DMG: - [1659415377.220553][2666:2671] CHIP:DMG: - [1659415377.220635][2666:2671] CHIP:DMG: Additional Fields = - [1659415377.220689][2666:2671] CHIP:DMG: { - [1659415377.220748][2666:2671] CHIP:DMG: peer_address = BLE - [1659415377.220801][2666:2671] CHIP:DMG: } - [1659415377.220850][2666:2671] CHIP:DMG: - [1659415377.220914][2666:2671] CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:199585160 on exchange 61632i - [1659415377.220977][2666:2671] CHIP:EM: Found matching exchange: 61632i, Delegate: 0xffffa803c898 - [1659415377.221071][2666:2671] CHIP:DMG: ICR moving to [ResponseRe] - [1659415377.221162][2666:2671] CHIP:DMG: InvokeResponseMessage = - [1659415377.221222][2666:2671] CHIP:DMG: { - [1659415377.221279][2666:2671] CHIP:DMG: suppressResponse = false, - [1659415377.221339][2666:2671] CHIP:DMG: InvokeResponseIBs = - [1659415377.221413][2666:2671] CHIP:DMG: [ - [1659415377.221473][2666:2671] CHIP:DMG: InvokeResponseIB = - [1659415377.221551][2666:2671] CHIP:DMG: { - [1659415377.221615][2666:2671] CHIP:DMG: CommandDataIB = - [1659415377.221691][2666:2671] CHIP:DMG: { - [1659415377.221764][2666:2671] CHIP:DMG: CommandPathIB = - [1659415377.221855][2666:2671] CHIP:DMG: { - [1659415377.221949][2666:2671] CHIP:DMG: EndpointId = 0x0, - [1659415377.222037][2666:2671] CHIP:DMG: ClusterId = 0x3e, - [1659415377.222125][2666:2671] CHIP:DMG: CommandId = 0x3, - [1659415377.222216][2666:2671] CHIP:DMG: }, - [1659415377.222303][2666:2671] CHIP:DMG: - [1659415377.222377][2666:2671] CHIP:DMG: CommandFields = - [1659415377.222476][2666:2671] CHIP:DMG: { - [1659415377.222570][2666:2671] CHIP:DMG: 0x0 = [ - [1659415377.222896][2666:2671] CHIP:DMG: 0x30, 0x82, 0x1, 0xcb, 0x30, 0x82, 0x1, 0x71, 0xa0, 0x3, 0x2, 0x1, 0x2, 0x2, 0x8, 0x56, 0xad, 0x82, 0x22, 0xad, 0x94, 0x5b, 0x64, 0x30, 0xa, 0x6, 0x8, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x4, 0x3, 0x2, 0x30, 0x30, 0x31, 0x18, 0x30, 0x16, 0x6, 0x3, 0x55, 0x4, 0x3, 0xc, 0xf, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x50, 0x41, 0x41, 0x31, 0x14, 0x30, 0x12, 0x6, 0xa, 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0xa2, 0x7c, 0x2, 0x1, 0xc, 0x4, 0x46, 0x46, 0x46, 0x31, 0x30, 0x20, 0x17, 0xd, 0x32, 0x32, 0x30, 0x32, 0x30, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x18, 0xf, 0x39, 0x39, 0x39, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x3d, 0x31, 0x25, 0x30, 0x23, 0x6, 0x3, 0x55, 0x4, 0x3, 0xc, 0x1c, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x44, 0x65, 0x76, 0x20, 0x50, 0x41, 0x49, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x31, 0x20, 0x6e, 0x6f, 0x20, 0x50, 0x49, 0x44, 0x31, 0x14, 0x30, 0x12, 0x6, 0xa, 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0xa2, 0x7c, 0x2, 0x1, 0xc, 0x4, 0x46, 0x46, 0x46, 0x31, 0x30, 0x59, 0x30, 0x13, 0x6, 0x7, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x2, 0x1, 0x6, 0x8, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x3, 0x1, 0x7, 0x3, 0x42, 0x0, 0x4, 0x41, 0x9a, 0x93, 0x15, 0xc2, 0x17, 0x3e, 0xc, 0x8c, 0x87, 0x6d, 0x3, 0xcc, 0xfc, 0x94, 0x48, 0x52, 0x64, 0x7f, 0x7f, 0xec, 0x5e, 0x50, 0x82, 0xf4, 0x5, 0x99, 0x28, 0xec, 0xa8, 0x94, 0xc5, 0x94, 0x15, 0x13, 0x9, 0xac, 0x63, 0x1e, 0x4c, 0xb0, 0x33, 0x92, 0xaf, 0x68, 0x4b, 0xb, 0xaf, 0xb7, 0xe6, 0x5b, 0x3b, 0x81, 0x62, 0xc2, 0xf5, 0x2b, 0xf9, 0x31, 0xb8, 0xe7, 0x7a, 0xaa, 0x82, 0xa3, 0x66, 0x30, 0x64, 0x30, 0x12, 0x6, 0x3, 0x55, 0x1d, 0x13, 0x1, 0x1, 0xff, 0x4, 0x8, 0x30, 0x6, 0x1, 0x1, 0xff, 0x2, 0x1, - [1659415377.223073][2666:2671] CHIP:DMG: ] (463 bytes) - [1659415377.223156][2666:2671] CHIP:DMG: }, - [1659415377.223230][2666:2671] CHIP:DMG: }, - [1659415377.223312][2666:2671] CHIP:DMG: - [1659415377.223374][2666:2671] CHIP:DMG: }, - [1659415377.223448][2666:2671] CHIP:DMG: - [1659415377.223505][2666:2671] CHIP:DMG: ], - [1659415377.223579][2666:2671] CHIP:DMG: - [1659415377.223637][2666:2671] CHIP:DMG: InteractionModelRevision = 1 - [1659415377.223694][2666:2671] CHIP:DMG: }, - [1659415377.223832][2666:2671] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0003 - [1659415377.223908][2666:2671] CHIP:CTL: Received certificate chain from the device - [1659415377.224018][2666:2671] CHIP:CTL: Successfully finished commissioning step "SendPAICertificateRequest" - + [1660951953700] [17233:5262446] CHIP: [DMG] } + disabled: true - 1. Save the PAI value from commissioning log of TH in the file as below - vi pai_6.pem + - label: "TH extracts the Authority Key Identifier from the PAI certificate" + verification: | + 1. Print the PAI value saved in the step above using "openssl x509 -in pai.pem -text" as shown below - 2. Give the below command to extract the Authority key ID - openssl x509 -in pai_6.pem -text + Get the Authority Key Identifier from the console. - Verify that below extracted authority key is not same as the SDK"s test PAA + Verify that below extracted authority key is not the same as the SDK"s test PAA 1. 78:5C:E7:05:B8:6B:8F:4E:6F:C7:93:AA:60:CB:43:EA:69:68:82:D5 2. 6A:FD:22:77:1F:51:1F:EC:BF:16:41:97:67:10:DC:DC:31:A1:71:7E - Below certificate has been extracted using the sample DUT, hence the Authority key ID is same as SDK"s test PAA + On the reference platform implementation, this authority key id matches. But in real DUT it should not match. - grl@grl-ThinkPad-L480:~/jul14_2ndcntrl/connectedhomeip$ openssl x509 -in pai_6.pem -text + Below certificate has been extracted using the sample DUT, hence the Authority key ID is the same as SDK"s test PAA + + Verify the below authority key identifier (AKID) is signed by a PAA. Extract each cert in the TH PAA trust store using the below command and look for AKID is present in those certificates. + + grl@grl-ThinkPad-L480:~/jul14_2ndcntrl/connectedhomeip$ openssl x509 -in pai.pem -text Certificate: Data: Version: 3 (0x2) @@ -278,163 +199,9 @@ tests: verification: | During commissioning we will get DAC certificate, see on TH(chip-tool) log: - [1659509320.714103][3165:3170] CHIP:CTL: Performing next commissioning step "SendDACCertificateRequest" - [1659509320.714155][3165:3170] CHIP:CTL: Sending request for DAC certificate - [1659509320.714225][3165:3170] CHIP:CTL: Sending Certificate Chain request to 0xffff74000b60 device - [1659509320.714397][3165:3170] CHIP:DMG: ICR moving to [AddingComm] - [1659509320.714470][3165:3170] CHIP:DMG: ICR moving to [AddedComma] - [1659509320.715027][3165:3170] CHIP:IN: Prepared secure message 0xffff74001d38 to 0xFFFFFFFB00000000 (0) of type 0x8 and protocolId (0, 1) on exchange 17089i with MessageCounter:86888459. - [1659509320.715128][3165:3170] CHIP:IN: Sending encrypted msg 0xffff74001d38 with MessageCounter:86888459 to 0xFFFFFFFB00000000 (0) at monotonic time: 0000000000ADAD48 msec - [1659509320.715804][3165:3170] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0f:2753%eth0]:5540 | 86888459 | [Interaction Model (1) / InvokeCommandRequest (0x08) / Session = 29587 / Exchange = 17089] - [1659509320.715898][3165:3170] CHIP:DMG: Header Flags = - [1659509320.715952][3165:3170] CHIP:DMG: { - [1659509320.716035][3165:3170] CHIP:DMG: Exchange (0x05) = - [1659509320.716089][3165:3170] CHIP:DMG: { - [1659509320.716158][3165:3170] CHIP:DMG: Initiator = true - [1659509320.716212][3165:3170] CHIP:DMG: NeedsAck = true - [1659509320.716264][3165:3170] CHIP:DMG: } - [1659509320.716353][3165:3170] CHIP:DMG: } - [1659509320.716405][3165:3170] CHIP:DMG: - [1659509320.716491][3165:3170] CHIP:DMG: Encrypted Payload (62 bytes) = - [1659509320.716544][3165:3170] CHIP:DMG: { - [1659509320.716616][3165:3170] CHIP:DMG: data = 009373000bd02d05c296dbc864194390f3d020eb61ee335c0d61263dd0d5f4849a5c6a601f73c80e6775d2b422e816cf8e3ae224d59c01f53783a657bd0d - [1659509320.716672][3165:3170] CHIP:DMG: buffer_ptr = 281472627949680 - [1659509320.716742][3165:3170] CHIP:DMG: } - [1659509320.716793][3165:3170] CHIP:DMG: - [1659509320.716965][3165:3170] CHIP:DMG: InvokeRequestMessage = - [1659509320.717029][3165:3170] CHIP:DMG: { - [1659509320.717084][3165:3170] CHIP:DMG: suppressResponse = false, - [1659509320.717148][3165:3170] CHIP:DMG: timedRequest = false, - [1659509320.717206][3165:3170] CHIP:DMG: InvokeRequests = - [1659509320.717276][3165:3170] CHIP:DMG: [ - [1659509320.717335][3165:3170] CHIP:DMG: CommandDataIB = - [1659509320.717399][3165:3170] CHIP:DMG: { - [1659509320.717461][3165:3170] CHIP:DMG: CommandPathIB = - [1659509320.717535][3165:3170] CHIP:DMG: { - [1659509320.717788][3165:3170] CHIP:DMG: EndpointId = 0x0, - [1659509320.717870][3165:3170] CHIP:DMG: ClusterId = 0x3e, - [1659509320.717947][3165:3170] CHIP:DMG: CommandId = 0x2, - [1659509320.718019][3165:3170] CHIP:DMG: }, - [1659509320.718116][3165:3170] CHIP:DMG: - [1659509320.718181][3165:3170] CHIP:DMG: CommandFields = - [1659509320.718273][3165:3170] CHIP:DMG: { - [1659509320.718436][3165:3170] CHIP:DMG: 0x0 = 1, - [1659509320.718521][3165:3170] CHIP:DMG: }, - [1659509320.718609][3165:3170] CHIP:DMG: }, - [1659509320.718706][3165:3170] CHIP:DMG: - [1659509320.718766][3165:3170] CHIP:DMG: ], - [1659509320.718855][3165:3170] CHIP:DMG: - [1659509320.718915][3165:3170] CHIP:DMG: InteractionModelRevision = 1 - [1659509320.718971][3165:3170] CHIP:DMG: }, - [1659509320.719024][3165:3170] CHIP:DMG: - [1659509320.719407][3165:3170] CHIP:DMG: ICR moving to [CommandSen] - [1659509320.719536][3165:3170] CHIP:DMG: ICR moving to [AwaitingDe] - [1659509320.719608][3165:3170] CHIP:EM: Sending Standalone Ack for MessageCounter:148943591 on exchange 17088i - [1659509320.720332][3165:3170] CHIP:IN: Prepared secure message 0xffff88e5c9e8 to 0xFFFFFFFB00000000 (0) of type 0x10 and protocolId (0, 0) on exchange 17088i with MessageCounter:86888460. - [1659509320.720493][3165:3170] CHIP:IN: Sending encrypted msg 0xffff88e5c9e8 with MessageCounter:86888460 to 0xFFFFFFFB00000000 (0) at monotonic time: 0000000000ADAD4E msec - [1659509320.721152][3165:3170] CHIP:DMG: >> to UDP:[fe80::e65f:1ff:fe0f:2753%eth0]:5540 | 86888460 | [Secure Channel (0) / Standalone Ack (0x10) / Session = 29587 / Exchange = 17088] - [1659509320.721242][3165:3170] CHIP:DMG: Header Flags = - [1659509320.721298][3165:3170] CHIP:DMG: { - [1659509320.721381][3165:3170] CHIP:DMG: Exchange (0x03) = - [1659509320.721434][3165:3170] CHIP:DMG: { - [1659509320.721505][3165:3170] CHIP:DMG: Initiator = true - [1659509320.721562][3165:3170] CHIP:DMG: AckMsg = 148943591 - [1659509320.721634][3165:3170] CHIP:DMG: } - [1659509320.721706][3165:3170] CHIP:DMG: } - [1659509320.721759][3165:3170] CHIP:DMG: - [1659509320.721846][3165:3170] CHIP:DMG: Encrypted Payload (34 bytes) = - [1659509320.721901][3165:3170] CHIP:DMG: { - [1659509320.721972][3165:3170] CHIP:DMG: data = 009373000cd02d05ff4214e467b1c7a3664b8d8c5628c4e291f833b9f2f35d953235 - [1659509320.722027][3165:3170] CHIP:DMG: buffer_ptr = 281472627939824 - [1659509320.722077][3165:3170] CHIP:DMG: } - [1659509320.722125][3165:3170] CHIP:DMG: - [1659509320.722485][3165:3170] CHIP:EM: Flushed pending ack for MessageCounter:148943591 on exchange 17088i - [1659509320.724260][3165:3170] CHIP:DMG: << from UDP:[fe80::e65f:1ff:fe0f:2753%eth0]:5540 | 148943592 | [Interaction Model (1) / InvokeCommandResponse (0x09) / Session = 49327 / Exchange = 17089] - [1659509320.724362][3165:3170] CHIP:DMG: Header Flags = - [1659509320.724417][3165:3170] CHIP:DMG: { - [1659509320.724503][3165:3170] CHIP:DMG: Exchange (0x06) = - [1659509320.724558][3165:3170] CHIP:DMG: { - [1659509320.724647][3165:3170] CHIP:DMG: AckMsg = 86888459 - [1659509320.724704][3165:3170] CHIP:DMG: NeedsAck = true - [1659509320.724756][3165:3170] CHIP:DMG: } - [1659509320.724827][3165:3170] CHIP:DMG: } - [1659509320.724879][3165:3170] CHIP:DMG: - [1659509320.724950][3165:3170] CHIP:DMG: Encrypted Payload (559 bytes) = - [1659509320.725003][3165:3170] CHIP:DMG: { - [1659509320.725056][3165:3170] CHIP:DMG: data = 00afc000e8b2e008b40e7ea031654ba52d0e71f9a877ec233377ef9eef00611412271b31992e30753df53f0bfac6b5f9a30217f67d03a17653c5ee991a0266f3ef286188e3f977d3dd94fbbb60323a74c2b685309d607af14c0b4c7214c7579cf43e9ed90d4256382e5d40bc46796e06fdb6b220bbc5e7b6fc812f2c5bc357fcbda79d6dcb464f42d04ab1708fdfb5ea8b90c3720257e9da78ba877b24b99d7f104c4ee199923c876d8c07903beab5f93a784f226d1e82f8d5f001f23457965c9ddbcc8661d00b7202a9932b1ae92ff36d80b8e5ac2d18d65e8a3957486ef86ca4f056218677958f9be17ab6c54d3dedb7e88a144ef607f692d3131276dbb2803e6e93dc5d330ef13b0e00289e6a9186e1f1c0e5b9615ace2c1d544f4b6bc58f700b47a11fc2278977b2a1595c96532daefe44db899e3f75f473ffbf4ac1e93ba76033dfa562beedf4b9a5fe9b985e6a0227efdcf5ced1b966bd78addb1ad5950c6378dc149a6372888683a8539a4d59958c7460b1968b0d8dcfa2d3660dc07c4e0e44095ef14c4cdd249727caad086e8630f9df296d8fa426f01f58f532ac1a91cb1da874055711edd4f13c722a0e66f850d0f455c09fbc2c049852ec936545b2bf2798f9c614e4488707a1f38fee8c08fe3c886fd89d9e3578fad68077133c7e086d5ba7df2a7323d10f03602d46c1e172e993fd3b6d5d468b7da8dc315711d53ded3ab7f38f7517f23394c7c9438ce5726449cca510956add995f76140fe3bd0a63ea024058898635373e68e9e3 - [1659509320.725163][3165:3170] CHIP:DMG: buffer_ptr = 281472627931376 - [1659509320.725214][3165:3170] CHIP:DMG: } - [1659509320.725263][3165:3170] CHIP:DMG: - [1659509320.725501][3165:3170] CHIP:DMG: DAC/PAI (491) = - [1659509320.725616][3165:3170] CHIP:DMG: { - -----BEGIN CERTIFICATE----- - MIIB5zCCAY6gAwIBAgIIac3xDenlTtEwCgYIKoZIzj0EAwIwPTElMCMGA1UEAwwc - TWF0dGVyIERldiBQQUkgMHhGRkYxIG5vIFBJRDEUMBIGCisGAQQBgqJ8AgEMBEZG - RjEwIBcNMjIwMjA1MDAwMDAwWhgPOTk5OTEyMzEyMzU5NTlaMFMxJTAjBgNVBAMM - HE1hdHRlciBEZXYgREFDIDB4RkZGMS8weDgwMDExFDASBgorBgEEAYKifAIBDARG - RkYxMRQwEgYKKwYBBAGConwCAgwEODAwMTBZMBMGByqGSM49AgEGCCqGSM49AwEH - A0IABEY6xpNCkQoOVYj8b/Vrtj5i7M7LFI99TrA+5VJgFBV2fRalxmP3k+SRIyYL - gpenzX58/HsxaznZjpDSk3dzjoKjYDBeMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/ - BAQDAgeAMB0GA1UdDgQWBBSI3eezADgpMs/3NMBGJIEPRBaKbzAfBgNVHSMEGDAW - gBRjVA5H9kscONE4hKRi0WwZXY/7PDAKBggqhkjOPQQDAgNHADBEAiABJ6J7S0Rh - DuL83E0reIVWNmC8D3bxchntagjfsrPBzQIga1ngr0Xz6yqFuRnTVzFSjGAoxBUj - lUXhCOTlTnCXE1M= - -----END CERTIFICATE----- - [1659509320.725847][3165:3170] CHIP:DMG: } - [1659509320.725898][3165:3170] CHIP:DMG: - [1659509320.725961][3165:3170] CHIP:DMG: - [1659509320.726043][3165:3170] CHIP:DMG: Additional Fields = - [1659509320.726099][3165:3170] CHIP:DMG: { - [1659509320.726158][3165:3170] CHIP:DMG: peer_address = UDP:[fe80::e65f:1ff:fe0f:2753%eth0]:5540 - [1659509320.726215][3165:3170] CHIP:DMG: } - [1659509320.726265][3165:3170] CHIP:DMG: - [1659509320.726334][3165:3170] CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:148943592 on exchange 17089i - [1659509320.726446][3165:3170] CHIP:EM: Found matching exchange: 17089i, Delegate: 0xffff74009c78 - [1659509320.726534][3165:3170] CHIP:EM: Rxd Ack; Removing MessageCounter:86888459 from Retrans Table on exchange 17089i - [1659509320.726594][3165:3170] CHIP:EM: Removed CHIP MessageCounter:86888459 from RetransTable on exchange 17089i - [1659509320.726669][3165:3170] CHIP:DMG: ICR moving to [ResponseRe] - [1659509320.726761][3165:3170] CHIP:DMG: InvokeResponseMessage = - [1659509320.726818][3165:3170] CHIP:DMG: { - [1659509320.726876][3165:3170] CHIP:DMG: suppressResponse = false, - [1659509320.726934][3165:3170] CHIP:DMG: InvokeResponseIBs = - [1659509320.727010][3165:3170] CHIP:DMG: [ - [1659509320.727068][3165:3170] CHIP:DMG: InvokeResponseIB = - [1659509320.727154][3165:3170] CHIP:DMG: { - [1659509320.727217][3165:3170] CHIP:DMG: CommandDataIB = - [1659509320.727291][3165:3170] CHIP:DMG: { - [1659509320.727362][3165:3170] CHIP:DMG: CommandPathIB = - [1659509320.727442][3165:3170] CHIP:DMG: { - [1659509320.727523][3165:3170] CHIP:DMG: EndpointId = 0x0, - [1659509320.727607][3165:3170] CHIP:DMG: ClusterId = 0x3e, - [1659509320.727698][3165:3170] CHIP:DMG: CommandId = 0x3, - [1659509320.727777][3165:3170] CHIP:DMG: }, - [1659509320.727857][3165:3170] CHIP:DMG: - [1659509320.727928][3165:3170] CHIP:DMG: CommandFields = - [1659509320.728004][3165:3170] CHIP:DMG: { - [1659509320.728081][3165:3170] CHIP:DMG: 0x0 = [ - [1659509320.728404][3165:3170] CHIP:DMG: 0x30, 0x82, 0x1, 0xe7, 0x30, 0x82, 0x1, 0x8e, 0xa0, 0x3, 0x2, 0x1, 0x2, 0x2, 0x8, 0x69, 0xcd, 0xf1, 0xd, 0xe9, 0xe5, 0x4e, 0xd1, 0x30, 0xa, 0x6, 0x8, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x4, 0x3, 0x2, 0x30, 0x3d, 0x31, 0x25, 0x30, 0x23, 0x6, 0x3, 0x55, 0x4, 0x3, 0xc, 0x1c, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x44, 0x65, 0x76, 0x20, 0x50, 0x41, 0x49, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x31, 0x20, 0x6e, 0x6f, 0x20, 0x50, 0x49, 0x44, 0x31, 0x14, 0x30, 0x12, 0x6, 0xa, 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0xa2, 0x7c, 0x2, 0x1, 0xc, 0x4, 0x46, 0x46, 0x46, 0x31, 0x30, 0x20, 0x17, 0xd, 0x32, 0x32, 0x30, 0x32, 0x30, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x18, 0xf, 0x39, 0x39, 0x39, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x53, 0x31, 0x25, 0x30, 0x23, 0x6, 0x3, 0x55, 0x4, 0x3, 0xc, 0x1c, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x44, 0x65, 0x76, 0x20, 0x44, 0x41, 0x43, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x31, 0x2f, 0x30, 0x78, 0x38, 0x30, 0x30, 0x31, 0x31, 0x14, 0x30, 0x12, 0x6, 0xa, 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0xa2, 0x7c, 0x2, 0x1, 0xc, 0x4, 0x46, 0x46, 0x46, 0x31, 0x31, 0x14, 0x30, 0x12, 0x6, 0xa, 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0xa2, 0x7c, 0x2, 0x2, 0xc, 0x4, 0x38, 0x30, 0x30, 0x31, 0x30, 0x59, 0x30, 0x13, 0x6, 0x7, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x2, 0x1, 0x6, 0x8, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x3, 0x1, 0x7, 0x3, 0x42, 0x0, 0x4, 0x46, 0x3a, 0xc6, 0x93, 0x42, 0x91, 0xa, 0xe, 0x55, 0x88, 0xfc, 0x6f, 0xf5, 0x6b, 0xb6, 0x3e, 0x62, 0xec, 0xce, 0xcb, 0x14, 0x8f, 0x7d, 0x4e, 0xb0, 0x3e, 0xe5, 0x52, 0x60, 0x14, 0x15, 0x76, 0x7d, 0x16, 0xa5, 0xc6, 0x63, 0xf7, 0x93, 0xe4, 0x91, 0x23, 0x26, 0xb, 0x82, 0x97, 0xa7, 0xcd, 0x7e, 0x7c, 0xfc, 0x - [1659509320.728579][3165:3170] CHIP:DMG: ] (491 bytes) - [1659509320.728664][3165:3170] CHIP:DMG: }, - [1659509320.728738][3165:3170] CHIP:DMG: }, - [1659509320.728818][3165:3170] CHIP:DMG: - [1659509320.728879][3165:3170] CHIP:DMG: }, - [1659509320.728952][3165:3170] CHIP:DMG: - [1659509320.729010][3165:3170] CHIP:DMG: ], - [1659509320.729082][3165:3170] CHIP:DMG: - [1659509320.729140][3165:3170] CHIP:DMG: InteractionModelRevision = 1 - [1659509320.729197][3165:3170] CHIP:DMG: }, - [1659509320.729335][3165:3170] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0003 - [1659509320.729409][3165:3170] CHIP:CTL: Received certificate chain from the device - [1659509320.729476][3165:3170] CHIP:CTL: Successfully finished commissioning step "SendDACCertificateRequest" - - - - - - "1. Save the DAC value from commissioning log of TH in the file as below - vi dac.pem + 1. From the dac.pem file saved above step, print the contents on the console using "openssl x509 -in dac.pem -text" as shown below. - 2. Give the below command to extract the Authority key ID + 2. extract the Authority key ID and save the public key as pk1 openssl x509 -in dac.pem -text Below certificate has been extracted using the sample DUT, hence the Authority key ID is same as SDK"s test PAA @@ -656,6 +423,7 @@ tests: [1659415377.223908][2666:2671] CHIP:CTL: Received certificate chain from the device [1659415377.224018][2666:2671] CHIP:CTL: Successfully finished commissioning step "SendPAICertificateRequest" + To extract public key follow the below procedure and save the public key as pk2, make sure the pk2 doesn"t match pk1 in step 5 "1. Save the PAI value from commissioning log of TH in the file as below vi pai_6.pem @@ -663,7 +431,11 @@ tests: 2. Give the below command to extract the Authority key ID openssl x509 -in pai_6.pem -text - Below certificate has been extracted using the sample DUT, hence the Authority key ID is same as SDK"s test PAA + Below certificate has been extracted using the sample DUT, hence the Authority key ID is same as in SDK"s test PAA certs + + 3. Extract the public key Public-Key: (256 bit) from the below cert + + 4. Verify that pk_1 does not match with the pk_2 grl@grl-ThinkPad-L480:~/jul14_2ndcntrl/connectedhomeip$ openssl x509 -in pai_6.pem -text Certificate: @@ -715,10 +487,3 @@ tests: i+oDPOUDAiAlVJQ75X1T1sR199I+v8/CA2zSm6Y5PsfvrYcUq3GCGQ== -----END CERTIFICATE----- disabled: true - - - label: - "Repeat Step 1 to 4 with DUT2, saving the PAI, DAC and public key as - pk_2" - verification: | - verification step to be updated. - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml index 78dfc1daa202ef..a71ae7c5d1d491 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1.3 - QR code/ Manual Pairing Code is printed on the device or in additional provided materials (ex: manual) + disabled: true + - label: "Scan the DUTs QR code using the TH." verification: | 1. Run DUT. Example for DUT=all-clusters-app @@ -47,6 +52,9 @@ tests: 2. Parse onboarding payload using TH=chip-tool $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + + Verify in TH as commissioner side: + [1657214153060] [29000:16610528] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1657214153060] [29000:16610528] CHIP: [SPL] Version: 0 [1657214153060] [29000:16610528] CHIP: [SPL] VendorID: 65521 @@ -57,25 +65,17 @@ tests: [1657214153060] [29000:16610528] CHIP: [SPL] Passcode: 20202021 disabled: true - - label: - "Verify that the TH presents the user with a pairing hint in the - CommissioningModeInitialStepsHint field of the DCL. Verify that the - CommissioningCustomFlow field is set to a value = 0" - verification: | - 1. Verify CommissioningCustomFlow=0 - 2. Verify CommissioningModeInitialStepsHint contains a valid, non-zero integer = 1 for Standard Commissioning flow - disabled: true - - - label: - "If CommissioningCustomFlow field in Step 2 = 0 (Standard - Commissioning Flow), reboot the DUT device" + - label: "Reboot the DUT device." verification: | 1. Verify DUT is advertising in commissioning mode. On DUT, verify through commissioning + Verify in TH as commissioner side: + $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 ... [1657214364908] [29006:16612760] CHIP: [CTL] Starting commissioning discovery over DNS-SD - [1657214364908] [29006:16612760] CHIP: [DL] Browsing for: _matterc._udp,_L3840 [1657214365080] [29006:16612761] CHIP: [DL] Mdns: OnBrowseAdd name: E5EFE5FB9DC494B9, type: _matterc._udp., domain: local., interface: 7 [1657214365080] [29006:16612761] CHIP: [DL] Resolve type=_matterc._udp name=E5EFE5FB9DC494B9 interface=7 + [1657214364908] [29006:16612760] CHIP: [DL] Browsing for: _matterc._udp,_L3840 + [1657214365080] [29006:16612761] CHIP: [DL] Mdns: OnBrowseAdd name: E5EFE5FB9DC494B9, type: _matterc._udp., domain: local., interface: 7 [1657214365080] [29006:16612761] CHIP: [DL] Resolve type=_matterc._udp name=E5EFE5FB9DC494B9 interface=7 [1657214365080] [29006:16612761] CHIP: [DL] Mdns : OnNewInterface hostname:DCA6328D2B9F0000.local. fullname:E5EFE5FB9DC494B9._matterc._udp.local. interface: 7 [1657214365082] [29006:16612761] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:fd54:23a1:c6de:4637:4c4:ee82:2a0f:b5e2 [1657214365082] [29006:16612761] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:fe80::1e81:3e0:3865:2d29 [1657214365082] [29006:16612761] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.10 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml index ad93647feb9eb4..f0422326fb99a3 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml @@ -28,11 +28,17 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1.3 - QR code/ Manual Pairing Code is printed on the device or in additional provided materials (ex: manual) + disabled: true + - label: "Power on the DUT device." verification: | 1. Verify DUT is NOT advertising in commissioning mode. On DUT, the DUT should not show up $ ./chip-tool discover commissionables + TH Commissioner should not discover the DUT here disabled: true - label: "Scan the DUTs QR code from the previous step using the TH." @@ -42,6 +48,8 @@ tests: 2. Parse onboarding payload using TH=chip-tool $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + + Verify in TH as commissioner side: [1651193251086] [15494:447566] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1651193251087] [15494:447566] CHIP: [SPL] CommissioningFlow: 1 [1651193251087] [15494:447566] CHIP: [SPL] VendorID: 65521 @@ -53,23 +61,16 @@ tests: disabled: true - label: - "Verify that the TH presents the user with a pairing hint in the - CommissioningModeInitialStepsHint field of the DCL. Verify that the - CommissioningCustomFlow field is set to a value = 1" - verification: | - 1. Verify CommissioningCustomFlow=1 - 2. Verify CommissioningModeInitialStepsHint contains a valid, non-zero integer - disabled: true - - - label: - "Follow any steps from the resources provided by the pairing hint for - putting the DUT Commissionee into commissioning mode" + "Follow any DUT-specific steps for putting the DUT Commissionee into + commissioning mode" verification: | 1. Follow vendor-specific steps from the pairing hint to put DUT into commissioning mode 2. Verify DUT is advertising in commissioning mode. On DUT, $ ./chip-tool discover commissionables + Verify in TH as commissioner side: + [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32 [1651192893436] [15304:442604] CHIP: [DIS] Vendor ID: 65521 [1651192893436] [15304:442604] CHIP: [DIS] Product ID: 32769 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml index 5635299f36e5ac..37dea4cf954852 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml @@ -28,11 +28,17 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1.3 - QR code/ Manual Pairing Code is printed on the device or in additional provided materials (ex: manual) + disabled: true + - label: "Power on the DUT device." verification: | 1. Verify DUT is NOT advertising in commissioning mode. On DUT, the DUT should not show up $ ./chip-tool discover commissionables + TH Commissioner should not discover the DUT here disabled: true - label: "Scan the DUTs QR code from the previous step using the TH." @@ -42,6 +48,8 @@ tests: 2. Parse onboarding payload using TH=chip-tool $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + Verify in TH as commissioner side: + [1651193251086] [15494:447566] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1651193251087] [15494:447566] CHIP: [SPL] CommissioningFlow: 2 [1651193251087] [15494:447566] CHIP: [SPL] VendorID: 65521 @@ -53,24 +61,17 @@ tests: disabled: true - label: - "Verify that the TH presents User with a URL in the - CommissioningCustomFlowUrl field of the DCL. Verify that the - CommissioningCustomFlow field is set to a value = 2" + "Follow any DUT-specific steps, guided by a service provided by the + DUTs manufacturer for initial device setup, then place the DUT + Commissionee into commissioning mode." verification: | - 1. Verify CommissioningCustomFlow=2 - 2. Verify CommissioningModeInitialStepsHint has bit 0 (Power Cycle) set to 0 and bit 1 (Device Manufacturer URL) set to 1 - 3. Verify CommissioningModeInitialStepsHint contains a valid, non-zero integer - disabled: true - - - label: - "Follow any steps from the URL provided by the pairing hint in the DCL - for putting the DUT Commissionee into commissioning mode" - verification: | - 1. Follow vendor-specific steps from the pairing hint to put DUT into commissioning mode + 1. Follow DUT vendor-specific steps to put DUT into commissioning mode 2. Verify DUT is advertising in commissioning mode. On DUT, $ ./chip-tool discover commissionables + Verify in TH as commissioner side: + [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32 [1651192893436] [15304:442604] CHIP: [DIS] Vendor ID: 65521 [1651192893436] [15304:442604] CHIP: [DIS] Product ID: 32769 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml index 7733f987ba9128..35e8f4f6d594e2 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml @@ -26,6 +26,11 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1 - Onboarding payload is printed on the device or in additional provided materials (ex: manual) through a QR Code, a manually entered code or as content in an NFC tag. + disabled: true + - label: "Using the TH Onboarding payload reader, scan or read the Onboarding payload from DUT1" @@ -33,6 +38,8 @@ tests: 1. Parse payload for DUT1 $ ./chip-tool payload parse-setup-payload MT:-24J0AFN00KA0648G00 + Verify in TH as commissioner side: + [1651194471211] [16050:465158] CHIP: [SPL] Parsing base38Representation: MT:-24J0AFN00KA0648G00 [1651194471211] [16050:465158] CHIP: [SPL] CommissioningFlow: 0 [1651194471211] [16050:465158] CHIP: [SPL] VendorID: 65521 @@ -58,6 +65,8 @@ tests: 1. Parse payload for DUT2 $ ./chip-tool payload parse-setup-payload MT:-24J0IRV01WCCN68G00 + Verify in TH as commissioner side: + [1651194577916] [16053:466154] CHIP: [SPL] Parsing base38Representation: MT:-24J0IRV01WCCN68G00 [1651194577916] [16053:466154] CHIP: [SPL] CommissioningFlow: 0 [1651194577916] [16053:466154] CHIP: [SPL] VendorID: 65521 diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml index f2b6606fc1ce17..ef616a60cd51e5 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml @@ -27,11 +27,23 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1.7 - NFC Spec Requirements: NFC tags SHALL use the NFC Data Exchange Format (NDEF) as defined by NFC ForumTM in [NDEF 1.0 NFCForum-TS-NDEF 1.0] + + An NDEF message is defined as a group of individual NDEF records as defined by NFC ForumTM in NFC Record Type Definition (RTD) RTD 1.0 [NFCForum-TS-RTD 1.0] + + Onboarding Payload for NFC tags SHALL use NDEF URI Record Type Definition as defined by NFC ForumTM in URI Record Type Definition RTD-URI 1.0 [NFCForum-TS-RTD URI 1.0]. The URI for defined in section 3.3 Format + disabled: true + - label: "Keep the DUT in packaging and bring in TH NFC scanner close to the DUT packaging." verification: | - Vendor specific field verification + 1. Using an NFC Scanner, physically bring the scanner close to the DUT in it"s packaging. + 2. NFC Scanner should not be able to read the Onboarding Payload from the DUT"s NFC tag. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: @@ -39,7 +51,10 @@ tests: not put the DUT in pairing mode. Bring in TH NFC scanner close to the DUTs NFC tag" verification: | - Vendor specific field verification + 1. Using an NFC Scanner, physically bring the scanner close to the DUT that is out of it"s packaging. + 2. NFC Scanner should not be able to read the Onboarding Payload from the DUT"s NFC tag. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: @@ -47,13 +62,19 @@ tests: scanner close to the DUTs NFC tag" PICS: MCORE.DD.PHYSICAL_TAMPERING verification: | - Vendor specific field verification + 1. Power on the DUT. + 2. Using an NFC Scanner, physically bring the scanner close to the DUT. + 3. NFC Scanner should not be able to read the Onboarding Payload from the DUT"s NFC tag. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "DUT must have an explicit trigger of the the NFC pairing mode" PICS: MCORE.DD.PHYSICAL_TAMPERING verification: | - Vendor specific field verification + 1. Manually verify that the DUT has an explicit trigger (a physical action that enables the NFC pairing flow). + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: @@ -61,40 +82,68 @@ tests: close to NFC tag" PICS: MCORE.DD.PHYSICAL_TAMPERING verification: | - Vendor specific field verification + 1. Power on the DUT. + 2. Put the DUT into pairing mode. + 2. Using an NFC Scanner, physically bring the scanner close to the DUT + 3. NFC Scanner should be able to read the Onboarding Payload from the DUT"s NFC tag. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "Power on DUT. Bring in NFC scanner close to NFC tag" PICS: MCORE.DD.PHYSICAL_TAMPERING verification: | - Vendor specific field verification + 1. Power on the DUT. + 2. Using an NFC Scanner, physically bring the scanner close to the DUT. + 3. NFC Scanner should be able to read the Onboarding Payload from the DUT"s NFC tag. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "Wait for the pairing mode to expire on device" verification: | - Vendor specific field verification + 1. After pairing mode expires on the DUT, verify that the NFC Scanner cannot read advertisements from the DUT. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "For Read only Tags, try to write using NFC tool a payload to DUT" verification: | - Vendor specific field verification + 1. Using an NFC-programmer tool, attempt to write a payload to the DUT"s NFC tag + 2. DUT should reject the attempt and the NFC tag should not have been written to. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "For Programmable Tag, NFC tag must be read only OTA. Try to write a payload to DUT using NFC tool" verification: | - Vendor specific field verification + 1. Using an NFC-programmer tool, attempt to write a payload to the DUT"s NFC tag + 2. DUT should reject the attempt and the NFC tag should not have been written to. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "Optional For Programmable Tag, NFC tag may be reconfigured using wired means" verification: | - Vendor specific field verification + 1. This is vendor-specific, attempt to write a payload to the DUT"s NFC tag by way of a physical wired connection. + 2. DUT"s NFC tag should have been written to. + + Note: chip-tool does not support physically scanning an NFC tag disabled: true - label: "Using TH NFC scanner - read NFC tag Reader type" verification: | - Vendor specific field verification + 1. Using an NFC Scanner, physically bring the scanner close to the DUT + 2. DUT"s NFC tag should have a Reader type equal to 2 or greater + + Note: chip-tool does not support physically scanning an NFC tag + disabled: true + + - label: "" + verification: | + verification step to be updated. disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml index b1de25771fb85c..721c334cf07c80 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml @@ -25,12 +25,26 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + Final label of DUT is ready to be scanned + disabled: true + - label: "Scan the DUTs QR code using the TH QR code reader" verification: | - Vendor specific field testcase + 1. Scan the QR code with a QR Code scanning device. + 2. Vendor specific field testcase that should be manually verified using the requirements in the Expected Outcome. disabled: true - label: "Verify QR code version" verification: | - Vendor specific field verification + 1. Manually verify the QR code version by referring to section 5.1.3.2 "QR Code Format" of the spec document to ensure it follows the ISO/IEC 18004:2015 (https://www.iso.org/standard/62021.html) specifications with accurate: + - Module size + - ECC Level + - Alphanumeric capacity + - Total available payload, excluding prefix (bits) + - Available payload for TLV data (bits) + 2. Vendor specific field test case that should be manually verified using the requirements in the Expected Outcome. + + Note: chip-tool is not used to verify this test step disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml index 6bfb9187288b34..9f2689fe3b10bb 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml @@ -25,7 +25,12 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.1.4.2 - Manual Pairing Code is printed on the device or in additional provided materials (ex: manual)" + disabled: true + - label: "Verify using instruments" verification: | - Vendor specific field testcase + Vendor specific field testcase that should be manually verified using the requirements in the Expected Outcome. disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml index 26a0b7563571df..7f8cc8a2de63d2 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml @@ -27,11 +27,41 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual). Device also has additional TLV data with a non-zero length appended to the end of the QR code. + + An example onboarding QR code could be "MT:-24J029Q00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes: + + - 3-bit Version String=000 + + - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier") + + - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier") + + - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2) + + - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork) + + - 12-bit Discriminator=0xF00 + + - 27-bit Passcode=20202021 + + - 4-bit Padding=0000 + + - TLV Data=0x152C000A3132333435363738393018 included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data") + disabled: true + - label: "Scan the TH Devices QR code using DUT" PICS: MCORE.DD.SCAN_QR_CODE verification: | 1. Get the QR code from the TH - ubuntu@matter-7:~/Apr18_dut/connectedhomeip/examples/all-clusters-app/linux/out/all-clusters-app$ sudo ./chip-all-clusters-app --wifi + $ sudo ./chip-all-clusters-app --wifi [13293:13293] CHIP:DL: Device Configuration: [1653306603.740569][13293:13293] CHIP:DL: Serial Number: TEST_SN @@ -67,9 +97,9 @@ tests: 2. Parse the DUT"s QR Code using the TH commissioner: chip-tool - ubuntu@matter-7:~/Apr18_cntrl/connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool payload parse-setup-payload MT:-24J048N01KA0648G00 + $ ./chip-tool payload parse-setup-payload MT:-24J048N01KA0648G00 - Verify in DUT as client side: + Verify in DUT as commissioner side: [1650266365.939678][10146:10146] CHIP:SPL: CommissioningFlow: 2 [1650266365.939704][10146:10146] CHIP:SPL: VendorID: 65521 [1650266365.939724][10146:10146] CHIP:SPL: Version: 0 @@ -84,8 +114,8 @@ tests: the Matter network." verification: | ./chip-tool pairing code 1 MT:-24J042C00KA0648G00 - - Verify in DUT as client side: + No applicable TH logs. + Verify in DUT as commissioner side: CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 CHIP:CTL: Received CommissioningComplete response, errorCode=0 CHIP:CTL: Successfully finished commissioning step "SendComplete" @@ -102,14 +132,16 @@ tests: MT:-24J029Q00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Get QR code from TH as server side: + 1. Launch the TH commissionee app and get QR code from TH side + Verify in TH as commissionee side: + $ ./out/all-clusters-app/chip-all-clusters-app ... [1657211128.302755][365927:365927] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] [1657211128.302783][365927:365927] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: [1657211128.302804][365927:365927] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 - 2. Build TLV Data into TH"s QR code + 2. Build TLV Data into TH"s QR code using chip-tool"s generate-qrcode command $ ./chip-tool payload generate-qrcode --existing-payload MT:-24J029Q00KA0648G00 --tlvBytes hex:152C000A3132333435363738393018 [1657211213125] [28612:16578643] CHIP: [TOO] QR Code: MT:-24J029Q00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40 disabled: true @@ -120,7 +152,7 @@ tests: verification: | ./chip-tool pairing code 1 MT:-24J0AFN00KA064IJ3P0IXZB0DK5N1K8SQ1RYCU1-A40 - Verify in DUT as client side: + Verify in DUT as commissioner side: [1657210956708] [28601:16575811] CHIP: [CTL] Received CommissioningComplete response, errorCode=0 [1657210956708] [28601:16575811] CHIP: [CTL] Successfully finished commissioning step "SendComplete" [1657210956708] [28601:16575811] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" @@ -139,9 +171,13 @@ tests: tag 0x82, length 0x03e8)" PICS: MCORE.DD.SCAN_QR_CODE verification: | + No applicable TH logs. + + 1. Launch the TH commissionee app and get QR code from TH side $ ./out/all-clusters-app/chip-all-clusters-app - 1. To generate the QR code containing the 1000-byte TLV data, use the following command and piece together the 2 log lines of output. NOTE: The finished QR code is in the Test step already. + 2. Build TLV Data into TH"s QR code using chip-tool"s generate-qrcode command. To generate the QR code containing the 1000-byte TLV data, use the following command and piece together the 2 log lines of output. + NOTE: The finished QR code is in the verification step already. ./chip-tool payload generate-qrcode --existing-payload MT:-24J0AFN00KA0648G00 --tlvBytes hex:152d82e8033132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393018 [1659491902.799305][3965:3965] CHIP:TOO: QR Code: MT:-24J0AFN00KA064IJ3P0JFQB7TZZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1Z @@ -155,10 +191,20 @@ tests: verification: | ./chip-tool pairing code 1 MT:-24J0AFN00KA064IJ3P0JFQB7TZZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T1VFSK1S3DO1ZTZR1UNMJ1DK5N1K8SQ1RYCU1--ZL15PKP1CD5T11UXS0 - Verify in TH as server side: + Verify in TH as commissionee side: [1659491845.473705][3953:3953] CHIP:SVR: Commissioning completed successfully - Verify on the DUT as client side: + Verify in DUT as commissioner side: [1659491845308] [14021:5374393] CHIP: [TOO] Device commissioning completed with success disabled: true + + - label: "" + verification: | + verification step to be updated. + disabled: true + + - label: "" + verification: | + verification step to be updated. + disabled: true 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 be9a358ee1bb8f..389197ac1e2d81 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 @@ -25,12 +25,18 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - The DUT is switched on and the DUT is transport-connected (BLE, Wi-Fi or Ethernet) + disabled: true + - label: "If TH knows the DUTs Discovery Capability Bitmask, it starts the commissioning process in any order of priority on all of the networking technologies that are supported by both the TH and the DUT" verification: | TH selects the DUT"s capability bitmask and start the commissiong process accordingly + No applicable TH or DUT logs. disabled: true - label: @@ -42,6 +48,7 @@ tests: verification: | If (PICS_CHIP_DEV) BLE discovery tool should discover the DUT else it should not If !(PICS_CHIP_DEV) instruct DUT to start Advertising and scan again for commissionale devices using the BLE discovery tool + No applicable TH or DUT logs. 1. Discover commissionables over BLE using a BLE discovery tool of choice. Try NRF Connect app (https://www.nordicsemi.com/Products/Development-tools/nrf-connect-for-desktop) @@ -52,12 +59,16 @@ tests: - label: "TH does not respond to DUT and DUT keeps sending ADVs" PICS: MCORE.COM.BLE verification: | + Verify in DUT as commissionee side: + [5855][P][DIS]Advertise commission parameter vendorID=65521 productID=32773 discriminator=3840/15 disabled: true - label: "TH does not respond to DUT and DUT keeps sending ADVs" PICS: MCORE.COM.BLE verification: | + No applicable TH or DUT logs. + This step can be verified using a BLE discovery tool of choice. Try NRF Connect app (https://www.nordicsemi.com/Products/Development-tools/nrf-connect-for-desktop) OR @@ -67,9 +78,10 @@ tests: - label: "TH does not respond to DUT and DUT keeps sending ADVs" PICS: MCORE.COM.BLE verification: | - This step can be verified using BLE discovery tool of choice (Try NRF Connect OR HCIDump) + This BLE advertisements can be verified using BLE discovery tool of choice (Try NRF Connect OR HCIDump) ->For T0 and 30s we have to get advertisement range between 20ms to 60ms ->For 30s and 15mins we have to get advertisement range between 150ms to 1200ms + Verify in DUT as commissionee side: I: 3242 [DL]CHIPoBLE advertising started I: 3279 [DL]NFC Tag emulation started @@ -86,6 +98,7 @@ tests: After 900s (that is 15min) advertisement stops + Verify in DUT as commissionee side: D: 903154 [DIS]Scheduling extended discovery timeout in 900s E: 903160 [DIS]Failed to finalize service update: Error CHIP:0x0000001C @@ -97,6 +110,8 @@ tests: - label: "TH does not respond to DUT. User power cycles the DUT" PICS: MCORE.COM.BLE verification: | + 1. Reboot the DUT commissionee + sudo reboot disabled: true @@ -106,6 +121,7 @@ tests: PICS: MCORE.COM.BLE verification: | Check timestamp, ADV stop after 15 mins + Verify in DUT as commissionee side: D: 903154 [DIS]Scheduling extended discovery timeout in 900s E: 903160 [DIS]Failed to finalize service update: Error CHIP:0x0000001C @@ -140,6 +156,7 @@ tests: mandatory Commissionable Node Discovery service records over DNS-SD." verification: | $ ./chip-tool discover commissionables + Verify in TH as commissioner side: Example output using all-clusters-app"s advertisements: [1651256405894] [18453:593886] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 @@ -166,8 +183,9 @@ tests: MCORE.DD.TXT_KEY_RI && MCORE.DD.TXT_KEY_PH && MCORE.DD.TXT_KEY_PI verification: | $ ./chip-tool discover commissionables + Verify in TH as commissioner side: - Example output using all-clusters-app"s advertisements: + Example output using all-clusters-app"s advertisements found on the TH commissioner: [1657218902314] [29617:16663220] CHIP: [DL] Browsing for: _matterc._udp [1657218902488] [29617:16663220] CHIP: [DL] Mdns: OnBrowseAdd name: 5B4185091B6CAD28, type: _matterc._udp., domain: local., interface: 7 [1657218902488] [29617:16663220] CHIP: [DL] Resolve type=_matterc._udp name=5B4185091B6CAD28 interface=7 [1657218902489] [29617:16663220] CHIP: [DL] Mdns : OnNewInterface hostname:DCA6328D2B9F0000.local. fullname:5B4185091B6CAD28._matterc._udp.local. interface: 7 [1657218902490] [29617:16663220] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:fd54:23a1:c6de:4637:4c4:ee82:2a0f:b5e2 @@ -217,8 +235,9 @@ tests: Commissionable Node Discovery service record over DNS-SD." verification: | $ ./chip-tool discover commissionables + Verify in TH as commissioner side: - Example output using all-clusters-app"s advertisements: + Example output using all-clusters-app"s advertisements found on the TH commissioner: [1651256405894] [18453:593886] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 [1651256405894] [18453:593886] CHIP: [DIS] Vendor ID: 65521 [1651256405894] [18453:593886] CHIP: [DIS] Product ID: 32769 @@ -258,15 +277,16 @@ tests: verification: | $ dns-sd -B _services._dns-sd._udp - Example output using all-clusters-app"s advertisements: + Example output using all-clusters-app"s advertisements found on the TH commissioner: 11:56:29.770 Add 3 7 . _sub.local. _V65521 disabled: true - label: "Place the DUT device into Commissioning mode" verification: | $ ./chip-tool discover commissionables + Verify in TH as commissioner side: - Example output using all-clusters-app"s advertisements: + Example output using all-clusters-app"s advertisements found on the TH commissioner: [1651256405894] [18453:593886] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 [1651256405894] [18453:593886] CHIP: [DIS] Vendor ID: 65521 [1651256405894] [18453:593886] CHIP: [DIS] Product ID: 32769 @@ -289,6 +309,7 @@ tests: _matterc._udp -r)" verification: | $ ./chip-tool discover commissionables + Verify in TH as commissioner side: [1657220492275] [29906:16679893] CHIP: [DL] Browsing for: _matterc._udp [1657220492275] [29906:16679893] CHIP: [DL] Mdns: OnBrowseAdd name: 74AFA51731B2E373, type: _matterc._udp., domain: local., interface: 7 [1657220492275] [29906:16679893] CHIP: [DL] Resolve type=_matterc._udp name=74AFA51731B2E373 interface=7 diff --git a/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml index f81a32a10543fd..c02101c86ed49e 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml @@ -26,10 +26,23 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.4.3. Discovery by Commissioner - DUT supports BLE (central role), Wi-Fi and IP connectivity - Wi-Fi certified n client + + 2 - Test Harness must support all discovery transport technologies as the DUT (i.e. BLE, Wi-Fi and IP connectivity) + disabled: true + - label: "TH starts matter announcement procedure using BLE transport" PICS: MCORE.DD.DISCOVERY_BLE verification: | $ ./out/ble/chip-all-clusters-app --ble-device 1 --discriminator 3841 + Verify in TH as commissionee side: [1657221603.350406][368108:368108] CHIP:DL: Device Configuration: [1657221603.350445][368108:368108] CHIP:DL: Serial Number: TEST_SN @@ -56,14 +69,14 @@ tests: verification: | 1. Discover commissionables over BLE using DUT=chip-tool pairing - Verify in TH as server side + Verify in TH as commissionee side: $ ./chip-tool pairing ble-wifi 1 zigbeehome matter123 20202021 3841 [1651743342.299897][3461:3464] CHIP:BLE: New device scanned: E4:5F:01:0F:1A:02 [1651743342.299951][3461:3464] CHIP:BLE: Device discriminator match. Attempting to connect. [1651743342.303783][3461:3464] CHIP:BLE: Scan complete notification without an active scan. [1651743346.244175][3461:3464] CHIP:DL: ConnectDevice complete - Verify in DUT as client side + Verify in DUT as commissioner side: [1651743346.152716][5072:5075] CHIP:DL: Device E4:5F:01:0F:3B:B1 (Path: /org/bluez/hci0/dev_E4_5F_01_0F_3B_B1) Connected [1651743347.908807][5072:5075] CHIP:DL: BluezCharacteristicAcquireWrite is called, conn: 0xffffa0043700 [1651743347.911151][5072:5075] CHIP:DL: c1 BluezCharacteristicWriteFD mtu, 517 @@ -114,14 +127,14 @@ tests: verification: | 1. Discover commissionables over BLE using DUT=chip-tool pairing command - Verify in TH as server side + Verify in TH as commissionee side: $ ./chip-tool pairing ble-wifi 1 zigbeehome matter123 20202021 3841 [1651743342.299897][3461:3464] CHIP:BLE: New device scanned: E4:5F:01:0F:1A:02 [1651743342.299951][3461:3464] CHIP:BLE: Device discriminator match. Attempting to connect. [1651743342.303783][3461:3464] CHIP:BLE: Scan complete notification without an active scan. [1651743346.244175][3461:3464] CHIP:DL: ConnectDevice complete - Verify in DUT as client side + Verify in DUT as commissioner side: [1651743346.152716][5072:5075] CHIP:DL: Device E4:5F:01:0F:3B:B1 (Path: /org/bluez/hci0/dev_E4_5F_01_0F_3B_B1) Connected [1651743347.908807][5072:5075] CHIP:DL: BluezCharacteristicAcquireWrite is called, conn: 0xffffa0043700 [1651743347.911151][5072:5075] CHIP:DL: c1 BluezCharacteristicWriteFD mtu, 517 @@ -172,7 +185,7 @@ tests: verification: | $ ./out/all-clusters-app/chip-all-clusters-app --wifi --discriminator 3841 - Verify in TH as server side + Verify in TH as commissionee side [1653087913.247229][8083:8083] CHIP:SVR: Server Listening... [1653087913.247636][8083:8083] CHIP:DL: Device Configuration: [1653087913.248094][8083:8083] CHIP:DL: Serial Number: TEST_SN @@ -190,19 +203,19 @@ tests: [1653087913.254268][8083:8083] CHIP:DMG: Endpoint 0, Cluster 0x0000_001D update version to 29f72814 disabled: true - - label: "DUT must find TH and provide onboarding data for validation." + - label: "" PICS: MCORE.DD.DISCOVERY_BLE verification: | 1. Discover commissionables over BLE using DUT=chip-tool pairing command - Verify in TH as server side + Verify in TH as commissionee side: $ ./chip-tool pairing ble-wifi 1 zigbeehome matter123 20202021 3841 [1651743342.299897][3461:3464] CHIP:BLE: New device scanned: E4:5F:01:0F:1A:02 [1651743342.299951][3461:3464] CHIP:BLE: Device discriminator match. Attempting to connect. [1651743342.303783][3461:3464] CHIP:BLE: Scan complete notification without an active scan. [1651743346.244175][3461:3464] CHIP:DL: ConnectDevice complete - Verify in DUT as client side + Verify in DUT as commissioner side: [1651743346.152716][5072:5075] CHIP:DL: Device E4:5F:01:0F:3B:B1 (Path: /org/bluez/hci0/dev_E4_5F_01_0F_3B_B1) Connected [1651743347.908807][5072:5075] CHIP:DL: BluezCharacteristicAcquireWrite is called, conn: 0xffffa0043700 [1651743347.911151][5072:5075] CHIP:DL: c1 BluezCharacteristicWriteFD mtu, 517 @@ -291,22 +304,40 @@ tests: "With DUT and TH connected to the same network over IP, DUT performs service discovery using DNS-SD" verification: | - 1. TH is in commissioning mode and discoverable by DUT over IP through DNS-SD advertisements + 1. TH is in commissioning mode and discoverable by DUT over IP through DNS-SD advertisements. This can also be verified using through the DUT"s pairing command over IP. + + Verify in TH as commissionee side: + $ ./out/all-clusters-app/chip-all-clusters-app + [1660154789.496930][7968:7968] CHIP:DIS: CHIP minimal mDNS started advertising. + [1660154789.499623][7968:7968] CHIP:DL: Using wifi MAC for hostname + [1660154789.499743][7968:7968] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32769 discriminator=3840/15 cm=1 + [1660154789.501718][7968:7968] CHIP:DIS: Responding with _matterc._udp.local + [1660154789.501757][7968:7968] CHIP:DIS: Responding with 092C5C8AE5285458._matterc._udp.local + [1660154789.501780][7968:7968] CHIP:DIS: Responding with DCA632A849EA0000.local + [1660154789.501802][7968:7968] CHIP:DIS: Responding with DCA632A849EA0000.local + [1660154789.501830][7968:7968] CHIP:DIS: Responding with _V65521._sub._matterc._udp.local + [1660154789.501858][7968:7968] CHIP:DIS: Responding with _S15._sub._matterc._udp.local + [1660154789.501882][7968:7968] CHIP:DIS: Responding with _L3840._sub._matterc._udp.local + [1660154789.501907][7968:7968] CHIP:DIS: Responding with _CM._sub._matterc._udp.local + [1660154789.501945][7968:7968] CHIP:DIS: Responding with 092C5C8AE5285458._matterc._udp.local + [1660154789.501966][7968:7968] CHIP:DIS: CHIP minimal mDNS configured as "Commissionable node device". + - Verify in DUT as client side + Verify in DUT as commissioner side: $ ./chip-tool discover commissionables - [1651256405894] [18453:593886] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 - [1651256405894] [18453:593886] CHIP: [DIS] Vendor ID: 65521 - [1651256405894] [18453:593886] CHIP: [DIS] Product ID: 32769 - [1651256405894] [18453:593886] CHIP: [DIS] Long Discriminator: 3840 - [1651256405894] [18453:593886] CHIP: [DIS] Pairing Hint: 33 - [1651256405894] [18453:593886] CHIP: [DIS] Hostname: DCA6328D2B9F0000 [1651256405894] [18453:593886] CHIP: [DIS] Instance Name: 8FFEE04E82830E26 - [1651256405894] [18453:593886] CHIP: [DIS] IP Address #1: fd54:23a1:c6de:4637:dea6:32ff:fe8d:2b9f - [1651256405894] [18453:593886] CHIP: [DIS] IP Address #2: fe80::dea6:32ff:fe8d:2b9f - [1651256405894] [18453:593886] CHIP: [DIS] IP Address #3: fe80::dea6:32ff:fe8d:2ba0 - [1651256405894] [18453:593886] CHIP: [DIS] IP Address #4: 192.168.1.2 - [1651256405894] [18453:593886] CHIP: [DIS] Port: 5540 - [1651256405894] [18453:593886] CHIP: [DIS] Commissioning Mode: 1 - [1651256405894] [18453:593886] CHIP: [DIS] Mrp Interval idle: 5000 ms - [1651256405894] [18453:593886] CHIP: [DIS] Mrp Interval active: 300 ms + OR + $ ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 + [1660155158954] [99591:10441026] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:fe80::e5d0:7f0d:7aad:d736 + [1660155158954] [99591:10441026] CHIP: [DIS] Hostname: DCA632A849EA0000 [1660155158954] [99591:10441026] CHIP: [DIS] IP Address #1: fd54:23a1:c6de:4637:1fac:42fd:dd74:dcc5 + [1660155158954] [99591:10441026] CHIP: [DIS] IP Address #2: 2603:8001:7e00:e001:d669:2a30:7e9e:7121 + [1660155158954] [99591:10441026] CHIP: [DIS] IP Address #3: fe80::e5d0:7f0d:7aad:d736 + [1660155158954] [99591:10441026] CHIP: [DIS] Port: 5540 + [1660155158954] [99591:10441026] CHIP: [DIS] Mrp Interval idle: 5000 ms + [1660155158954] [99591:10441026] CHIP: [DIS] Mrp Interval active: 300 ms + [1660155158954] [99591:10441026] CHIP: [DIS] Vendor ID: 65521 + [1660155158954] [99591:10441026] CHIP: [DIS] Product ID: 32769 + [1660155158954] [99591:10441026] CHIP: [DIS] Long Discriminator: 3840 + [1660155158954] [99591:10441026] CHIP: [DIS] Pairing Hint: 33 + [1660155158954] [99591:10441026] CHIP: [DIS] Instance Name: 8BA2031BFBF2BCDE + [1660155158954] [99591:10441026] CHIP: [DIS] Commissioning Mode: 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml index 7d21c8276e1f1e..a745aae5ad4ba0 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml @@ -24,11 +24,16 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be IP-based(Ethernet or WiFi) or Thread. Commissioner can either be a Matter device which is already on a network or the test harness connected to the network. + disabled: true + - label: "Commissioner and Commissionee discover each other and connect via the discovery mode applicable for the DUT." verification: | - Verify in TH as server side: sudo ./chip-all-clusters-app --wifi --discriminator 3841 + Verify in DUT as commissionee side: sudo ./chip-all-clusters-app --wifi --discriminator 3841 [1653471956.966855][10713:10713] CHIP:SPT: PASE PBKDF iterations set to 1000 [1653471956.966887][10713:10713] CHIP:SPT: LinuxCommissionableDataProvider didn"t get a PASE salt, generating one. @@ -52,7 +57,7 @@ tests: [1653471956.972769][10713:10713] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00 [1653471956.972803][10713:10713] CHIP:SVR: Manual pairing code: [749701123365521327694] - + Verify on TH as commissioner side: connectedhomeip/examples/chip-tool/out/debug$ ./chip-tool discover commissionables Waiting for device responses... CHIP:CTL: Generating ICAC @@ -202,7 +207,7 @@ tests: verification: | Verify that the responder receives the PBKDFParamRequest message - Verify in TH as server side + Verify in DUT as commissionee side CHIP:SC: Received PBKDF param request CHIP:SC: Peer assigned session ID 18450 CHIP:SC: Found MRP parameters in the message @@ -212,7 +217,7 @@ tests: CHIP:IN: Sending unauthenticated msg 0xaaaaad340560 with MessageCounter:1341084110 to 0x0000000000000000 at monotonic time: 0000000000FBA380 msec CHIP:SC: Sent PBKDF param response - Verify in DUT as client side + Verify in TH as commissioner side Sent PBKDF param request [1653471961.364996][30157:30162] CHIP:CTL: Setting wifi credentials from parameters [1653471961.365051][30157:30162] CHIP:CTL: Setting attestation nonce to random value @@ -230,11 +235,11 @@ tests: "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s (the autonomously Fail-safe timer length set by Commissionee)" verification: | - Verify in TH as server side + Verify in DUT as commissionee side CHIP:DL: NVS set: chip-config/fail-safe-armed = true - Verify in DUT as client side + Verify in TH as commissioner side : Performing next commissioning step "ArmFailSafe" [1653471968.064493][30157:30162] CHIP:CTL: Arming failsafe (60 seconds) @@ -245,13 +250,13 @@ tests: Commissionee." PICS: MCORE.COM.WIRELESS verification: | - Verify in DUT as client side + Verify in TH as commissioner side Performing next commissioning step "ConfigRegulatory" [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0) - Verify in TH as server side + Verify in DUT as commissionee side NVS set: chip-config/regulatory-location = 0 (0x0) disabled: true @@ -259,13 +264,13 @@ tests: "Commissioner requests operational CSR from Commissionee with OperationalCSRRequest command" verification: | - Verify in DUT as client side after commissioning + Verify in TH as commissioner side after commissioning [1646909537.102263][3145:3150] CHIP:CTL: Received Attestation Information from the device [1646909537.102418][3145:3150] CHIP:CTL: Verifying attestation [1646909537.115081][3145:3150] CHIP:CTL: Successfully validated "Attestation Information" command received from the device. - Verify in TH as server side + Verify in DUT as commissionee side OpCreds: Received a CSRRequest command CHIP:ZCL: OpCreds: NewCertificateSigningRequest succeeded disabled: true @@ -274,11 +279,11 @@ tests: "Commissioner configures operational credentials on DUT if not previously installed" verification: | - Verify in TH as server side + Verify in DUT as commissionee side OpCreds: Received an AddTrustedRootCertificate command - Verify in DUT as client side + Verify in TH as commissioner side Sending root certificate to the device CHIP:DMG: ICR moving to [AddingComm] @@ -293,7 +298,7 @@ tests: "Commissioner configures itself as administrator in ACL on DUT if needed" verification: | - Verify in DUT as client side after commissioning + Verify in TH as commissioner side after commissioning CHIP:CTL: Commissioning stage next step: "SendTrustedRootCert" -> "SendNOC" [1653471969.812357][30157:30162] CHIP:CTL: Performing next commissioning step "SendNOC" @@ -347,7 +352,7 @@ tests: [1653471970.347439][30157:30162] CHIP:TOO: Secure Pairing Success [1653471970.347485][30157:30162] CHIP:CTL: Successfully finished commissioning step "SendNOC" - Verify in TH as server side + Verify in DUT as commissionee side OpCreds: Received an AddNOC command disabled: true @@ -356,7 +361,7 @@ tests: "Commissioner configures operational network on DUT if DUT both supports and requires" verification: | - Verify in DUT as client side after commissioning + Verify in TH as commissioner side after commissioning [1646909537.345068][3145:3150] CHIP:CTL: Received certificate signing request from the device disabled: true @@ -365,7 +370,7 @@ tests: "Commissioner instructs Commissionee to connect to operational network if not already connected" verification: | - Verify in DUT as client side after commissioning + Verify in TH as commissioner side after commissioning [1646909537.976592][3145:3150] CHIP:CTL: Operational credentials provisioned on device 0xffffac001730 [1646909537.976664][3145:3150] CHIP:TOO: Secure Pairing Success @@ -373,7 +378,7 @@ tests: - label: "Commissioner starts discovery of DUT using Operational Discovery" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Commissioning stage next step: "SendNOC" -> "FindOperational" [1653471976.344532][30157:30162] CHIP:CTL: Performing next commissioning step "FindOperational" @@ -395,18 +400,22 @@ tests: - label: "Commissioner opens a CASE session with DUT over operational network" verification: | - Verify in TH as server side + Verify in DUT as commissionee side + + [1660154789.690124][7968:7968] CHIP:IN: CASE Server enabling CASE session setups + [1660154789.690208][7968:7968] CHIP:IN: SecureSession[0xaaaab75fae10]: Allocated Type:2 LSID:55651 + [1660154789.690248][7968:7968] CHIP:SC: Allocated SecureSession (0xaaaab75fae10) - waiting for Sigma1 msg + [1660154789.690276][7968:7968] CHIP:SVR: Joining Multicast groups + [1660154789.690304][7968:7968] CHIP:ZCL: Emitting StartUp event + [1660154789.690395][7968:7968] CHIP:EVL: LogEvent event number: 0x0000000000000002 priority: 2, endpoint id: 0x0 cluster id: 0x0000_0028 event id: 0x0 Sys timestamp: 0x00000000001D1D86 - CASE Server enabling CASE session setups - [1653471957.713139][10713:10713] CHIP:SVR: Joining Multicast groups - [1653471957.713654][10713:10713] CHIP:ZCL: Emitting StartUp event - [1653471957.714762][10713:10713] CHIP:EVL: LogEvent event number: 0x0000000000000000 priority: 2, endpoint id: 0x0 cluster id: 0x0000_0028 event id: 0x0 Sys timestamp: 0x000000000059AC88 - [1653471957.715456][10713:10713] CHIP:ZCL: GeneralDiagnosticsDelegate: OnDeviceRebooted + Verify in TH as commissioner side + [1660154794132] [99576:10438621] CHIP: [TOO] CASE establishment successful disabled: true - label: "Commissioner sends CommissioningComplete command" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Received CommissioningComplete response disabled: true @@ -415,7 +424,7 @@ tests: "Commissioning channel between the Commissioner and Commissionee is terminated." verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Successfully finished commissioning step "SendComplete" CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup" diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml index fd3cd615e01ac3..b81143cb4ce851 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml @@ -27,6 +27,16 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 -DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + disabled: true + - label: "DUT receives Onboarding Payload from the TH with Custom Flow field set to value 2" @@ -48,26 +58,25 @@ tests: disabled: true - label: - "DUT fetches commissioning data from DCL using VID and PID from - Onboarding Payload" - PICS: MCORE.DD.FETCH_DCL + "User follows any TH-specific steps to place the TH Commissionee into + commissioning mode." verification: | - 1. Observe the TH"s DCL on the DUT - disabled: true - - - label: - "Using the instructions located at the CommissioningCustomFlowURL from - the DCL, DUT guides the user in next steps to prepare the commissionee - (TH) for commissioning" - PICS: MCORE.DD.FETCH_DCL - verification: | - 1. Follow instructions for commissioning using the URL contained in the DCL + 1. Launch the TH commissionee all-clusters-app: + $ ./chip-all-clusters-app + Verifiy on TH as commissionee side: + [1660152729.426029][648909:648909] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== + [1660152729.426076][648909:648909] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] + [1660152729.426103][648909:648909] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1660152729.426123][648909:648909] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 disabled: true - label: "DUT commissions TH" verification: | $ ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 - [1657578523795] [9610:351965] CHIP: [CTL] Successfully finished commissioning step "Cleanup" - [1657578523795] [9610:351965] CHIP: [TOO] Device commissioning completed with success + Verify in DUT as commissioner side: + CHIP:CTL: Received CommissioningComplete response + + Verifiy on TH as commissionee side: + [1660154248.898113][7143:7143] CHIP:SVR: Commissioning completed successfully disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml index a2f62b1675d2bf..82ab752313d6d3 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml @@ -28,6 +28,38 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual). + + An example onboarding QR code could be "MT:-24J029Q00KA0648G00" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes: + + - 3-bit Version String=000 + + - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier") + + - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier") + + - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2) + + - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork) + + - 12-bit Discriminator=0xF00 + + - 27-bit Passcode=20202021 + + - 4-bit Padding=0000 + + - no variable-length TLV Data included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data") + disabled: true + - label: "Standard Commissioning Flow: Use a Commissionee with a QR code that has the Custom Flow field set to 0 and supports BLE for its Discovery @@ -35,6 +67,8 @@ tests: spec. documentation." PICS: MCORE.DD.DISCOVERY_BLE verification: | + Verify on the TH as commissionee side: + $ ./out/ble/all-clusters-app/chip-all-clusters-app --capabilities 2 --ble-device 1 ... [1657232267.387816][370320:370320] CHIP:DL: Device Configuration: @@ -65,13 +99,13 @@ tests: using BLE" PICS: MCORE.DD.DISCOVERY_BLE verification: | - TH Commissionee: + Verify on the TH as commissionee side: [1657232374.956508][370357:370357] CHIP:DL: HandlePlatformSpecificBLEEvent 32784 [1657232374.956534][370357:370357] CHIP:SVR: Commissioning completed successfully [1657232374.956577][370357:370357] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 [1657232374820] [31379:16804218] CHIP: [CTL] Received CommissioningComplete response, errorCode=0 @@ -92,6 +126,7 @@ tests: verification: | $ ./out/all-clusters-app/chip-all-clusters-app --custom-flow 0 --capabilities 4 + Verify on the TH as commissionee side: [1651105420.610637][27312:27312] CHIP:DL: Device Configuration: [1651105420.610695][27312:27312] CHIP:DL: Serial Number: TEST_SN [1651105420.610727][27312:27312] CHIP:DL: Vendor Id: 65521 (0xFFF1) @@ -108,7 +143,9 @@ tests: - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | - 1. Verify the QR code is scanned by DUT, chip-tool does not support physically scanning QR codes + 1. Verify the QR code is scanned by DUT + + Note: chip-tool does not support physically scanning QR codes disabled: true - label: @@ -117,12 +154,12 @@ tests: using IP Network" PICS: MCORE.DD.DISCOVERY_IP verification: | - TH Commissionee: + Verify on the TH Commissionee side: [1651105530.973166][27371:27371] CHIP:SVR: Commissioning completed successfully [1651105530.973215][27371:27371] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on the DUT Commissioner: $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651105530854] [95067:65607294] CHIP: [CTL] Received CommissioningComplete response diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml index c4d4b2ed7e5fed..9adbd5d30f2adf 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml @@ -28,6 +28,38 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual). + + An example onboarding QR code could be "MT:-24J029Q00KA0648G00" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes: + + - 3-bit Version String=000 + + - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier") + + - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier") + + - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2) + + - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork) + + - 12-bit Discriminator=0xF00 + + - 27-bit Passcode=20202021 + + - 4-bit Padding=0000 + + - no variable-length TLV Data included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data") + disabled: true + - label: "User-Intent Commissioning Flow: Use a Commissionee with a QR code that has the Custom Flow field set to 1 and supports BLE for its @@ -36,9 +68,10 @@ tests: documentation." PICS: MCORE.DD.DISCOVERY_BLE verification: | + Verify on the TH as commissionee side: + $ ./out/ble/all-clusters-app/chip-all-clusters-app --capabilities 2 --custom-flow 1 --ble-device 1 ... - [1657234110.765139][370717:370717] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== [1657234110.765249][370717:370717] CHIP:SVR: SetupQRCode: [MT:-24J0YXE00KA0648G00] [1657234110.765314][370717:370717] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: [1657234110.765364][370717:370717] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0YXE00KA0648G00 @@ -48,36 +81,32 @@ tests: PICS: MCORE.DD.SCAN_QR_CODE verification: | 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - label: "DUT parses QR code." PICS: MCORE.DD.DISCOVERY_BLE verification: | - 1. Follow the steps given in the TH"s pairing hint to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network + 1. Parse the payload of the TH commissionee - On DUT=chip-tool: - ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 - [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step "SendComplete" - [1657234147237] [31454:16822562] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" - [1657234147237] [31454:16822562] CHIP: [CTL] Performing next commissioning step "Cleanup" - [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step "Cleanup" - [1657234147237] [31454:16822562] CHIP: [TOO] Device commissioning completed with success + Verify on the DUT Commissioner side: + $ ./chip-tool payload parse-setup-payload MT:-24J0YXE00KA0648G00 + + 2. Verify that TH logs do not show the commissionee being commissioned by the DUT. disabled: true - label: - "Follow any steps from the resources provided by the pairing hint or - by the THs manufacturer for putting the TH Commissionee device into - commissioning mode and to complete the commissioning process using - BLE." + "User should follow any TH-specific steps for putting the TH + Commissionee device into commissioning mode and to complete the + commissioning process using BLE." PICS: MCORE.DD.DISCOVERY_BLE verification: | - TH Commissionee: + Verify on the TH Commissionee side: [1651101988.943015][23212:23212] CHIP:SVR: Commissioning completed successfully [1651101988.943058][23212:23212] CHIP:DIS: Updating services using commissioning mode 0 - - On DUT Commissioner=chip-tool: + Verify on the DUT Commissioner side: ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 [1657234147237] [31454:16822562] CHIP: [CTL] Successfully finished commissioning step "SendComplete" [1657234147237] [31454:16822562] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" @@ -94,47 +123,43 @@ tests: documentation." PICS: MCORE.DD.DISCOVERY_IP verification: | + Verify on the TH Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app --custom-flow 1 --capabilities 4 - [1657234233.898170][370755:370755] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== - [1657234233.898195][370755:370755] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] - [1657234233.898227][370755:370755] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: - [1657234233.898248][370755:370755] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 + [1660353382.200125][249074:249074] CHIP:SVR: SetupQRCode: [MT:-24J029Q00KA0648G00] + [1660353382.200152][249074:249074] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code: + [1660353382.200173][249074:249074] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J029Q00KA0648G00 disabled: true - label: "Scan the QR code from the previous step using the DUT." PICS: MCORE.DD.SCAN_QR_CODE verification: | 1. Verify the QR code is scanned by DUT + Note: chip-tool does not support physically scanning QR codes disabled: true - label: "DUT parses QR code." PICS: MCORE.DD.DISCOVERY_IP verification: | - 1. Follow the steps given in the TH"s pairing hint to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network + 1. Parse the payload of the TH commissionee + Verify on the DUT Commissioner side: + $ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 - On DUT=chip-tool: - ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 - [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step "SendComplete" - [1657234324847] [31475:16824564] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" - [1657234324847] [31475:16824564] CHIP: [CTL] Performing next commissioning step "Cleanup" - [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step "Cleanup" - [1657234324847] [31475:16824564] CHIP: [TOO] Device commissioning completed with success + 2. Verify that TH logs do not show the commissionee being commissioned by the DUT. disabled: true - label: - "Follow any steps from the resources provided by the pairing hint or - by the THs manufacturer for putting the TH Commissionee device into - commissioning mode and to complete the commissioning process using IP - Network." + "User should follow any TH-specific steps for putting the TH + Commissionee device into commissioning mode and to complete the + commissioning process using IP Network." PICS: MCORE.DD.DISCOVERY_IP verification: | - TH all-clusters-app: + Verify on the TH Commissionee side: [1657234324.992098][370755:370755] CHIP:SVR: Commissioning completed successfully [1657234324.992146][370755:370755] CHIP:DIS: Updating services using commissioning mode 0 - On DUT=chip-tool: + Verify on the DUT Commissioner side: ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 [1657234324847] [31475:16824564] CHIP: [CTL] Successfully finished commissioning step "SendComplete" [1657234324847] [31475:16824564] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" @@ -170,10 +195,9 @@ tests: disabled: true - label: - "Follow any steps from the resources provided by the pairing hint or - by the THs manufacturer for putting the TH Commissionee device into - commissioning mode and to complete the commissioning process using - SoftAP." + "User should follow any TH-specific steps for putting the TH + Commissionee device into commissioning mode and to complete the + commissioning process using SoftAP." PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | Out of Scope for V1.0 diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml index ce576dad278dd9..462dce0ec17513 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml @@ -28,6 +28,38 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual). + + An example onboarding QR code could be "MT:-24J029Q00KA0648G00" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes: + + - 3-bit Version String=000 + + - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier") + + - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier") + + - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2) + + - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork) + + - 12-bit Discriminator=0xF00 + + - 27-bit Passcode=20202021 + + - 4-bit Padding=0000 + + - no variable-length TLV Data included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data") + disabled: true + - label: "Custom Commissioning Flow: Use a Commissionee with a QR code that has the Custom Flow field set to 2 and supports BLE for its Discovery @@ -35,6 +67,7 @@ tests: Version bit string follows the current Matter spec. documentation." PICS: MCORE.DD.DISCOVERY_BLE verification: | + Verify on the TH Commissionee side: $ ./out/ble/all-clusters-app/chip-all-clusters-app --custom-flow 2 --capabilities 2 [1657235055.253604][370941:370941] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== @@ -53,27 +86,36 @@ tests: - label: "DUT parses QR code." PICS: MCORE.DD.DISCOVERY_BLE verification: | - 1. Follow the steps given in the TH"s URL to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network - - On DUT=chip-tool: - ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 - [1657235087918] [31502:16832693] CHIP: [CTL] Successfully finished commissioning step "Cleanup" - [1657235087918] [31502:16832693] CHIP: [TOO] Device commissioning completed with success + 1. Parse the payload of the TH commissionee + + Verify on the DUT Commissioner side: + $ ./chip-tool payload parse-setup-payload MT:-24J0YXE00KA0648G00 + [1660352364702] [20244:11810896] CHIP: [SPL] Parsing base38Representation: MT:-24J0YXE00KA0648G00 + [1660352364702] [20244:11810896] CHIP: [SPL] Version: 0 + [1660352364702] [20244:11810896] CHIP: [SPL] VendorID: 65521 + [1660352364702] [20244:11810896] CHIP: [SPL] ProductID: 32769 + [1660352364702] [20244:11810896] CHIP: [SPL] Custom flow: 2 (CUSTOM) + [1660352364702] [20244:11810896] CHIP: [SPL] Capabilities: 0x02 (BLE) + [1660352364702] [20244:11810896] CHIP: [SPL] Discriminator: 3840 + [1660352364702] [20244:11810896] CHIP: [SPL] Passcode: 20202021 + + 2. Verify that TH logs do not show the commissionee being commissioned by the DUT. disabled: true - label: - "User should follow any steps from the CommissioningCustomFlowUrl - within the THs DCL, unless the DUT has alternative means to guide the - user to successful commissioning, for putting the TH Commissionee into - commissioning mode, for triggering the DUT Commissioner for - commissioning, and for completing the commissioning process using BLE." + "User should follow any TH-specific steps, unless the DUT has + alternative means to guide the user to successful commissioning, for + putting the TH Commissionee into commissioning mode, for triggering + the DUT Commissioner for commissioning, and for completing the + commissioning process using BLE." PICS: MCORE.DD.DISCOVERY_BLE verification: | - TH all-clusters-app: + Verify on the TH Commissionee side: [1657235088.040328][370941:370941] CHIP:SVR: Commissioning completed successfully [1657235088.040371][370941:370941] CHIP:DIS: Updating services using commissioning mode 0 - DUT chip-tool: $ ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 + Verify on the DUT Commissioner side: + $ ./chip-tool pairing code 1 MT:-24J0YXE00KA0648G00 [1657235087918] [31502:16832693] CHIP: [CTL] Successfully finished commissioning step "Cleanup" [1657235087918] [31502:16832693] CHIP: [TOO] Device commissioning completed with success disabled: true @@ -86,6 +128,7 @@ tests: documentation." PICS: MCORE.DD.DISCOVERY_IP verification: | + Verify on the TH Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app --custom-flow 2 --capabilities 4 [1657235141.663008][370963:370963] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ==== @@ -104,28 +147,35 @@ tests: - label: "DUT parses QR code." PICS: MCORE.DD.DISCOVERY_IP verification: | - 1. Follow the steps given in the TH"s URL to allow for commissioning to happen. TH should not be commissioned until these steps were followed and indicate DUT can proceed with commissioning the TH to the Matter network - - On DUT=chip-tool: - ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 - [1657235198856] [31506:16834043] CHIP: [CTL] Successfully finished commissioning step "Cleanup" - [1657235198856] [31506:16834043] CHIP: [TOO] Device commissioning completed with success + 1. Parse the payload of the TH commissionee + + Verify on the DUT Commissioner side: + $ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 + [1660352541112] [20246:11812333] CHIP: [SPL] Parsing base38Representation: MT:-24J029Q00KA0648G00 + [1660352541113] [20246:11812333] CHIP: [SPL] Version: 0 + [1660352541113] [20246:11812333] CHIP: [SPL] VendorID: 65521 + [1660352541113] [20246:11812333] CHIP: [SPL] ProductID: 32769 + [1660352541114] [20246:11812333] CHIP: [SPL] Custom flow: 2 (CUSTOM) + [1660352541114] [20246:11812333] CHIP: [SPL] Capabilities: 0x04 (On IP network) + [1660352541114] [20246:11812333] CHIP: [SPL] Discriminator: 3840 + [1660352541114] [20246:11812333] CHIP: [SPL] Passcode: 20202021 + + 2. Verify that TH logs do not show the commissionee being commissioned by the DUT. disabled: true - label: - "User should follow any steps from the CommissioningCustomFlowUrl - within the THs DCL, unless the DUT has alternative means to guide the - user to successful commissioning, for putting the TH Commissionee into - commissioning mode, for triggering the DUT Commissioner for - commissioning, and for completing the commissioning process using IP - Network." + "User should follow any TH-specific steps, unless the DUT has + alternative means to guide the user to successful commissioning, for + putting the TH Commissionee into commissioning mode, for triggering + the DUT Commissioner for commissioning, and for completing the + commissioning process using IP Network." PICS: MCORE.DD.DISCOVERY_IP verification: | - TH all-clusters-app: + Verify on the TH Commissionee side: [1657235198.977848][370963:370963] CHIP:SVR: Commissioning completed successfully [1657235198.977943][370963:370963] CHIP:DIS: Updating services using commissioning mode 0 - DUT chip-tool: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 [1657235198856] [31506:16834043] CHIP: [CTL] Successfully finished commissioning step "Cleanup" [1657235198856] [31506:16834043] CHIP: [TOO] Device commissioning completed with success @@ -157,12 +207,11 @@ tests: disabled: true - label: - "User should follow any steps from the CommissioningCustomFlowUrl - within the THs DCL, unless the DUT has alternative means to guide the - user to successful commissioning, for putting the TH Commissionee into - commissioning mode, for triggering the DUT Commissioner for - commissioning, and for completing the commissioning process using - SoftAP." + "User should follow any TH-specific steps, unless the DUT has + alternative means to guide the user to successful commissioning, for + putting the TH Commissionee into commissioning mode, for triggering + the DUT Commissioner for commissioning, and for completing the + commissioning process using SoftAP." PICS: MCORE.DD.DISCOVERY_SOFTAP verification: | Out of Scope for V1.0 diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml index 42fa580bc34c8a..e09184f8560eeb 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml @@ -27,8 +27,41 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.3 - QR code is printed on the device or in additional provided materials (ex: manual). + + An example onboarding QR code could be "MT:-24J029Q00KA0648G00" (following 5.1.3 "QR Code", Table 34 "Packed Binary Data Structure for Onboarding Payload") which includes: + + - 3-bit Version String=000 + + - 16-bit Vendor ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier") + + - 16-bit Product ID=0x8001 (as defined in section 2.5.3. "Product Identifier") + + - 2-bit Custom Flow=10 (Custom Commissioning Flow = 2) + + - 8-bit Discovery Capabilities Bitmask=00000100 (OnNetwork) + + - 12-bit Discriminator=0xF00 + + - 27-bit Passcode=20202021 + + - 4-bit Padding=0000 + + - no variable-length TLV Data included (as defined in section 5.1.3.1. "Payload", subsection "TLV Data") + disabled: true + - label: "Locate and scan/read the Commissionees QR code using DUT" verification: | + Verify on the TH Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 2 --capabilities 4 --discriminator 3840 --passcode 20202021 [1657235470.970680][371041:371041] CHIP:DL: Device Configuration: @@ -52,6 +85,7 @@ tests: Version String (i.e. 010 or any non-zero 3-bit value)" verification: | 1. Use chip-tool"s "payload generate-qrcode" command to help generate the new, invalid QR code + Verify on the TH Commissionee side: $ ./chip-tool payload generate-qrcode --existing-payload MT:-24J029Q00KA0648G00 --allow-invalid-payload 1 --version 2 [1657235626568] [31698:16839018] CHIP: [TOO] QR Code: MT:034J029Q00KA0648G00 disabled: true @@ -59,8 +93,10 @@ tests: - label: "Scan/read the QR code, generated in the previous step, using the DUT" verification: | - TH all-clusters-app: + Verify on the DUT Commissioner side: Run command failure: ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:50: CHIP Error 0x0000002F: Invalid argument + + No applicable TH Logs disabled: true - label: @@ -70,13 +106,18 @@ tests: PICS: MCORE.DD.DISCOVERY_BLE verification: | 1. Use chip-tool"s "payload generate-qrcode" command to help generate the new, invalid QR code + Verify on the TH Commissionee side: $ ./chip-tool payload generate-qrcode --existing-payload MT:-24J029Q00KA0648G00 --allow-invalid-payload 1 --rendezvous 4 [1657235754393] [31702:16840391] CHIP: [TOO] QR Code: MT:-24J029Q00KA0648G00 + + Verify on the DUT Commissioner side: + No applicable logs on the DUT side disabled: true - label: "Scan/read the QR code of the TH device using the DUT" PICS: MCORE.DD.DISCOVERY_BLE verification: | + Verify on the DUT Commissioner side: ./chip-tool pairing code 1 MT:-24J029Q00KA0648G00 [1657235905214] [31706:16841970] CHIP: [CTL] Discovered device to be commissioned over DNS-SD ... @@ -92,6 +133,7 @@ tests: 00000000, 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321" verification: | + No applicable TH or DUT Logs "MT:-24J029Q00OC0000000" (00000000), "MT:-24J029Q00KMSP0Z800" (11111111), "MT:-24J029Q00GWID1WH00" (22222222), @@ -109,7 +151,8 @@ tests: - label: "Scan each of the generated QR codes from the previous step using DUT" verification: | - TH chip-all-clusters-app Commissionee: + Verify on the DUT Commissioner side: + No applicable TH Logs ./chip-tool pairing code 1 MT:-24J029Q00OC0000000 @@ -170,11 +213,17 @@ tests: MT: (i.e. Prefix=AB:)" verification: | AB:-24J029Q00KA0648G00 + + No applicable TH or DUT Logs disabled: true - label: "Scan/read the QR code, generated in the previous step, using the DUT" verification: | + Verify on the DUT Commissioner side: + $ ./chip-tool pairing code 1 AB:-24J029Q00KA0648G00 [1657236169984] [31732:16844455] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed + + No applicable TH Logs disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml index 039487b9d39579..30475e9ee7f05e 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml @@ -27,13 +27,42 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + Preconditions + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.4.2 - Manual Pairing Code is printed on the Commissionee device or in additional provided materials (ex: manual). + + An example onboarding payload could be "34970112332" (11-digit) or could be "749701123365521327694" (21-digit) (following 5.1.4. Table 37. "Manual Pairing Code Elements") which each include: + + - 1-bit VID_PID_PRESENT = 0 (11-digit) or = 1 (21-digit) + + - 1-bit VERSION=0 + + - 4-bit SHORT DISCRIMINATOR=0xF00 (4 Most-significant bits of the 12-bits Discriminator value) + + - 27-bit PASSCODE=20202021 (see section 5.1.6. Generation of the Passcode) + + - 16-bit VENDOR_ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier", for 21-digit Manual Pairing Code only) + + - 16-bit PRODUCT_ID=0x8001 (as defined in section 2.5.3. "Product Identifier", present if and only if VID is present) + + - A generated CHECK_DIGIT (see section 5.1.4. Manual Pairing Code, subsection "Check Digit") + disabled: true + - label: "Verify the THs 11-digit Manual Pairing Code meets the following criteria: - VERSION bit string string up to date with the current Matter spec. documentation - VID_PID_PRESENT bit string set to 0" PICS: MCORE.DD.11_MANUAL_PC verification: | - On TH Commissionee: + Verify on the TH Commissionee side: $ ./out/ble/all-clusters-app/chip-all-clusters-app [1651108891.390266][30833:30833] CHIP:DL: Device Configuration: [1651108891.390455][30833:30833] CHIP:DL: Serial Number: TEST_SN @@ -58,11 +87,11 @@ tests: process." PICS: MCORE.DD.11_MANUAL_PC verification: | - On TH Commissionee: + Verify on the TH Commissionee side: [1651109112.909458][30833:30833] CHIP:SVR: Commissioning completed successfully [1651109112.909503][30833:30833] CHIP:DIS: Updating services using commissioning mode 0 - On DUT Commissioner: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 34970112332 [1651109112823] [95528:65650355] CHIP: [CTL] Received CommissioningComplete response @@ -81,7 +110,7 @@ tests: PRODUCT_ID present (as defined in section 2.5.3. Product Identifier)" PICS: MCORE.DD.21_MANUAL_PC verification: | - On TH Commissionee: + Verify on the TH Commissionee side: $ ./out/ble/all-clusters-app/chip-all-clusters-app [1651109167.022364][30980:30980] CHIP:DL: Device Configuration: @@ -116,7 +145,7 @@ tests: [1651109219.100167][30980:30980] CHIP:SVR: Commissioning completed successfully [1651109219.100213][30980:30980] CHIP:DIS: Updating services using commissioning mode 0 - On DUT Commissioner: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 749701123365521327694 [1651109219028] [95536:65652322] CHIP: [CTL] Received CommissioningComplete response diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml index 3b34bd354eea56..6e9dd0f317e56b 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml @@ -27,11 +27,39 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.4.2 - 11-digit Manual Pairing Code is printed on the Commissionee device or in additional provided materials (ex: manual). + + An example onboarding payload could be "34970112332" (following 5.1.4. Table 37. "Manual Pairing Code Elements") which each include: + + - 1-bit VID_PID_PRESENT = 0 (11-digit only) + + - 1-bit VERSION=0 + + - 4-bit SHORT DISCRIMINATOR=0xF00 (4 Most-significant bits of the 12-bits Discriminator value) + + - 27-bit PASSCODE=20202021 (see section 5.1.6. Generation of the Passcode) + + - 16-bit VENDOR_ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier", for 21-digit Manual Pairing Code only) + + - 16-bit PRODUCT_ID=0x8001 (as defined in section 2.5.3. "Product Identifier", present if and only if VID is present) + + - A generated CHECK_DIGIT (see section 5.1.4. Manual Pairing Code, subsection "Check Digit") + disabled: true + - label: "Provide the 11-digit Manual Pairing Code from the Commissionee to the DUT in any format supported by DUT" verification: | - Verify in TH as server side + Verify on the TH Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --custom-flow 0 --capabilities 4 --discriminator 3840 --passcode 20202021 [1651180718.960383][13218:13218] CHIP:DL: Device Configuration: @@ -56,10 +84,10 @@ tests: 2" verification: | 1. Use chip-tool"s "payload verhoeff-generate" command to help generate the new, invalid Manual code + No applicable DUT or TH logs $ ./chip-tool payload verhoeff-generate 8497011233 - Verify in DUT as client side [1651186243492] [13415:349553] CHIP: [SPL] Generating Character for: 84970112331 [1651186243492] [13415:349553] CHIP: [SPL] Generated Char: 1 Manual Code: 84970112331 @@ -71,7 +99,7 @@ tests: verification: | $ ./chip-tool pairing code 1 84970112331 - Verify in DUT as client side + Verify in DUT Commissioner side Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument disabled: true @@ -81,9 +109,11 @@ tests: manual code but substituting out the current VID_PID_PRESENT with an invalid VID_PID_PRESENT set to 1" verification: | + 1. Use chip-tool"s "payload generate-manualcode" command to help generate the new, invalid Manual code + No applicable DUT or TH logs + $ ./chip-tool payload generate-manualcode --discriminator 0xF00 --setup-pin-code 20202021 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 2 --force-short-code 1 - Verify in DUT as client side [1651181048462] [11611:269469] CHIP: [TOO] Manual Code: 74970112334 disabled: true @@ -93,7 +123,7 @@ tests: verification: | $ ./chip-tool pairing code 1 74970112334 - Verify in DUT as client side + Verify on the DUT Commissioner side: [1651184274318] [12512:321250] CHIP: [SPL] Failed decoding base10. Input length 10 was not expected length 20 ... [1651184274321] [12512:321244] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:63: CHIP Error 0x0000001E: Invalid string length @@ -109,11 +139,11 @@ tests: Discriminator value)" verification: | 1. Use chip-tool"s "payload generate-manualcode" command to help generate the new, invalid Manual code + No applicable DUT or TH logs $ ./chip-tool payload generate-manualcode --existing-payload 34970112332 --discriminator 0xE00 [1657236763262] [31784:16850989] CHIP: [TOO] Manual Code: 33331712336 - Verify in DUT as client side Manual Code: 33331712336 disabled: true @@ -121,7 +151,7 @@ tests: "Provide the Manual Pairing Code, generated in the previous step, to the DUT in any format supported by the DUT" verification: | - On DUT=chip-tool: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 33331712336 [1654001605.517505][3200:3205] CHIP:-: ../../third_party/connectedhomeip/src/platform/Linux/BLEManagerImpl.cpp:748: CHIP Error 0x0000002D: Not Implemented at ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:450 @@ -139,8 +169,7 @@ tests: 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321" verification: | 1. Use these as examples of how to generate manual codes with invalid passcodes - - Verify in DUT as client side + No applicable DUT or TH logs "34915200008" (00000000), $ ./chip-tool payload generate-manualcode --discriminator 3840 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 0 --allow-invalid-payload 1 --setup-pin-code 00000000 @@ -195,7 +224,8 @@ tests: "Provide each of the Manual Pairing Codes, generated in the previous step, to the DUT in any format supported by the DUT" verification: | - Verify in DUT as client side + Verify on the DUT Commissioner side: + No applicable TH logs (00000000) $ ./chip-tool pairing code 1 34915200008 @@ -253,7 +283,8 @@ tests: CHECK_DIGIT while following Table 38. Encoding Method without Vendor and Product IDs (VID_PID_Present == 0))" verification: | - 1. Change the last digit of the manual pairing code to a different digit + 1. Manually change the last digit of the manual pairing code to a different digit + No applicable DUT or TH logs Manual Code: 34970112331 disabled: true @@ -262,7 +293,7 @@ tests: "Provide the Manual Pairing Code, generated in the previous step, to the DUT in any format supported by the DUT" verification: | - On DUT=chip-tool: + Verify on the DUT Commissioner side: $ ./chip-tool pairing code 1 34970112331 [1657586218401] [10710:465838] CHIP: [TOO] Run command failure: ../../third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml index 36730301d3760f..5f5987a38855cf 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml @@ -27,11 +27,40 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + Preconditions + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + + 2 - 5.1.4.2 - 21-digit Manual Pairing Code is printed on the Commissionee device or in additional provided materials (ex: manual). + + An example onboarding payload could be "749701123365521327694" (21-digit) (following 5.1.4. Table 37. "Manual Pairing Code Elements") which each include: + + - 1-bit VID_PID_PRESENT = 1 (21-digit only) + + - 1-bit VERSION=0 + + - 4-bit SHORT DISCRIMINATOR=0xF00 (4 Most-significant bits of the 12-bits Discriminator value) + + - 27-bit PASSCODE=20202021 (see section 5.1.6. Generation of the Passcode) + + - 16-bit VENDOR_ID=0xFFF1 (as defined in section 2.5.2. "Vendor Identifier", for 21-digit Manual Pairing Code only) + + - 16-bit PRODUCT_ID=0x8001 (as defined in section 2.5.3. "Product Identifier", present if and only if VID is present) + + - A generated CHECK_DIGIT (see section 5.1.4. Manual Pairing Code, subsection "Check Digit") + disabled: true + - label: "Provide the 21-digit Manual Pairing Code from the Commissionee to the DUT in any format supported by DUT" verification: | - Verify in TH as server side + Verify in TH Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app [1657203632.334400][13827:13827] CHIP:DL: Device Configuration: @@ -61,10 +90,10 @@ tests: 2" verification: | 1. Use chip-tool"s "payload verhoeff-generate" command to help generate the new, invalid Manual code + No applicable TH or DUT logs. $ ./chip-tool payload verhoeff-generate 84970112336552132769 - Verify in DUT as client side [1657238290868] [31968:16868160] CHIP: [SPL] Generating Character for: 84970112336552132769 [1657238290868] [31968:16868160] CHIP: [SPL] Generated Char: 3 @@ -77,7 +106,7 @@ tests: verification: | $ ./chip-tool pairing code 1 849701123365521327693 - Verify in DUT as client side + Verify in DUT Commissioner side: [1657238348848] [31971:16868925] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:137: CHIP Error 0x0000002F: Invalid argument disabled: true @@ -87,9 +116,10 @@ tests: invalid VID_PID_PRESENT set to 0" verification: | 1. Use chip-tool"s "payload verhoeff-generate" command to help generate the new, invalid Manual code + No applicable TH or DUT logs. + $ ./chip-tool payload verhoeff-generate 34970112336552132769 - Verify in DUT as client side [1651186492744] [13434:353094] CHIP: [SPL] Generating Character for: 34970112336552132769 [1651186492744] [13434:353094] CHIP: [SPL] Generated Char: 6 @@ -102,7 +132,7 @@ tests: verification: | $ ./chip-tool pairing code 1 349701123365521327696 - Verify in DUT as client side + Verify in DUT Commissioner side: [1657238541643] [31975:16871084] CHIP: [SPL] Failed decoding base10. Input length 20 was not expected length 10 ... [1657238541644] [31975:16871079] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:63: CHIP Error 0x0000001E: Invalid string length @@ -118,8 +148,8 @@ tests: Discriminator value)" verification: | 1. Use chip-tool"s "payload generate-manualcode" command to help generate the new, invalid Manual code + No applicable TH or DUT logs. - Verify in DUT as client side $ ./chip-tool payload generate-manualcode --existing-payload 749701123365521327694 --allow-invalid-payload 1 --discriminator 3584 [1657238783501] [31989:16873588] CHIP: [TOO] Manual Code: 733317123365521327692 disabled: true @@ -130,7 +160,7 @@ tests: verification: | $ ./chip-tool pairing code 1 733317123365521327692 - Verify in DUT as client side + Verify in DUT Commissioner side: [1655814152.716988][3723:3726] CHIP:CTL: Commissioning discovery over BLE failed: ../../third_party/connectedhomeip/src/platform/Linux/BLEManagerImpl.cpp:829: CHIP Error 0x00000032: Timeout [1655814152.717099][3723:3726] CHIP:-: ../../third_party/connectedhomeip/src/platform/Linux/BLEManagerImpl.cpp:829: CHIP Error 0x00000032: Timeout at ../../third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:270 [1655814172.703455][3723:3728] CHIP:CTL: Discovery timed out @@ -148,10 +178,10 @@ tests: 55555555, 66666666, 77777777, 88888888, 99999999, 12345678, 87654321" verification: | 1. Use this as an example of how to generate a manual code with an invalid passcode. In this example the invalid passcode=00000000 + No applicable TH or DUT logs. Use chip-tool"s "payload generate-manualcode" command to help generate the new, invalid Manual code - Verify in DUT as client side $ ./chip-tool payload generate-manualcode --existing-payload 749701123365521327694 --allow-invalid-payload 1 --setup-pin-code 00000000 [1657239062245] [32164:16876812] CHIP: [TOO] Manual Code: 749152000065521327698 disabled: true @@ -160,7 +190,8 @@ tests: "Provide each of the Manual Pairing Codes, generated in the previous step, to the DUT in any format supported by the DUT" verification: | - Verify in DUT as client side + Verify in DUT Commissioner side: + No applicable TH logs. (00000000) $ ./chip-tool pairing code 1 749152000065521327698 @@ -230,8 +261,8 @@ tests: Test VENDOR_ID from the list: 0xFFF1, 0xFFF2, 0xFFF3, 0xFFF4" verification: | 1. Use this as an example of how to generate a manual code with an invalid vendor IDs + No applicable TH or DUT logs. - Verify in DUT as client side $ ./chip-tool payload generate-manualcode --discriminator 3840 --setup-pin-code 20202021 --version 0 --vendor-id 0xFFF1 --product-id 0x8001 --commissioning-mode 1 [1651189120686] [14218:398626] CHIP: [TOO] Manual Code: 749701123365521327694 disabled: true @@ -241,7 +272,7 @@ tests: step, to the DUT in any format supported by the DUT" verification: | 1. Run each of the following DUT commands below containing invalid Vendor IDs. - 2. Verify that the TH commissionee=all-cluserters-app does not get commissioned -or- the DUT make the user fully aware of the security risks of providing an uncertified device with operational and networking credentials + 2. Verify that the TH commissionee=all-cluserters-app does not get commissioned -OR- the DUT Commissioner make the user fully aware of the security risks of providing an uncertified device with operational and networking credentials (0xFFF1) $ ./chip-tool pairing code 1 749701123365521327694 @@ -249,11 +280,9 @@ tests: (0xFFF2) $ ./chip-tool pairing code 1 749701123365522327692 - (0xFFF3) $ ./chip-tool pairing code 1 749701123365523327697 - (0xFFF4) $ ./chip-tool pairing code 1 749701123365524327693 disabled: true @@ -265,8 +294,8 @@ tests: Identifier)" verification: | 1. Use chip-tool"s "payload generate-manualcode" command to help generate the new, invalid Manual code + No applicable TH or DUT logs. - Verify in DUT as client side $ ./chip-tool payload generate-manualcode --existing-payload 749701123365521327694 --allow-invalid-payload 1 --product-id 0x0000 [1657239418656] [32180:16880488] CHIP: [TOO] Manual Code: 749701123365521000006 disabled: true @@ -275,7 +304,7 @@ tests: "Provide the Manual Pairing Code, generated in the previous step, to the DUT in any format supported by the DUT" verification: | - Verify in DUT as client side + Verify in DUT Commissioner side: $ ./chip-tool pairing code 1 749701123365521000006 [1657239565895] [32193:16881922] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/controller/SetUpCodePairer.cpp:55: CHIP Error 0x0000002F: Invalid argument @@ -289,10 +318,10 @@ tests: Product IDs included (VID_PID_Present == 1))" verification: | 1. Use chip-tool"s "payload verhoeff-verify" command to help verify that the check-digit is invalid + No applicable TH or DUT logs. $ ./chip-tool payload verhoeff-verify 749701123365521327693 20 - Verify in DUT as client side [1651187504088] [13629:367627] CHIP: [SPL] Verifying Manual Code: 74970112336552132769 [1651187504088] [13629:367627] CHIP: [SPL] 749701123365521327693 is INVALID at position 20 disabled: true @@ -303,6 +332,16 @@ tests: verification: | $ ./chip-tool pairing code 1 749701123365521327693 - Verify in DUT as client side + Verify in DUT Commissioner side: [1651187528666] [13631:367920] CHIP: [TOO] Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/setup_payload/ManualSetupPayloadParser.cpp:50: CHIP Error 0x00000013: Integrity check failed disabled: true + + - label: "" + verification: | + verification step to be updated. + disabled: true + + - label: "" + verification: | + verification step to be updated. + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml index aeee0bd664f89b..2531691ed693f2 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml @@ -27,12 +27,24 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + 2 - 5.1.3 - QR code is printed on the Commissionee devices or in additional provided materials (ex: manual). + disabled: true + - label: "Place TH1 into commissioning mode using the TH manufacturers means to be discovered by a commissioner" verification: | 1. After launching all-clusters-app using discriminator 3841 using below command $ ./out/all-clusters-app/chip-all-clusters-app --wifi --discriminator 3841 + No applicable TH or DUT logs. $ dns-sd -B _matterc._udp,_L3841 Browsing for _matterc._udp,_L3841 @@ -48,6 +60,7 @@ tests: verification: | 1. After launching all-clusters-app using discriminator 3844 using below command sudo ./chip-all-clusters-app --wifi --discriminator 3844 + No applicable TH or DUT logs. $ dns-sd -B _matterc._udp,_L3844 Browsing for _matterc._udp,_L3844 @@ -69,11 +82,11 @@ tests: Commissioner/Commissionee to complete the commissioning process over the TH Commissionees method of device discovery" verification: | - TH1 Commissionee: + Verify on the TH1 Commissionee: [1657240914.891250][372173:372173] CHIP:SVR: Commissioning completed successfully [1657240914.891297][372173:372173] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on the DUT Commissioner: $ ./chip-tool pairing code 1 MT:-24J0IRV01KA0648G00 [1657240914764] [32262:16895870] CHIP: [CTL] Successfully finished commissioning step "Cleanup" @@ -92,11 +105,11 @@ tests: Commissioner/Commissionee to complete the commissioning process over the TH Commissionees method of device discovery" verification: | - TH2 Commissionee: + Verify on the TH2 Commissionee: [1657240985.801360][112581:112581] CHIP:SVR: Commissioning completed successfully [1657240985.801406][112581:112581] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on the DUT Commissioner: $ ./chip-tool pairing code 2 MT:-24J04QI14KA0648G00 [1657240985682] [32264:16896797] CHIP: [CTL] Successfully finished commissioning step "Cleanup" @@ -109,7 +122,7 @@ tests: verification: | $ ./chip-tool basic read reachable 1 0 - Verify in DUT as client side + Verify in DUT Commissioner side: [1657241043430] [32266:16897416] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0011 DataVersion: 131004400 [1657241043432] [32266:16897416] CHIP: [TOO] Reachable: TRUE @@ -121,7 +134,7 @@ tests: verification: | $ ./chip-tool basic read reachable 2 0 - Verify in DUT as client side + Verify in DUT Commissioner side: [1657241066927] [32267:16897671] CHIP: [TOO] Endpoint: 0 Cluster: 0x0000_0028 Attribute 0x0000_0011 DataVersion: 2450774961 [1657241066927] [32267:16897671] CHIP: [TOO] Reachable: TRUE diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml index 4920069bae4662..d7dc97a42dd086 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml @@ -27,11 +27,17 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - Commissioner is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + 2 - 5.1.3 - QR code is printed on the Commissionee device or in additional provided materials (ex: manual). + disabled: true + - label: "Place DUT into commissioning mode using the DUTs manufacturers means to be discovered by the TH Commissioner" verification: | - DUT Commissionee: + Verify on DUT Commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3841 [1651111142.369356][32024:32024] CHIP:DL: Device Configuration: @@ -45,7 +51,7 @@ tests: [1651111142.369573][32024:32024] CHIP:DL: Device Type: 65535 (0xFFFF) [1651111142.370760][32024:32024] CHIP:SVR: SetupQRCode: [MT:-24J0ALY01KA0648G00] - TH Commissioner: + Verify on TH Commissioner side: $ ./chip-tool discover commissionables [1651111150395] [95835:65674062] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 @@ -68,11 +74,11 @@ tests: for the Commissioner/Commissionee to complete the commissioning process over the DUT Commissionees method of device discovery" verification: | - DUT Commissionee: + Verify on DUT Commissionee side: [1651111335.475159][32130:32130] CHIP:SVR: Commissioning completed successfully [1651111335.475204][32130:32130] CHIP:DIS: Updating services using commissioning mode 0 - TH Commissioner: + Verify on TH Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0ALY01KA0648G00 [1651111335378] [95843:65675989] CHIP: [CTL] Received CommissioningComplete response @@ -106,7 +112,7 @@ tests: 1. On RasPi DUT $ rm -rf /tmp/chip* 2. On RasPi DUT $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3841 - On TH chip-tool: + Verify on TH Commissioner side: $ ./chip-tool discover commissionables [1651111576350] [95850:65678872] CHIP: [DL] Mdns: OnNewAddress interface: 7 ip:192.168.1.2 [1651111576350] [95850:65678872] CHIP: [DIS] Vendor ID: 65521 @@ -128,11 +134,11 @@ tests: for the Commissioner/Commissionee to complete the commissioning process over the DUT Commissionees method of device discovery" verification: | - DUT Commissionee: + Verify on DUT Commissionee side: [1651111614.006849][32259:32259] CHIP:SVR: Commissioning completed successfully [1651111614.006893][32259:32259] CHIP:DIS: Updating services using commissioning mode 0 - TH Commissioner: + Verify on TH Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0ALY01KA0648G00 [1651111613912] [95856:65679504] CHIP: [CTL] Received CommissioningComplete response diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml index 33a3be710bcd09..27b21af3206274 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml @@ -25,13 +25,18 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be IP-based(Ethernet or WiFi) or Thread. Commissioner can either be a Matter device which is already on a network or the test harness connected to the network. + disabled: true + - label: "Commissioner and Commissionee discover each other and connect via the discovery mode applicable for the DUT." verification: | - Verify in TH as server side: start BLE Advertising by specific DUT implementation + Verify in DUT as commissionee side: start BLE Advertising by specific DUT implementation - Verify in DUT as client side: start commissioning process(need to obtain the Thread dataset first) + Verify in TH as commissioner side: start commissioning process(need to obtain the Thread dataset first) ./chip-tool pairing ble-thread 1 hex:0e080000000000010000000300000f35060004001fffe0020811111111222222220708fd27e57b1b1e22d9051000112233445566778899aabbccddeeff030e4f70656e54687265616444656d6f01021234041061e1206d2c2b46e079eb775f41fc72190c0402a0fff8 20202021 3840 ,, @@ -41,7 +46,7 @@ tests: "Establish encryption keys with Password Authenticated Session Establishment on the commissioning channel" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:SC: Received PBKDF param response disabled: true @@ -50,7 +55,7 @@ tests: "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s (the autonomously Fail-safe timer length set by Commissionee)" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Arming failsafe (60 seconds) disabled: true @@ -60,7 +65,7 @@ tests: Commissionee." PICS: MCORE.COM.WIRELESS verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Setting Regulatory Config disabled: true @@ -69,7 +74,7 @@ tests: "Commissioner requests operational CSR from Commissionee with OperationalCSRRequest command" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Sending CSR request to 0xffffa4001730 device CHIP:DMG: ICR moving to [AddingComm] @@ -133,7 +138,7 @@ tests: "Commissioner configures operational credentials on DUT if not previously installed" verification: | - Verify in DUT as client side + Verify in TH as commissioner side [1651218829.220063][3273:3278] CHIP:CTL: Sending root certificate to the device [1651218829.220201][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -187,7 +192,7 @@ tests: "Commissioner configures itself as administrator in ACL on DUT if needed" verification: | - Verify in DUT as client side + Verify in TH as commissioner side [1651218829.457248][3273:3278] CHIP:CTL: Sending operational certificate chain to the device [1651218829.457372][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -243,7 +248,7 @@ tests: "Commissioner configures operational network on DUT if DUT both supports and requires" verification: | - Verify in DUT as client side + Verify in TH as commissioner side [1651218833.995054][3273:3278] CHIP:CTL: Adding thread network [1651218833.995176][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -295,7 +300,7 @@ tests: "Commissioner instructs Commissionee to connect to operational network if not already connected" verification: | - Verify in DUT as client side + Verify in TH as commissioner side [1651218834.137891][3273:3278] CHIP:CTL: Enabling thread network [1651218834.138014][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -353,7 +358,7 @@ tests: - label: "Commissioner starts discovery of DUT using Operational Discovery" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:DL: Avahi resolve found CHIP:DIS: Node ID resolved for 0x0000000000000001 @@ -364,7 +369,7 @@ tests: - label: "Commissioner opens a CASE session with DUT over operational network" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:SC: Sent Sigma1 msg CHIP:CTL: Address resolved for node: 0x0000000000000001 @@ -403,7 +408,7 @@ tests: - label: "Commissioner sends CommissioningComplete command" verification: | - Verify in DUT as client side + Verify in TH as commissioner side CHIP:CTL: Received CommissioningComplete response CHIP:CTL: Rendezvous cleanup diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml index e1b52070927b42..d78e3ffc11e3be 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml @@ -27,11 +27,23 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + 2 - 5.1.3 - QR code is printed on the Commissionee device or in additional provided materials (ex: manual). + disabled: true + - label: "Place TH into commissioning mode using the TH manufacturers means to be discovered by the DUT Commissioner" verification: | $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3840 + Verify on TH Commissionee side: [1651109580.413197][31207:31207] CHIP:DL: Device Configuration: [1651109580.413259][31207:31207] CHIP:DL: Serial Number: TEST_SN @@ -58,11 +70,11 @@ tests: Commissioner/Commissionee to complete the commissioning process over the TH Commissionees method of device discovery" verification: | - TH Commissionee: + Verify on TH Commissionee side: [1651109784.452770][31207:31207] CHIP:SVR: Commissioning completed successfully [1651109784.452813][31207:31207] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on DUT Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651109784376] [95553:65657838] CHIP: [CTL] Received CommissioningComplete response @@ -78,6 +90,7 @@ tests: network." verification: | ./chip-tool operationalcredentials remove-fabric 1 1 0 + Verify on DUT Commissioner side: CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0008 CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Command 0x0000_0008 @@ -92,7 +105,10 @@ tests: "Place TH Commissionee back into commissioning mode using the TH manufacturers means to be discovered by the DUT Commissioner" verification: | + 1. Place the TH into commissioning mode by launching the app again + $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3840 + Verify on TH Commissionee side: [1651110721.112368][31791:31791] CHIP:DL: Device Configuration: [1651110721.112448][31791:31791] CHIP:DL: Serial Number: TEST_SN @@ -119,11 +135,11 @@ tests: Commissioner/Commissionee to complete the commissioning process over the TH Commissionees method of device discovery" verification: | - TH Commissionee: + Verify on TH Commissionee side: [1651110724.759825][31791:31791] CHIP:SVR: Commissioning completed successfully [1651110724.759869][31791:31791] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on DUT Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651110724689] [95810:65669790] CHIP: [CTL] Received CommissioningComplete response diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml index ad4ea586253bbf..a860d0ddbf32f1 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml @@ -27,13 +27,24 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - DUT is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + 2 - 5.1.3 - QR code is printed on the Commissionee device or in additional provided materials (ex: manual). + disabled: true + - label: "Place TH into commissioning mode using the TH manufacturers means to be discovered by the DUT Commissioner" verification: | $ ./out/all-clusters-app/chip-all-clusters-app --discriminator 3840 - Verify in TH as server side + Verify on TH Commissionee side: [1651109580.413197][31207:31207] CHIP:DL: Device Configuration: [1651109580.413259][31207:31207] CHIP:DL: Serial Number: TEST_SN [1651109580.413294][31207:31207] CHIP:DL: Vendor Id: 65521 (0xFFF1) @@ -59,11 +70,11 @@ tests: Commissioner/Commissionee to complete the commissioning process over the TH Commissionees method of device discovery" verification: | - TH Commissionee: + Verify on TH Commissionee side: [1651109784.452770][31207:31207] CHIP:SVR: Commissioning completed successfully [1651109784.452813][31207:31207] CHIP:DIS: Updating services using commissioning mode 0 - DUT Commissioner: + Verify on DUT Commissioner side: $ ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 [1651109784376] [95553:65657838] CHIP: [CTL] Received CommissioningComplete response @@ -81,12 +92,12 @@ tests: user action to trigger such command)." verification: | 1. Send "on" command from Commissioner to TH Endpoint 1 - On DUT=chip-tool: + Verify on DUT Commissioner side: $ ./chip-tool onoff on 1 1 [...] [1657930715416] [56399:2451384] CHIP: [DMG] Received Command Response Status for Endpoint=1 Cluster=0x0000_0006 Command=0x0000_0001 Status=0x0 - On TH=all-clusters-app: + Verify on TH Commissionee side: [...] [1657930715.432295][2911:2911] CHIP:ZCL: On/Off set value: 1 1 [1657930715.432341][2911:2911] CHIP:ZCL: Toggle on/off from 0 to 1 diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml index cb0031d272db29..d57af20dbf9a61 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml @@ -26,6 +26,13 @@ config: endpoint: 0 tests: + - label: "" + verification: | + Preconditions + 1 - User must indicate the intention for commissioning using a display or other UI elements. + 2 - TH is not advertising Commissioner Discovery Service at start + disabled: true + - label: "DUT start scanning for available commissioners using Commissioner Discovery" @@ -35,6 +42,8 @@ tests: - label: "TH is instructed to advertise Commissioner Discovery service" verification: | + chip-tv-app is used as TH + ubuntu@ubuntu:~/may23_DUT/connectedhomeip/examples/tv-app/linux/out/tv-app$ sudo ./chip-tv-app Verify in tv-app side @@ -49,10 +58,11 @@ tests: "DUT start scanning for available commissioners using Commissioner Discovery" verification: | - connectedhomeip/examples/tv-casting-app/linux/out/tv-casting-app$ sudo ./chip-tv-casting-app + In certification QA we are using chip-tv-casting-app as a reference app, In case of certification testing, DUT (app) vendor to provide instructions on how to scan for commissioners + connectedhomeip/examples/tv-casting-app/linux/out/tv-casting-app$ sudo ./chip-tv-casting-app - Verify in tv-casting-app side + Verify for the commissioner advertisements from the TH in tv-casting-app side CHIP:SVR: Discovered Commissioner #0 [1653478433.097515][3785:3785] CHIP:DIS: Hostname: E45F010F19FF0000 [1653478433.097546][3785:3785] CHIP:DIS: IP Address #1: fe80::d83a:21ff:fe24:b6d6 @@ -96,15 +106,28 @@ tests: - label: "TH start the commissioning procedure with DUT" verification: | - ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2755 5640 + Into the shell, enter "cast request 0" to send a user-directed-commissioning request to the DUT on tv-casting-app side + + > cast request 0 + [1653179218011] [47890:1899175] CHIP: [DL] request + [1653179218011] [47890:1899175] CHIP: [SVR] ------- PrepareForCommissioning + [1653179218011] [47890:1899175] CHIP: [SVR] Server initializing... + + + UX will vary by product maker. The following is the tv-app shell output: + + [1653179219087] [89108:1898759] CHIP: [CTL] ------PROMPT USER: Test TV casting app is requesting permission to cast to this TV, approve? [0x0000_FFF1,0x0000_8001,E0707BB1AFFA6F23,020096D16895275F1B49A07221F0E588E06B] + + [1653179219087] [89108:1898759] CHIP: [CTL] ------Via Shell Enter: controller ux ok|cancel + + + Into the DUT UX, accept request for commissioning. Manufacturer may utilize a custom method for obtaining user consent other than an on-screen prompt. + + The following is the tv-app shell command to accept the request + + > controller ux ok - Verify in TH log: + The commissioning success completion is indicated in the TH with the following shell output: - [1653559159.021348][4240:4246] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 - [1653559159.021432][4240:4246] CHIP:CTL: Received CommissioningComplete response, errorCode=0 - [1653559159.021499][4240:4246] CHIP:CTL: Successfully finished commissioning step "SendComplete" - [1653559159.021554][4240:4246] CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup" - [1653559159.021611][4240:4246] CHIP:CTL: Performing next commissioning step "Cleanup" - [1653559159.021725][4240:4246] CHIP:CTL: Successfully finished commissioning step "Cleanup" - [1653559159.021790][4240:4246] CHIP:TOO: Device commissioning completed with success + [1653088463910] [86837:1122544] CHIP: [SVR] Commissioning completed successfully disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml index 202705aee928d1..de3bb357ac2a44 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml @@ -26,11 +26,25 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - User must indicate the intention for commissioning using a display or other UI elements." + disabled: true + - label: "DUT is instructed to advertise Commissioner Discovery service" verification: | + 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) or tv-casting-app (when DUT is a commissionee): + + chip-tv-app is used as TH + ubuntu@ubuntu:~/may23_DUT/connectedhomeip/examples/tv-app/linux/out/tv-app$ sudo ./chip-tv-app - Verify in tv-app side: + Verify in tv-app side CHIP:DL: Using wifi MAC for hostname CHIP:DIS: Advertise operational node DFC28FF9FE811EF2-FFFFFFEFFFFFFFFF @@ -42,54 +56,105 @@ tests: "TH starts scanning for available commissioners using Commissioner Discovery" verification: | - ubuntu@ubuntu:~/may23_cntrl/connectedhomeip/examples/chip-tool/out/debug$ avahi-browse -rt _matterd._udp - - + eth0 IPv6 A0BF4D00BE973DEC _matterd._udp local - + eth0 IPv6 252FB62C79E2724B _matterd._udp local - = eth0 IPv6 A0BF4D00BE973DEC _matterd._udp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2755] - port = [5650] - txt = ["T=1" "SAI=300" "SII=5000" "DN=Test TV" "DT=35" "VP=65521+32769"] - = eth0 IPv6 252FB62C79E2724B _matterd._udp local - hostname = [E45F010F27530000.local] - address = [fe80::e65f:1ff:fe0f:2755] - port = [5650] - txt = ["T=1" "SAI=300" "SII=5000" "DN=Test TV" "DT=35" "VP=65521+32769"] + 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) or tv-casting-app (when DUT is a commissionee): + + In certification QA we are using chip-tv-casting-app as a reference app, In case of certification testing, DUT (app) vendor to provide instructions on how to scan for commissioners + + connectedhomeip/examples/tv-casting-app/linux/out/tv-casting-app$ sudo ./chip-tv-casting-app + + Verify for the commissioner advertisements from the TH in tv-casting-app side + + [1660758661.643392][2867:2867] CHIP:SVR: Discovered Commissioner #0 + [1660758661.643469][2867:2867] CHIP:DIS: Discovered node: + [1660758661.643506][2867:2867] CHIP:DIS: Hostname: E45F010F3BAF0000 [1660758661.643561][2867:2867] CHIP:DIS: IP Address #1: fe80::9052:32ff:fe00:92c4 + [1660758661.643606][2867:2867] CHIP:DIS: Port: 5540 + [1660758661.643648][2867:2867] CHIP:DIS: Mrp Interval idle: 5000 ms + [1660758661.643691][2867:2867] CHIP:DIS: Mrp Interval active: 300 ms + [1660758661.643733][2867:2867] CHIP:DIS: TCP Supported: 1 + [1660758661.643779][2867:2867] CHIP:DIS: Rotating ID: 0000406E4D7073744BF234AD391DAE869837 + [1660758661.643832][2867:2867] CHIP:DIS: Device Name: Test TV casting app + [1660758661.643876][2867:2867] CHIP:DIS: Vendor ID: 65521 + [1660758661.643918][2867:2867] CHIP:DIS: Product ID: 32769 + [1660758661.643960][2867:2867] CHIP:DIS: Device Type: 35 + [1660758661.644117][2867:2867] CHIP:DIS: Pairing Hint: 33 + [1660758661.644170][2867:2867] CHIP:DIS: Instance Name: 742273AB254EDCE1 + [1660758661.644212][2867:2867] CHIP:DIS: Commissioning Mode: 0 + [1660758661.644256][2867:2867] CHIP:SVR: Discovered Commissioner #1 + [1660758661.644294][2867:2867] CHIP:DIS: Discovered node: + [1660758661.644329][2867:2867] CHIP:DIS: Hostname: E45F010F27530000 [1660758661.644378][2867:2867] CHIP:DIS: IP Address #1: fe80::e65f:1ff:fe0f:2753 + [1660758661.644426][2867:2867] CHIP:DIS: IP Address #2: fe80::e65f:1ff:fe0f:2753 + [1660758661.644468][2867:2867] CHIP:DIS: Port: 5640 + [1660758661.644510][2867:2867] CHIP:DIS: Mrp Interval idle: 5000 ms + [1660758661.644552][2867:2867] CHIP:DIS: Mrp Interval active: 300 ms + [1660758661.644594][2867:2867] CHIP:DIS: TCP Supported: 1 + [1660758661.644638][2867:2867] CHIP:DIS: Rotating ID: 01005FDB39737473FB22B819CEBB1084AFD5 + [1660758661.644680][2867:2867] CHIP:DIS: Device Name: Test TV + [1660758661.644721][2867:2867] CHIP:DIS: Vendor ID: 65521 + [1660758661.644762][2867:2867] CHIP:DIS: Product ID: 32769 + [1660758661.644803][2867:2867] CHIP:DIS: Device Type: 35 + [1660758661.644844][2867:2867] CHIP:DIS: Long Discriminator: 3840 + [1660758661.644886][2867:2867] CHIP:DIS: Pairing Hint: 33 + [1660758661.644927][2867:2867] CHIP:DIS: Instance Name: 38D0A5D1137B8FF4 + [1660758661.644968][2867:2867] CHIP:DIS: Commissioning Mode: 1 + [1660758661.645010][2867:2867] CHIP:SVR: Discovered Commissioner #2 + [1660758661.645046][2867:2867] CHIP:DIS: Discovered node: + [1660758661.645082][2867:2867] CHIP:DIS: Hostname: E45F010F27530000 [1660758661.645128][2867:2867] CHIP:DIS: IP Address #1: fe80::e65f:1ff:fe0f:2753 + [1660758661.645174][2867:2867] CHIP:DIS: IP Address #2: fe80::e65f:1ff:fe0f:2753 + [1660758661.645217][2867:2867] CHIP:DIS: Port: 5650 + [1660758661.645258][2867:2867] CHIP:DIS: Mrp Interval idle: 5000 ms + [1660758661.645299][2867:2867] CHIP:DIS: Mrp Interval active: 300 ms + [1660758661.645340][2867:2867] CHIP:DIS: TCP Supported: 1 + [1660758661.645382][2867:2867] CHIP:DIS: Device Name: Test TV + [1660758661.645424][2867:2867] CHIP:DIS: Vendor ID: 65521 + [1660758661.645465][2867:2867] CHIP:DIS: Product ID: 32769 + [1660758661.645506][2867:2867] CHIP:DIS: Device Type: 35 + [1660758661.645548][2867:2867] CHIP:DIS: Instance Name: 38D0A5D1137B8FF4 + [1660758661.645589][2867:2867] CHIP:DIS: Commissioning Mode: 0 + [1660758661.645633][2867:2867] CHIP:SVR: 3 commissioner(s) discovered. Select one (by number# above) to request commissioning from: + [1660758661.645672][2867:2867] CHIP:SVR: Example: cast request 0 disabled: true - label: "TH is instructed to start the commissioning procedure with the DUT found at Step 2" verification: | - Out of scope for V1.0 - IDM functionality - - https://github.com/project-chip/connectedhomeip/issues/11004 + Out of scope for V1.0 disabled: true - label: "DUT verifies the Identification Declaration message" verification: | - Out of scope for V1.0 - IDM functionality - - https://github.com/project-chip/connectedhomeip/issues/11004 + Out of scope for V1.0 disabled: true - label: "By any means, DUT prompts user for onboarding payload" verification: | - verification step to be updated. + 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) or tv-casting-app (when DUT is a commissionee): + + + Into the shell, enter "cast request 0" to send a user-directed-commissioning request to the DUT on tv-casting-app side + > cast request 0 [1653179218011] [47890:1899175] CHIP: [DL] request [1653179218011] [47890:1899175] CHIP: [SVR] ------- PrepareForCommissioning [1653179218011] [47890:1899175] CHIP: [SVR] Server initializing... disabled: true - label: "DUT starts the commissioning procedure with TH" verification: | - ./chip-tool pairing ethernet 1 20202021 3840 fe80::e65f:1ff:fe0f:2755 5640 + 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) or tv-casting-app (when DUT is a commissionee): + + + + UX will vary by product maker. The following is the tv-app shell output: + + [1653179219087] [89108:1898759] CHIP: [CTL] ------PROMPT USER: Test TV casting app is requesting permission to cast to this TV, approve? [0x0000_FFF1,0x0000_8001,E0707BB1AFFA6F23,020096D16895275F1B49A07221F0E588E06B] + + [1653179219087] [89108:1898759] CHIP: [CTL] ------Via Shell Enter: controller ux ok|cancel + + + Into the DUT UX, accept request for commissioning. Manufacturer may utilize a custom method for obtaining user consent other than an on-screen prompt. + + The following is the tv-app shell command to accept the request + + > controller ux ok - Verify in DUT as commissioner side Log: + The commissioning success completion is indicated in the TH with the following shell output: - [1653559159.021348][4240:4246] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0030 Command=0x0000_0005 - [1653559159.021432][4240:4246] CHIP:CTL: Received CommissioningComplete response, errorCode=0 - [1653559159.021499][4240:4246] CHIP:CTL: Successfully finished commissioning step "SendComplete" - [1653559159.021554][4240:4246] CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup" - [1653559159.021611][4240:4246] CHIP:CTL: Performing next commissioning step "Cleanup" - [1653559159.021725][4240:4246] CHIP:CTL: Successfully finished commissioning step "Cleanup" - [1653559159.021790][4240:4246] CHIP:TOO: Device commissioning completed with success + [1653088463910] [86837:1122544] CHIP: [SVR] Commissioning completed successfully disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml index 92c0210c262910..8bb958ed534822 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml @@ -24,13 +24,25 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be WiFi or Thread. + + 2 - 5.5 - Commissionee can either be a Matter device which is already on a network or the test harness connected to the network. + disabled: true + - label: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" verification: | sudo ./chip-all-clusters-app --wifi --discriminator 3841 - Verify in TH as server side + Verify in TH as commissionee side: [1653471956.966855][10713:10713] CHIP:SPT: PASE PBKDF iterations set to 1000 [1653471956.966887][10713:10713] CHIP:SPT: LinuxCommissionableDataProvider didn"t get a PASE salt, generating one. @@ -56,7 +68,7 @@ tests: ./chip-tool pairing code 1 MT:-24J0CEK01KA0648G00 - Verify in DUT as client side + Verify in DUT as commissioner side: [1657226543861] [30621:16744161] CHIP: [IN] SecureSession[0x6000007cc000]: Activated - Type:1 LSID:47293 [1657226543861] [30621:16744161] CHIP: [IN] New secure session activated for device , LSID:47293 PSID:201! @@ -74,7 +86,7 @@ tests: (DNS-SD)" PICS: MCORE.DD.DISCOVERY_IP verification: | - Verify in DUT as client side + Verify in DUT as commissioner side: ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00 ... [1657226543861] [30621:16744161] CHIP: [IN] SecureSession[0x6000007cc000]: Activated - Type:1 LSID:47293 @@ -86,7 +98,7 @@ tests: [1657226543861] [30621:16744161] CHIP: [CTL] Commissioning stage next step: "SecurePairing" -> "ReadCommissioningInfo" - Verify in TH as server side + Verify in TH as commissionee side: $ ./out/all-clusters-app/chip-all-clusters-app ... [1657226543.948995][369114:369114] CHIP:IN: SecureSession[0xaaaab60788e0]: Activated - Type:1 LSID:201 @@ -100,7 +112,7 @@ tests: verification: | Verify that the responder receives the PBKDFParamRequest message - Verify in DUT as client side + Verify in DUT as commissioner side: CHIP:SC: Received PBKDF param request CHIP:SC: Peer assigned session ID 18450 CHIP:SC: Found MRP parameters in the message @@ -110,7 +122,7 @@ tests: CHIP:IN: Sending unauthenticated msg 0xaaaaad340560 with MessageCounter:1341084110 to 0x0000000000000000 at monotonic time: 0000000000FBA380 msec CHIP:SC: Sent PBKDF param response - Verify in TH as server side + Verify in TH as commissionee side: Sent PBKDF param request [1653471961.364996][30157:30162] CHIP:CTL: Setting wifi credentials from parameters [1653471961.365051][30157:30162] CHIP:CTL: Setting attestation nonce to random value @@ -128,10 +140,10 @@ tests: "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s (the autonomously Fail-safe timer length set by Commissionee)" verification: | - Verify in TH as server side + Verify in TH as commissionee side: CHIP:DL: NVS set: chip-config/fail-safe-armed = true - Verify in DUT as client side + Verify in DUT as commissioner side: : Performing next commissioning step "ArmFailSafe" [1653471968.064493][30157:30162] CHIP:CTL: Arming failsafe (60 seconds) @@ -142,12 +154,12 @@ tests: Commissionee." PICS: MCORE.COM.WIRELESS verification: | - Verify in DUT as client side + Verify in DUT as commissioner side Performing next commissioning step "ConfigRegulatory" [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0) - Verify in TH as server side + Verify in TH as commissionee side NVS set: chip-config/regulatory-location = 0 (0x0) disabled: true @@ -155,14 +167,14 @@ tests: "Commissioner requests operational CSR from Commissionee with OperationalCSRRequest command" verification: | - Verify the following on DUT after commissioning + 1. Verify the following on DUT after commissioning - Verify in TH as server side + Verify in TH as commissionee side: [1646909537.102263][3145:3150] CHIP:CTL: Received Attestation Information from the device [1646909537.102418][3145:3150] CHIP:CTL: Verifying attestation [1646909537.115081][3145:3150] CHIP:CTL: Successfully validated "Attestation Information" command received from the device. - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:ZCL: OpCreds: commissioner has requested a CSR CHIP:ZCL: OpCreds: NewCertificateSigningRequest returned ../../third_party/connectedhomeip/src/crypto/CHIPCryptoPALOpenSSL.cpp:1114: Success disabled: true @@ -171,11 +183,11 @@ tests: "Commissioner configures operational credentials on DUT if not previously installed" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side: OpCreds: Received an AddTrustedRootCertificate command - Verify in TH as server side + Verify in TH as commissionee side: Sending root certificate to the device CHIP:DMG: ICR moving to [AddingComm] @@ -190,7 +202,7 @@ tests: "Commissioner configures itself as administrator in ACL on TH if needed" verification: | - Verify in DUT as client side after commissioning + Verify in DUT as commissioner side after commissioning: CHIP:CTL: Commissioning stage next step: "SendTrustedRootCert" -> "SendNOC" [1653471969.812357][30157:30162] CHIP:CTL: Performing next commissioning step "SendNOC" @@ -244,7 +256,7 @@ tests: [1653471970.347439][30157:30162] CHIP:TOO: Secure Pairing Success [1653471970.347485][30157:30162] CHIP:CTL: Successfully finished commissioning step "SendNOC" - Verify in DUT as client side + Verify in TH as commissionee side: OpCreds: Received an AddNOC command disabled: true @@ -253,24 +265,29 @@ tests: "Commissioner configures operational network on TH if TH both supports and requires" verification: | - Verify in DUT as client side after commissioning - + Verify in DUT as commissioner side after commissioning: [1646909537.345068][3145:3150] CHIP:CTL: Received certificate signing request from the device + + Verifiy on TH as commissionee side: + [1660151567834] [99153:10411339] CHIP: [CTL] Received certificate signing request from the device + [1660151567834] [99153:10411339] CHIP: [CTL] Successfully finished commissioning step "SendOpCertSigningRequest" disabled: true - label: "Commissioner instructs Commissionee to connect to operational network if not already connected" verification: | - Verify in DUT as client side after commissioning - + Verify in DUT as commissioner side after commissioning: [1646909537.976592][3145:3150] CHIP:CTL: Operational credentials provisioned on device 0xffffac001730 [1646909537.976664][3145:3150] CHIP:TOO: Secure Pairing Success + + Verifiy on TH as commissionee side: + [1660152735.835717][648909:648909] CHIP:ZCL: OpCreds: successfully created fabric index 0x1 via AddNOC disabled: true - label: "Commissioner starts discovery of TH using Operational Discovery" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side: Commissioning stage next step: "WiFiNetworkEnable" -> "FindOperational" [1653471976.344532][30157:30162] CHIP:CTL: Performing next commissioning step "FindOperational" @@ -287,12 +304,18 @@ tests: [1653471976.348732][30157:30162] CHIP:DIS: Mrp Interval idle: 5000 ms [1653471976.348762][30157:30162] CHIP:DIS: Mrp Interval active: 300 ms [1653471976.349059][30157:30162] CHIP:DIS: UDP:[fe80::e65f:1ff:fe0f:2753%eth0]:5540: new best score: 3 + + Verifiy on TH as commissionee side: + [1660152735.835315][648909:648909] CHIP:DIS: Broadcasting mDns reply for query from fe80::808c:7ff:fefd:3b1 + [1660152735.835522][648909:648909] CHIP:DIS: mDNS service published: _matter._tcp + [1660152735.835565][648909:648909] CHIP:DMG: Endpoint 0, Cluster 0x0000_003E update version to 553aae1 + [1660152735.835594][648909:648909] CHIP:DMG: Endpoint 0, Cluster 0x0000_003E update version to 553aae2 disabled: true - label: "Commissioner opens a CASE session with TH over operational network" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side: CASE Server enabling CASE session setups [1653471957.713139][10713:10713] CHIP:SVR: Joining Multicast groups @@ -303,16 +326,18 @@ tests: - label: "Commissioner sends CommissioningComplete command" verification: | - Received CommissioningComplete response - + Verify in DUT as commissioner side: CHIP:CTL: Received CommissioningComplete response + + Verifiy on TH as commissionee side: + [1660154248.898113][7143:7143] CHIP:SVR: Commissioning completed successfully disabled: true - label: "Commissioning channel between the Commissioner and Commissionee is terminated." verification: | - Verify in DUT as client side + Verify in DUT as commissioner side: CHIP:CTL: Successfully finished commissioning step "SendComplete" CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup" @@ -326,4 +351,9 @@ tests: CHIP:DL: Closing BLE GATT connection (con 0xffff9c04df70) CHIP:CTL: Successfully finished commissioning step "Cleanup" CHIP:TOO: Device commissioning completed with success + + Verify on TH as commissionee side: + [1660154249.008047][7143:7143] CHIP:IN: Expiring all PASE sessions + [1660154249.008069][7143:7143] CHIP:IN: SecureSession[0xaaab09155000]: MarkForEviction Type:1 LSID:5786 + [1660154249.008090][7143:7143] CHIP:SC: SecureSession[0xaaab09155000]: Moving from state "kActive" --> "kPendingEviction" disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml index dbd0be9c671393..8a641bdd92815e 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml @@ -25,6 +25,18 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be WiFi or Thread. + + 2 - 5.5 - Commissionee is not connected to an operational network + disabled: true + - label: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" @@ -36,9 +48,9 @@ tests: "Commissioner and Commissionee discover each other and connect via the discovery mode applicable for the DUT." verification: | - Verify in TH as server side: start BLE Advertising by specific DUT implementation + Verify in TH as commissionee side: start BLE Advertising by specific DUT implementation - Verify in DUT as client side: start commissioning process(need to obtain the Thread dataset first) + Verify in DUT as commissioner side: start commissioning process(need to obtain the Thread dataset first) ./chip-tool pairing ble-thread 1 hex:0e080000000000010000000300000f35060004001fffe0020811111111222222220708fd27e57b1b1e22d9051000112233445566778899aabbccddeeff030e4f70656e54687265616444656d6f01021234041061e1206d2c2b46e079eb775f41fc72190c0402a0fff8 20202021 3840 disabled: true @@ -47,7 +59,7 @@ tests: "Establish encryption keys with Password Authenticated Session Establishment on the commissioning channel" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:SC: Received PBKDF param response disabled: true @@ -56,7 +68,7 @@ tests: "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s (the autonomously Fail-safe timer length set by Commissionee)" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:CTL: Arming failsafe (60 seconds) disabled: true @@ -66,13 +78,13 @@ tests: Commissionee." PICS: MCORE.COM.WIRELESS verification: | - Verify in DUT as client side + Verify in DUT as commissioner side Performing next commissioning step "ConfigRegulatory" [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0) - Verify in TH as server side + Verify in TH as commissionee side NVS set: chip-config/regulatory-location = 0 (0x0) disabled: true @@ -80,7 +92,7 @@ tests: "Commissioner requests operational CSR from Commissionee with OperationalCSRRequest command" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:CTL: Sending CSR request to 0xffffa4001730 device CHIP:DMG: ICR moving to [AddingComm] @@ -144,7 +156,7 @@ tests: "Commissioner configures operational credentials on DUT if not previously installed" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side [1651218829.220063][3273:3278] CHIP:CTL: Sending root certificate to the device [1651218829.220201][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -198,7 +210,7 @@ tests: "Commissioner configures itself as administrator in ACL on TH if needed" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side [1651218829.457248][3273:3278] CHIP:CTL: Sending operational certificate chain to the device [1651218829.457372][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -254,7 +266,7 @@ tests: "Commissioner configures operational network on TH if TH both supports and requires" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side [1651218833.995054][3273:3278] CHIP:CTL: Adding thread network [1651218833.995176][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -306,7 +318,7 @@ tests: "Commissioner instructs Commissionee to connect to operational network if not already connected" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side [1651218834.137891][3273:3278] CHIP:CTL: Enabling thread network [1651218834.138014][3273:3278] CHIP:DMG: ICR moving to [AddingComm] @@ -359,7 +371,7 @@ tests: "Commissioning channel between the Commissioner and Commissionee is terminated." verification: | - 1. Verify the channel was terminated on DUT=chip-tool + Verify the channel was terminated on DUT as commissioner side: [1651271753284] [23287:743790] CHIP: [CTL] Received CommissioningComplete response [1651271753284] [23287:743790] CHIP: [CTL] Successfully finished commissioning step "SendComplete" [1651271753284] [23287:743790] CHIP: [CTL] Commissioning stage next step: "SendComplete" -> "Cleanup" @@ -370,7 +382,7 @@ tests: - label: "Commissioner starts discovery of TH using Operational Discovery" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:DL: Avahi resolve found CHIP:DIS: Node ID resolved for 0x0000000000000001 @@ -381,7 +393,7 @@ tests: - label: "Commissioner opens a CASE session with TH over operational network" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:SC: Sent Sigma1 msg CHIP:CTL: Address resolved for node: 0x0000000000000001 @@ -420,7 +432,7 @@ tests: - label: "Commissioner sends CommissioningComplete command" verification: | - Verify in DUT as client side + Verify in DUT as commissioner side CHIP:CTL: Received CommissioningComplete response CHIP:CTL: Rendezvous cleanup diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml index cbf22f85473687..b6ba6b2d73b862 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml @@ -26,6 +26,17 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be WiFi or Thread. + 2 - 5.5 - Commissionee can either be a Matter device which is already on a network or the test harness connected to the network. + disabled: true + - label: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml index 18bea24ee8c4f2..95b80018c71c01 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml @@ -26,6 +26,17 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Preconditions" + verification: | + 1 - 5.5 - Commissioner is on a network. - The network can either be WiFi or Thread. + 2 - 5.5 - Commissionee is not connected to an operational network + disabled: true + - label: "Commissioner has regulatory and fabric information available and has accurate date, time and timezone" @@ -758,3 +769,8 @@ tests: CHIP:CTL: Rendezvous cleanup CHIP:TOO: Device commissioning completed with success disabled: true + + - label: "" + verification: | + verification step to be updated. + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml index 98ceb571b3902a..7e181f2c075a3d 100644 --- a/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml +++ b/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml @@ -26,9 +26,14 @@ config: endpoint: 0 tests: + - label: "Preconditions" + verification: | + 1 - Commissioner is on an operational network and has accurate date, time, timezone, regulatory, and fabric information available. + disabled: true + - label: "TH receives Onboarding Payload from the DUT" verification: | - 1. Parse the DUT"s QR Code using the TH commissioner: chip-tool + 1. Parse the DUT commissionee QR Code using the TH commissioner: chip-tool $ ./chip-tool payload parse-setup-payload MT:-24J029Q00KA0648G00 [1657230447725] [31078:16782733] CHIP: [SPL] Parsing base38Representation: MT:-24J029Q00KA0648G00 [1657230447725] [31078:16782733] CHIP: [SPL] Version: 0 @@ -43,24 +48,36 @@ tests: disabled: true - label: - "TH fetches commissioning data from Distributed Compliance Ledger - (DCL)" + "Follow any custom steps, guided by a service provided by the DUTs + manufacturer for initial device setup, then place the DUT Commissionee + into commissioning mode." verification: | - 1. TH fetches the DCL from DUT"s DCL - 2. Verify that DCL contains the criteria: - - CommissioningCustomFlow field = 2 - - CommissioningModeInitialStepsHint bit 0 (Power Cycle) = 0 and bit 1 (Device Manufacturer URL) = 1 - - CommissioningCustomFlowURL populated with a URL that uses https schema - disabled: true + 1. Follow DUT vendor-specific steps to put DUT into commissioning mode - - label: - "TH uses the provided URL to guide user on how to put DUT in a state - that allows commissioning" - verification: | - 1. Follow steps from DCL"s URL given + 2. Verify DUT is advertising in commissioning mode. On DUT, + + $ ./chip-tool discover commissionables + Verify in TH as commissioner side: + + [1651192893436] [15304:442604] CHIP: [DL] Mdns: OnNewAddress interface: 24 ip:fe80::dea6:32ff:fe8d:6e32 + [1651192893436] [15304:442604] CHIP: [DIS] Vendor ID: 65521 + [1651192893436] [15304:442604] CHIP: [DIS] Product ID: 32769 + [1651192893436] [15304:442604] CHIP: [DIS] Long Discriminator: 3840 + [1651192893436] [15304:442604] CHIP: [DIS] Pairing Hint: 33 + [1651192893436] [15304:442604] CHIP: [DIS] Hostname: DCA6328D6E320000 [1651192893436] [15304:442604] CHIP: [DIS] Instance Name: 914762134DA8E7D1 + [1651192893436] [15304:442604] CHIP: [DIS] IP Address #1: fe80::dea6:32ff:fe8d:6e32 + [1651192893436] [15304:442604] CHIP: [DIS] Port: 5540 + [1651192893436] [15304:442604] CHIP: [DIS] Commissioning Mode: 1 + [1651192893436] [15304:442604] CHIP: [DIS] Mrp Interval idle: 5000 ms + [1651192893436] [15304:442604] CHIP: [DIS] Mrp Interval active: 300 ms disabled: true - label: "DUT is commissioned by the TH" verification: | 1. Verify that the DUT is commissioned to the TH commissioner successfully + + Verify on the TH as commissioner side: + CHIP:CTL: Received CommissioningComplete response + CHIP:CTL: Rendezvous cleanup + CHIP:TOO: Device commissioning completed with success disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml index 206342e67e963a..c2c35d4ac70359 100644 --- a/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml @@ -24,11 +24,37 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Mandatory cluster requirements for each device type can be found here. + github link + Use the correct json required for the DUT, this file is PIXIT.DESC.DeviceTypeConformanceList. + disabled: true + + - label: "Precondition" + verification: | + TH and DUT are commissioned + disabled: true + - label: "TH reads DeviceTypeList and PartsList attributes from DUT for Endpoint 0" PICS: DESC.S.A0000 && DESC.S.A0003 verification: | + Send a read request to the DUT using chip-tool to read the partsList attribute in the descriptor cluster on Endpoint 0. + Make a note of all the items(Endpoint id’s) in the list. In the below example there are 2 endpoint id"s listed [1,2] + + ./chip-tool descriptor read parts-list 1 0 + + Verify PartsList response on the TH (Chip-tool) Log: + + [1641456769.777217][16238:16244] CHIP:DMG: SuppressResponse = true, + [1641456769.777267][16238:16244] CHIP:DMG: } + [1641456769.777839][16238:16244] CHIP:TOO: Descriptor.PartsList response: 2 entries + [1641456769.777925][16238:16244] CHIP:TOO: [1]: 1 + [1641456769.777978][16238:16244] CHIP:TOO: [2]: 2 + [1641456769.778080][16238:16244] CHIP:EM: Sending Standalone Ack for MessageCounter:2830202 on exchange 38042i + ./chip-tool descriptor read device-list 1 0 Verify DeviceList response on the TH (Chip-tool) Log: @@ -46,6 +72,19 @@ tests: Endpoint supported by DUT (except Endpoint 0)." PICS: DESC.S.A0000 && DESC.S.A0003 verification: | + For all the Endpoint id’s listed from the previous step run the following steps. The device type should correspond to the id value in the device_type.json + Chip tool outputs all values in integer, convert to hex before comparing. + + + ./chip-tool descriptor read parts-list 1 1 + + Verify parts-list response on the TH(Chip-tool) Log: + + [1660127331.634565][46437:46442] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 934889243 + [1660127331.634631][46437:46442] CHIP:TOO: parts list: 0 entries + + + ./chip-tool descriptor read device-list 1 1 Verify DeviceList response on the TH(Chip-tool) Log: @@ -57,54 +96,114 @@ tests: [1657200303.724594][2509:2514] CHIP:TOO: Type: 256 [1657200303.724621][2509:2514] CHIP:TOO: Revision: 1 [1657200303.724647][2509:2514] CHIP:TOO: } + + + + ./chip-tool descriptor read parts-list 1 2 + + Verify parts-list response on the TH(Chip-tool) Log: + + [1660127879.565330][46472:46477] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 1237610137 + [1660127879.565473][46472:46477] CHIP:TOO: parts list: 0 entries + + ./chip-tool descriptor read device-list 1 2 + + Verify DeviceList response on the TH(Chip-tool) Log: + + [1660127725.802512][46460:46465] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1237610137 + [1660127725.802614][46460:46465] CHIP:TOO: device list: 1 entries + [1660127725.802669][46460:46465] CHIP:TOO: [1]: { + [1660127725.802707][46460:46465] CHIP:TOO: Type: 256 + [1660127725.802745][46460:46465] CHIP:TOO: Revision: 1 + [1660127725.802781][46460:46465] CHIP:TOO: } disabled: true - label: "TH reads ServerList attribute." PICS: DESC.S.A0001 verification: | - ./chip-tool descriptor read server-list 1 0 + For all the Endpoint id’s listed in step 1a run the following steps. For all the server list entries listed in the output - Convert them to Hex values. For example 29 is 0x001D. Verify that these are also present in the device_type.json. Every server cluster listed in the JSON should correspond to a number here in the output. + + ./chip-tool descriptor read server-list 1 1 Verify server list on the TH (Chip-tool) Log: - [1654155402.956829][3701:3706] CHIP:TOO: server list: 26 entries - [1654155402.956863][3701:3706] CHIP:TOO: [1]: 3 - [1654155402.956889][3701:3706] CHIP:TOO: [2]: 4 - [1654155402.956914][3701:3706] CHIP:TOO: [3]: 29 - [1654155402.956939][3701:3706] CHIP:TOO: [4]: 30 - [1654155402.956963][3701:3706] CHIP:TOO: [5]: 31 - [1654155402.956988][3701:3706] CHIP:TOO: [6]: 40 - [1654155402.957012][3701:3706] CHIP:TOO: [7]: 42 - [1654155402.957037][3701:3706] CHIP:TOO: [8]: 43 - [1654155402.957061][3701:3706] CHIP:TOO: [9]: 44 - [1654155402.957086][3701:3706] CHIP:TOO: [10]: 45 - [1654155402.957110][3701:3706] CHIP:TOO: [11]: 46 - [1654155402.957135][3701:3706] CHIP:TOO: [12]: 47 - [1654155402.957159][3701:3706] CHIP:TOO: [13]: 48 - [1654155402.957183][3701:3706] CHIP:TOO: [14]: 49 - [1654155402.957207][3701:3706] CHIP:TOO: [15]: 50 - [1654155402.957231][3701:3706] CHIP:TOO: [16]: 51 - [1654155402.957256][3701:3706] CHIP:TOO: [17]: 52 - [1654155402.957280][3701:3706] CHIP:TOO: [18]: 53 - [1654155402.957304][3701:3706] CHIP:TOO: [19]: 54 - [1654155402.957328][3701:3706] CHIP:TOO: [20]: 55 - [1654155402.957352][3701:3706] CHIP:TOO: [21]: 60 - [1654155402.957376][3701:3706] CHIP:TOO: [22]: 62 - [1654155402.957400][3701:3706] CHIP:TOO: [23]: 63 - [1654155402.957424][3701:3706] CHIP:TOO: [24]: 64 - [1654155402.957449][3701:3706] CHIP:TOO: [25]: 65 - [1654155402.957473][3701:3706] CHIP:TOO: [26]: 1029 + [1660149731.921734][49539:49544] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 2312399478 + [1660149731.921749][49539:49544] CHIP:TOO: server list: 44 entries + [1660149731.921753][49539:49544] CHIP:TOO: [1]: 3 + [1660149731.921755][49539:49544] CHIP:TOO: [2]: 4 + [1660149731.921758][49539:49544] CHIP:TOO: [3]: 5 + [1660149731.921760][49539:49544] CHIP:TOO: [4]: 6 + [1660149731.921762][49539:49544] CHIP:TOO: [5]: 7 + [1660149731.921765][49539:49544] CHIP:TOO: [6]: 8 + [1660149731.921767][49539:49544] CHIP:TOO: [7]: 15 + [1660149731.921769][49539:49544] CHIP:TOO: [8]: 29 + [1660149731.921772][49539:49544] CHIP:TOO: [9]: 30 + [1660149731.921774][49539:49544] CHIP:TOO: [10]: 37 + [1660149731.921776][49539:49544] CHIP:TOO: [11]: 47 + [1660149731.921779][49539:49544] CHIP:TOO: [12]: 59 + [1660149731.921781][49539:49544] CHIP:TOO: [13]: 64 + [1660149731.921783][49539:49544] CHIP:TOO: [14]: 65 + [1660149731.921785][49539:49544] CHIP:TOO: [15]: 69 + [1660149731.921787][49539:49544] CHIP:TOO: [16]: 80 + [1660149731.921790][49539:49544] CHIP:TOO: [17]: 257 + [1660149731.921792][49539:49544] CHIP:TOO: [18]: 258 + [1660149731.921795][49539:49544] CHIP:TOO: [19]: 259 + [1660149731.921797][49539:49544] CHIP:TOO: [20]: 512 + [1660149731.921799][49539:49544] CHIP:TOO: [21]: 513 + [1660149731.921801][49539:49544] CHIP:TOO: [22]: 514 + [1660149731.921804][49539:49544] CHIP:TOO: [23]: 516 + [1660149731.921806][49539:49544] CHIP:TOO: [24]: 768 + [1660149731.921808][49539:49544] CHIP:TOO: [25]: 1024 + [1660149731.921810][49539:49544] CHIP:TOO: [26]: 1026 + [1660149731.921812][49539:49544] CHIP:TOO: [27]: 1027 + [1660149731.921814][49539:49544] CHIP:TOO: [28]: 1028 + [1660149731.921817][49539:49544] CHIP:TOO: [29]: 1029 + [1660149731.921819][49539:49544] CHIP:TOO: [30]: 1030 + [1660149731.921821][49539:49544] CHIP:TOO: [31]: 1283 + [1660149731.921824][49539:49544] CHIP:TOO: [32]: 1284 + [1660149731.921826][49539:49544] CHIP:TOO: [33]: 1285 + [1660149731.921828][49539:49544] CHIP:TOO: [34]: 1286 + [1660149731.921830][49539:49544] CHIP:TOO: [35]: 1287 + [1660149731.921832][49539:49544] CHIP:TOO: [36]: 1288 + [1660149731.921835][49539:49544] CHIP:TOO: [37]: 1289 + [1660149731.921837][49539:49544] CHIP:TOO: [38]: 1290 + [1660149731.921839][49539:49544] CHIP:TOO: [39]: 1291 + [1660149731.921841][49539:49544] CHIP:TOO: [40]: 1292 + [1660149731.921844][49539:49544] CHIP:TOO: [41]: 1293 + [1660149731.921846][49539:49544] CHIP:TOO: [42]: 1294 + [1660149731.921848][49539:49544] CHIP:TOO: [43]: 2820 + [1660149731.921851][49539:49544] CHIP:TOO: [44]: 4294048773 + + + ./chip-tool descriptor read server-list 1 2 + + [1660146145.982691][46811:46816] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1051414887 + [1660146145.982733][46811:46816] CHIP:TOO: server list: 5 entries + [1660146145.982744][46811:46816] CHIP:TOO: [1]: 4 + [1660146145.982752][46811:46816] CHIP:TOO: [2]: 6 + [1660146145.982759][46811:46816] CHIP:TOO: [3]: 29 + [1660146145.982771][46811:46816] CHIP:TOO: [4]: 47 + [1660146145.982778][46811:46816] CHIP:TOO: [5]: 1030 disabled: true - label: "TH reads ClientList attribute" PICS: DESC.S.A0002 verification: | - ./chip-tool descriptor read client-list 1 0 + For all the Endpoint id’s listed in step 1a run the following steps. For all the client list entries listed in the output - Convert them to Hex values. For example 29 is 0x001D. Verify that these are also present in the device_type.json. Every server cluster listed in the JSON should correspond to a number here in the output. + + + ./chip-tool descriptor read client-list 1 1 Verify client list on the TH (Chip-tool) Log: + [1660195618.042544][2905:2910] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 2955150741 + [1660195618.042605][2905:2910] CHIP:TOO: client list: 0 entries - [1650281818.533446][9679:9684] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 1976976904 - [1650281818.533514][9679:9684] CHIP:TOO: client list: 1 entries - [1650281818.533563][9679:9684] CHIP:TOO: [1]: 41 + ./chip-tool descriptor read client-list 1 2 + + Verify client list on the TH (Chip-tool) Log: + + [1660146160.390200][46818:46823] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 1051414887 + [1660146160.390211][46818:46823] CHIP:TOO: client list: 0 entries disabled: true - label: "TH reads PartsList attribute." @@ -127,5 +226,43 @@ tests: to make sure all mandatory (and applicable optional) attributes/commands are implemented." verification: | - verification step to be updated. + FOR ENDPOINTS 2 + + + ./chip-tool descriptor read parts-list 1 2 + + Verify parts-list response on the TH(Chip-tool) Log: + + [1660127879.565330][46472:46477] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0003 DataVersion: 1237610137 + [1660127879.565473][46472:46477] CHIP:TOO: parts list: 0 entries + + ./chip-tool descriptor read device-list 1 2 + + Verify DeviceList response on the TH(Chip-tool) Log: + + [1660127725.802512][46460:46465] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0000 DataVersion: 1237610137 + [1660127725.802614][46460:46465] CHIP:TOO: device list: 1 entries + [1660127725.802669][46460:46465] CHIP:TOO: [1]: { + [1660127725.802707][46460:46465] CHIP:TOO: Type: 256 + [1660127725.802745][46460:46465] CHIP:TOO: Revision: 1 + [1660127725.802781][46460:46465] CHIP:TOO: } + + ./chip-tool descriptor read server-list 1 2 + + Verify server list on the TH (Chip-tool) Log: + + [1660146145.982691][46811:46816] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0001 DataVersion: 1051414887 + [1660146145.982733][46811:46816] CHIP:TOO: server list: 5 entries + [1660146145.982744][46811:46816] CHIP:TOO: [1]: 4 + [1660146145.982752][46811:46816] CHIP:TOO: [2]: 6 + [1660146145.982759][46811:46816] CHIP:TOO: [3]: 29 + [1660146145.982771][46811:46816] CHIP:TOO: [4]: 47 + [1660146145.982778][46811:46816] CHIP:TOO: [5]: 1030 + + ./chip-tool descriptor read client-list 1 2 + + Verify client list on the TH (Chip-tool) Log: + + [1660146160.390200][46818:46823] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_001D Attribute 0x0000_0002 DataVersion: 1051414887 + [1660146160.390211][46818:46823] CHIP:TOO: client list: 0 entries disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml index 86a6beb3e9b8b4..fd9b809155774e 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml @@ -44,12 +44,16 @@ tests: scenario)" PICS: DRLK.S.E00 && DRLK.S.DetectLockJammed verification: | - To trigger the event give below command in another terminal of DUT + To trigger the event give below command by opening an another terminal of DUT echo "{"Cmd": "SendDoorLockAlarm", "Params": { "EndpointId": 1, "AlarmCode": 0 } }" > /tmp/chip_lock_app_fifo- (PID of lock-app) For example : echo "{"Cmd": "SendDoorLockAlarm", "Params": { "EndpointId": 1, "AlarmCode": 0 } }" > /tmp/chip_lock_app_fifo-3940 + disabled: true + - label: "TH reads the DoorLockAlarm event from DUT" + PICS: DRLK.S.E00 + verification: | ./chip-tool doorlock read-event door-lock-alarm 1 1 Verify "TH receives the DoorLockAlarm event and AlarmCode is set to LockJammed " on the TH(Chip-tool) Log: @@ -63,37 +67,16 @@ tests: [1659521453.110591][4098:4103] CHIP:TOO: } disabled: true - - label: "TH reads the DoorLockAlarm event from DUT" - PICS: DRLK.S.E00 - verification: | - verification step to be updated. - disabled: true - - label: "Trigger the DUT to generate DoorStateChange Event" PICS: DRLK.S.F05 && DRLK.S.E01 verification: | To trigger the event give below command in another terminal of DUT echo "{"Cmd": "SetDoorState", "Params": { "EndpointId": 1, "DoorState": 1 } }" > /tmp/chip_lock_app_fifo-4055 (4055 - value changes) - - ./chip-tool doorlock read-event door-state-change 1 1 - - Verify "TH recieve the DoorLockAlaram event and DoorState set to DoorClosed " on the TH(Chip-tool) Log: - - [1659521576.156075][4109:4114] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Event 0x0000_0001 - [1659521576.156118][4109:4114] CHIP:TOO: Event number: 1 - [1659521576.156150][4109:4114] CHIP:TOO: Priority: Critical - [1659521576.156181][4109:4114] CHIP:TOO: Timestamp: 23466089 - [1659521576.156277][4109:4114] CHIP:TOO: DoorStateChange: { - [1659521576.156331][4109:4114] CHIP:TOO: DoorState: 1 - [1659521576.156368][4109:4114] CHIP:TOO: } disabled: true - label: "TH reads the DoorStateChange event from DUT" PICS: DRLK.S.F05 && DRLK.S.E01 verification: | - To trigger the event give below command in another terminal of DUT - echo "{"Cmd": "SetDoorState", "Params": { "EndpointId": 1, "DoorState": 1 } }" > /tmp/chip_lock_app_fifo-4055 (4055 - value changes) - ./chip-tool doorlock read-event door-state-change 1 1 Verify "TH recieve the DoorLockAlaram event and DoorState set to DoorClosed " on the TH(Chip-tool) Log: diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml index 18eacd39f1aae0..82e79debbf4c59 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_2.yaml @@ -14,6 +14,9 @@ name: 111.2.2. [TC-DRLK-2.2] Verification for Door lock command[DUT-Server] +PICS: + - DRLK.S + config: nodeId: 0x12344321 cluster: "Door Lock" diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_3.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_3.yaml index 3f4e53638ed919..b0b2097a8e1d47 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_3.yaml @@ -14,6 +14,9 @@ name: 111.2.3. [TC-DRLK-2.3] Verification for Unlock Door command [DUT-Server] +PICS: + - DRLK.S + config: nodeId: 0x12344321 cluster: "Door Lock" diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml index 6dc3140f82faf5..e0dba94eac3990 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads LockState from the TH." PICS: DRLK.C.A0000 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml index 652cf20cf02915..9913e84fb2f000 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT sends Lock Door command to TH." PICS: DRLK.C.C00.Tx verification: | @@ -864,3 +869,35 @@ tests: [1657115878.585752][8804:8804] CHIP:ZCL: Found unoccupied credential [endpoint=1,index=1] [1657115878.585802][8804:8804] CHIP:ZCL: [clearCredential] Ignored attempt to clear unoccupied credential slot [endpointId=1,credentialType=1,credentialIndex=1,modifier=1] disabled: true + + - label: "" + verification: | + ./chip-tool doorlock clear-user 1 1 1 --timedInteractionTimeoutMs 1000 + + Verify the " clear-user command response" on TH(lock-app): + + + [1658399779.246157][2474:2474] CHIP:DMG: CommandDataIB = + [1658399779.246193][2474:2474] CHIP:DMG: { + [1658399779.246219][2474:2474] CHIP:DMG: CommandPathIB = + [1658399779.246258][2474:2474] CHIP:DMG: { + [1658399779.246301][2474:2474] CHIP:DMG: EndpointId = 0x1, + [1658399779.246336][2474:2474] CHIP:DMG: ClusterId = 0x101, + [1658399779.246381][2474:2474] CHIP:DMG: CommandId = 0x1d, + [1658399779.246411][2474:2474] CHIP:DMG: }, + [1658399779.246452][2474:2474] CHIP:DMG: + [1658399779.246480][2474:2474] CHIP:DMG: CommandFields = + [1658399779.246519][2474:2474] CHIP:DMG: { + [1658399779.246562][2474:2474] CHIP:DMG: 0x0 = 1, + [1658399779.246595][2474:2474] CHIP:DMG: }, + [1658399779.246631][2474:2474] CHIP:DMG: }, + [1658399779.246662][2474:2474] CHIP:DMG: + [1658399779.246694][2474:2474] CHIP:DMG: ], + [1658399779.246732][2474:2474] CHIP:DMG: + [1658399779.246757][2474:2474] CHIP:DMG: InteractionModelRevision = 1 + [1658399779.246788][2474:2474] CHIP:DMG: }, + [1658399779.246862][2474:2474] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=a + [1658399779.246899][2474:2474] CHIP:DMG: AccessControl: allowed + [1658399779.246926][2474:2474] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_001D + [1658399779.246958][2474:2474] CHIP:ZCL: [ClearUser] Incoming command [endpointId=1,userIndex=1] + disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml index 749d10874e91d8..b909f1aea6b7d7 100644 --- a/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml @@ -27,24 +27,54 @@ config: tests: - label: "Note" verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + + - label: "Note" + verification: | + "NOTE: https://github.com/project-chip/connectedhomeip/tree/master/examples/lock-app/linux#readme + Events to be executed as following + 1. Compile app using below command in connectedhomeip folder + a. ./scripts/run_in_build_env.sh ./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-clang build + b. ./scripts/run_in_build_env.sh ./scripts/build/build_examples.py --target linux-arm64-all-clusters-no-ble-asan-libfuzzer-clang build + 2. Build respective app (lock-app) + 3. Commission DUT to TH + 4. Open 2nd terminal of DUT and provide the below command to obtain PID of DUT + ps -aef|grep lock-app + 5. Follow the Verification step below to generate the event in 2nd terminal of DUT " disabled: true - label: "TH will initiate DoorLockAlarm Event (LockJammed scenario)" PICS: DRLK.C.E00 verification: | + To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in lock-app to generate the event, Vendor Dut should have capability to generate this event) + + + 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) and TH as lock-app. + + To generate the event give below command + echo "{"Cmd": "SendDoorLockAlarm", "Params": { "EndpointId": 1, "AlarmCode": 0 } }" > /tmp/chip_lock_app_fifo- (PID of lock app) + ./chip-tool doorlock read-event door-lock-alarm 1 1 Verify "DUT receives the DoorLockAlarm event " on the TH(Lock-app) Log: - [1659520755.536021][3987:3992] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Event 0x0000_0000 - [1659520755.536048][3987:3992] CHIP:TOO: Event number: 4 - [1659520755.536069][3987:3992] CHIP:TOO: Priority: Critical - [1659520755.536089][3987:3992] CHIP:TOO: Timestamp: 22818908 - [1659520755.536198][3987:3992] CHIP:TOO: DoorLockAlarm: { - [1659520755.536234][3987:3992] CHIP:TOO: AlarmCode: 0 - [1659520755.536259][3987:3992] CHIP:TOO: } - [1659520755.536347][3987:3992] CHIP:EM: Sending Standalone Ack for MessageCounter:229373286 on exchange 22555i + [1660933624.278924][18319:18319] CHIP:DMG: ReadRequestMessage = + [1660933624.278964][18319:18319] CHIP:DMG: { + [1660933624.278987][18319:18319] CHIP:DMG: EventPathIBs = + [1660933624.279023][18319:18319] CHIP:DMG: [ + [1660933624.279116][18319:18319] CHIP:DMG: EventPath = + [1660933624.279155][18319:18319] CHIP:DMG: { + [1660933624.279192][18319:18319] CHIP:DMG: Endpoint = 0x1, + [1660933624.279232][18319:18319] CHIP:DMG: Cluster = 0x101, + [1660933624.279271][18319:18319] CHIP:DMG: Event = 0x0, + [1660933624.279300][18319:18319] CHIP:DMG: }, + [1660933624.279337][18319:18319] CHIP:DMG: + [1660933624.279360][18319:18319] CHIP:DMG: ], + [1660933624.279397][18319:18319] CHIP:DMG: + [1660933624.279422][18319:18319] CHIP:DMG: isFabricFiltered = true, + [1660933624.279455][18319:18319] CHIP:DMG: InteractionModelRevision = 1 + [1660933624.279478][18319:18319] CHIP:DMG: }, disabled: true - label: "DUT sends the Unlock Door command to the TH with valid PINCode" @@ -75,35 +105,47 @@ tests: [1658399917.775273][2474:2474] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_001A [1658399917.775327][2474:2474] CHIP:ZCL: [SetUser] Incoming command [endpointId=1,userIndex=1] - ./chip-tool doorlock set-credential 0 "{ "credentialType" : 1 , "credentialIndex" : 1 }" 123456 1 0 0 1 1 --timedInteractionTimeoutMs 1000 + ./chip-tool doorlock set-credential 0 "{ "credentialType" : 1 , "credentialIndex" : 1 }" 123456 1 null null 1 1 --timedInteractionTimeoutMs 1000 Verify "DUT receives the set-credential response " on the TH(Lock-app) Log: - [1658400025.688730][2474:2474] CHIP:DMG: CommandFields = - [1658400025.688777][2474:2474] CHIP:DMG: { - [1658400025.688822][2474:2474] CHIP:DMG: 0x0 = 0, - [1658400025.688873][2474:2474] CHIP:DMG: 0x1 = - [1658400025.688922][2474:2474] CHIP:DMG: { - [1658400025.688964][2474:2474] CHIP:DMG: 0x0 = 1, - [1658400025.689016][2474:2474] CHIP:DMG: 0x1 = 1, - [1658400025.689058][2474:2474] CHIP:DMG: }, - [1658400025.689110][2474:2474] CHIP:DMG: 0x2 = [ - [1658400025.689161][2474:2474] CHIP:DMG: 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, - [1658400025.689209][2474:2474] CHIP:DMG: ] - [1658400025.689261][2474:2474] CHIP:DMG: 0x3 = 1, - [1658400025.689312][2474:2474] CHIP:DMG: 0x4 = 0, - [1658400025.689353][2474:2474] CHIP:DMG: 0x5 = 0, - [1658400025.689403][2474:2474] CHIP:DMG: }, - [1658400025.689436][2474:2474] CHIP:DMG: }, - [1658400025.689477][2474:2474] CHIP:DMG: - [1658400025.689529][2474:2474] CHIP:DMG: ], - [1658400025.689575][2474:2474] CHIP:DMG: - [1658400025.689619][2474:2474] CHIP:DMG: InteractionModelRevision = 1 - [1658400025.689648][2474:2474] CHIP:DMG: }, - [1658400025.689747][2474:2474] CHIP:DMG: AccessControl: checking f=1 a=c s=0x000000000001B669 t= c=0x0000_0101 e=1 p=a - [1658400025.689802][2474:2474] CHIP:DMG: AccessControl: allowed - [1658400025.689836][2474:2474] CHIP:DMG: Received command for Endpoint=1 Cluster=0x0000_0101 Command=0x0000_0022 - [1658400025.689909][2474:2474] CHIP:ZCL: [SetCredential] Incoming command [endpointId=1] + [1660931208.583139][18319:18319] CHIP:DMG: InvokeRequestMessage = + [1660931208.583184][18319:18319] CHIP:DMG: { + [1660931208.583226][18319:18319] CHIP:DMG: suppressResponse = false, + [1660931208.583275][18319:18319] CHIP:DMG: timedRequest = true, + [1660931208.583319][18319:18319] CHIP:DMG: InvokeRequests = + [1660931208.583381][18319:18319] CHIP:DMG: [ + [1660931208.583426][18319:18319] CHIP:DMG: CommandDataIB = + [1660931208.583475][18319:18319] CHIP:DMG: { + [1660931208.583522][18319:18319] CHIP:DMG: CommandPathIB = + [1660931208.583579][18319:18319] CHIP:DMG: { + [1660931208.583636][18319:18319] CHIP:DMG: EndpointId = 0x1, + [1660931208.583698][18319:18319] CHIP:DMG: ClusterId = 0x101, + [1660931208.583757][18319:18319] CHIP:DMG: CommandId = 0x22, + [1660931208.583813][18319:18319] CHIP:DMG: }, + [1660931208.583871][18319:18319] CHIP:DMG: + [1660931208.583923][18319:18319] CHIP:DMG: CommandFields = + [1660931208.583979][18319:18319] CHIP:DMG: { + [1660931208.584037][18319:18319] CHIP:DMG: 0x0 = 0, + [1660931208.584100][18319:18319] CHIP:DMG: 0x1 = + [1660931208.584158][18319:18319] CHIP:DMG: { + [1660931208.584220][18319:18319] CHIP:DMG: 0x0 = 1, + [1660931208.584289][18319:18319] CHIP:DMG: 0x1 = 1, + [1660931208.584353][18319:18319] CHIP:DMG: }, + [1660931208.584413][18319:18319] CHIP:DMG: 0x2 = [ + [1660931208.584473][18319:18319] CHIP:DMG: 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + [1660931208.584540][18319:18319] CHIP:DMG: ] (6 bytes) + [1660931208.584596][18319:18319] CHIP:DMG: 0x3 = 1, + [1660931208.584662][18319:18319] CHIP:DMG: 0x4 = NULL + [1660931208.584722][18319:18319] CHIP:DMG: 0x5 = NULL + [1660931208.584781][18319:18319] CHIP:DMG: }, + [1660931208.584834][18319:18319] CHIP:DMG: }, + [1660931208.584895][18319:18319] CHIP:DMG: + [1660931208.584938][18319:18319] CHIP:DMG: ], + [1660931208.584999][18319:18319] CHIP:DMG: + [1660931208.585043][18319:18319] CHIP:DMG: InteractionModelRevision = 1 + [1660931208.585086][18319:18319] CHIP:DMG: }, + ./chip-tool doorlock unlock-door 1 1 --timedInteractionTimeoutMs 1000 --PinCode 123456 @@ -163,18 +205,30 @@ tests: - label: "TH initiates DoorStateChange event with Doorstate set to DoorOpen" PICS: DRLK.C.F05 && DRLK.C.E01 verification: | + To trigger the event give below command in another terminal of DUT + echo "{"Cmd": "SetDoorState", "Params": { "EndpointId": 1, "DoorState": 1 } }" > /tmp/chip_lock_app_fifo- (PID of lock-app) + ./chip-tool doorlock read-event door-state-change 1 1 Verify "DUT receives DoorStateChange Event" on the TH(Lock-app) Log: - [1659521149.394340][4046:4051] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0101 Event 0x0000_0001 - [1659521149.394391][4046:4051] CHIP:TOO: Event number: 1 - [1659521149.394412][4046:4051] CHIP:TOO: Priority: Critical - [1659521149.394433][4046:4051] CHIP:TOO: Timestamp: 22783568 - [1659521149.394503][4046:4051] CHIP:TOO: DoorStateChange: { - [1659521149.394539][4046:4051] CHIP:TOO: DoorState: 1 - [1659521149.394564][4046:4051] CHIP:TOO: } - [1659521149.394654][4046:4051] CHIP:EM: Sending Standalone Ack for MessageCounter:231120057 on exchange 10153i + [1660933582.187791][18319:18319] CHIP:DMG: ReadRequestMessage = + [1660933582.187819][18319:18319] CHIP:DMG: { + [1660933582.187851][18319:18319] CHIP:DMG: EventPathIBs = + [1660933582.187877][18319:18319] CHIP:DMG: [ + [1660933582.187901][18319:18319] CHIP:DMG: EventPath = + [1660933582.187937][18319:18319] CHIP:DMG: { + [1660933582.187966][18319:18319] CHIP:DMG: Endpoint = 0x1, + [1660933582.188006][18319:18319] CHIP:DMG: Cluster = 0x101, + [1660933582.188035][18319:18319] CHIP:DMG: Event = 0x1, + [1660933582.188069][18319:18319] CHIP:DMG: }, + [1660933582.188100][18319:18319] CHIP:DMG: + [1660933582.188132][18319:18319] CHIP:DMG: ], + [1660933582.188159][18319:18319] CHIP:DMG: + [1660933582.188193][18319:18319] CHIP:DMG: isFabricFiltered = true, + [1660933582.188218][18319:18319] CHIP:DMG: InteractionModelRevision = 1 + [1660933582.188250][18319:18319] CHIP:DMG: }, + [1660933582.188328][18319:18319] CHIP:DMG: IM RH moving to [GeneratingReports] disabled: true - label: "DUT sends the Lock Door command to the TH with valid PINCode" diff --git a/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml index 2252e4fa8d01bb..f7a6ebbc7eeb10 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml @@ -15,9 +15,6 @@ name: 3.3.1. [TC-IDM-3.1] Write Request Action from DUT to TH. [{DUT_Client}] -PICS: - - MCORE.IDM.C.WriteRequest - config: nodeId: 0x12344321 cluster: "Basic" diff --git a/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml index 5ebd36b33d7d77..1fd77cd9e875d5 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml @@ -32,11 +32,6 @@ tests: Here the command to enter interactive mode:-- ./chip-tool interactive start disabled: true - - label: "Note" - verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. - disabled: true - - label: "TH sends Subscribe Request Message to DUT with EventRequests set to a specific event from a specific cluster on a specific endpoint on a diff --git a/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml b/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml index f9c15459f0130c..ab5421f1ded75d 100644 --- a/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT sends Read Request Message to the TH for a supported event." verification: | The cluster used in the below command is an example, User can use any supported chip cluster. diff --git a/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml index 46634220980848..45e15fe6bfd33d 100644 --- a/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml @@ -46,7 +46,7 @@ tests: - label: "TH writes xx-XX to SupportedLocales attribute" verification: | - ./chip-tool any write-by-id 0x002B 1 ""xx-XX"" 1 0 + ./chip-tool any write-by-id 0x002B 1 '"xx-XX"' 1 0 On TH(chip-tool) verify that DUT responds as UNSUPPORTED_WRITE [1653996674.832226][7281:7286] CHIP:DMG: WriteClient moving to [AwaitingDe] diff --git a/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml b/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml index b9caa8a2be326b..3dea75d005036b 100644 --- a/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml @@ -26,7 +26,7 @@ config: tests: - label: "Note" verification: | - Chip-tool command used below are an example to verify the DUT as client test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. disabled: true - label: "Commission DUT to TH" @@ -149,8 +149,3 @@ tests: [1659778463.618601][17263:17263] CHIP:DMG: IM RH moving to [GeneratingReports] [1659778463.618663][17263:17263] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 disabled: true - - - label: "" - verification: | - verification step to be updated. - disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml b/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml index d8e61b7df8e803..061f1b8d05ac29 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verifaction: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" @@ -633,9 +638,9 @@ tests: TH all-clusters-minimal-app does not support optional attributes To verify this behaviour send the below mentioned commands and check the result as unsupported attribute - ./chip-tool levelcontrol write on-off-transition-time 5 1 1 - ./chip-tool levelcontrol write on-transition-time 5 1 1 - ./chip-tool levelcontrol write off-transition-time 5 1 1 - ./chip-tool levelcontrol write default-move-rate 5 1 1 - ./chip-tool levelcontrol write start-up-current-level 5 1 1 + ./chip-tool levelcontrol write on-off-transition-time 5 1 1 + ./chip-tool levelcontrol write on-transition-time 5 1 1 + ./chip-tool levelcontrol write off-transition-time 5 1 1 + ./chip-tool levelcontrol write default-move-rate 5 1 1 + ./chip-tool levelcontrol write start-up-current-level 5 1 1 disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml b/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml index dedbb274dee5a3..095deb01323ba0 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml b/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml index e6653073d7a4b0..806b9c05f89290 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command + disabled: true + - label: "DUT reads the SupportedModes attribute from the TH" PICS: MOD.C.A0002 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml index ec53ad0c219e1b..63288a4d31c98d 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml @@ -24,17 +24,18 @@ config: endpoint: 0 tests: - - label: "Pre-conditions:" - verification: | - This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command - disabled: true - - label: "Note" verification: | - 1.To run this test case build the OTA Provider app in nRF connectedhomeip Docker . [ + 1.To run this test case build the OTA Provider app to be build in the nRF Environment setup . Follow this step to setup the nRF build environment using container. + https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/nrfconnect#using-docker-container-for-setup + + Once the build environmnet is ready , build teh OTA-Provider-App inside the container. Follow the below link to build the OTA-Provider app https://github.com/project-chip/connectedhomeip/tree/master/examples/ota-provider-app/linux - 2. Build all-cluster-app in docker + 2. Build all-cluster-app in docker or Flash the pre-built folder from the delivered image + + To build maually and flash follow steps explained in: + https://github.com/project-chip/connectedhomeip/tree/master/examples/all-clusters-app/nrfconnect#building west build -b nrf52840dk_nrf52840 -- -DCONF_FILE=prj_dfu.conf -DCONFIG_CHIP_LIB_SHELL=y @@ -42,7 +43,11 @@ tests: 3.Flash west flash --erase - 4.OTA Image needs to build on docker + 4.OTA Image needs to build on the docker environment as like in the first step inside the all-clusters-app folder. Refer the below link to build the OTA image with new version. + + https://github.com/project-chip/connectedhomeip/tree/master/examples/ota-requestor-app/linux#ota-requestor-app-linux + + To build the ota image with new version for nRF, use the following command inside the all-clusters-app folder , which will build matter.ota west build -b nrf52840dk_nrf52840 -d build2 -- -DCONFIG_CHIP_DEVICE_SOFTWARE_VERSION=2 -DCONF_FILE=prj_dfu.conf -DCONFIG_CHIP_LIB_SHELL=y disabled: true @@ -122,7 +127,11 @@ tests: verification: | To perform an OTA update on Thread device follow the cmmds below: - Step-1 : ./chip-ota-provider-app -f ~/chip_repos/connectedhomeip/examples/all-clusters-app/nrfconnect/build2/zephyr/matter.ota + Step-1 : Where we builded OTA provider app execute this cmmd . (In my case I ran connectedhomeip/out/debug ./chip-ota-provider-app -f ) + + ./chip-ota-provider-app -f ~/chip_repos/connectedhomeip/examples/all-clusters-app/nrfconnect/build2/zephyr/matter.ota + + Ran on chip-tool: Step-2: ./chip-tool pairing onnetwork 2 20202021 diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml index 5a9118852691de..fd5883aecea22f 100644 --- a/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml @@ -26,11 +26,6 @@ config: endpoint: 0 tests: - - label: "Pre-conditions:" - verification: | - This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command - disabled: true - - label: "Note" verification: | To Execute the TC-MOD-3.4 test case using reboot in raspi device we followed the below suggested way: @@ -38,9 +33,9 @@ tests: To run a reboot test case on raspi, run the app with --KVS flag with a file in local directory and pass that file to the command to launch the app. Steps - step-1: create a file using touch command , something like touch mytest.txt - step-2: chmod 777 mytest.txt - step-3: launch the app sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt + step-1: create a file using touch command , something like touch mytest.txt + step-2: chmod 777 mytest.txt + step-3: launch the app sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt if you launch the app with the above commands and provision the app, even when you reboot the app with 'sudo reboot' , next time you launch the app with 'sudo ./out/all-clusters-app/chip-all-clusters-app --KVS ./mytest.txt' , you can run read/write attribs and commands without reprovisioning the device. disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml b/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml index 4be4ecaa5c749f..6fed52808eb096 100644 --- a/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml @@ -20,10 +20,15 @@ PICS: config: nodeId: 0x12344321 - cluster: "Occupancy Sensing" - endpoint: 1 + cluster: "Basic" + endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Commission DUT to TH" verification: | verification step to be updated. diff --git a/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml b/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml index f70d33351a6031..333db4004d2af8 100644 --- a/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml +++ b/src/app/tests/suites/certification/Test_TC_OCC_2_4.yaml @@ -26,6 +26,11 @@ config: endpoint: 1 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Commission DUT to TH" verification: | verification step to be updated. diff --git a/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml b/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml index da18a036e8512d..d6af25ba58631c 100644 --- a/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml b/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml index 5730c3100f97ff..9f833109f95aae 100644 --- a/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT issues an Off command to the Test Harness." PICS: OO.C.C00.Tx verification: | diff --git a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml index 7354d15140d161..e8a8c3d394cc91 100644 --- a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml @@ -26,6 +26,13 @@ config: endpoint: 0 tests: + - label: + "Precondition: This test case assumes that during Commissioning AddNOC + will be sent with ICACValue" + verification: | + + disabled: true + - label: "Factory Reset DUT" verification: | On both DUT and TH side use the below command @@ -237,8 +244,8 @@ tests: disabled: true - label: - "From the NOCStruct values verify the following: ,NOC matches the NOC - sent to the DUT during commissioning process ,ICAC matches the ICAC + "From the NOCStruct values verify the following: NOC matches the NOC + sent to the DUT during commissioning process ICAC matches the ICAC sent to the DUT during commissioning process from AddNOC in pre-condition" verification: | @@ -274,10 +281,10 @@ tests: - label: "Verify that TH1 is able to read the FabricDescriptorStruct values - ,Verify that Fabrics list does not have any entry as FabricID = + Verify that Fabrics list does not have any entry as FabricID = FabricID2" verification: | - Verify the FabricDescriptorStruct values has no entry og FabricID2 + Verify the FabricDescriptorStruct values has no entry log FabricID2 on TH1 [1657693240.722099][15129:15134] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003E Attribute 0x0000_0001 DataVersion: 908345149 [1657693240.722200][15129:15134] CHIP:TOO: Fabrics: 1 entries @@ -388,7 +395,7 @@ tests: - label: "From the NOCStruct values verify the following: NOC matches the NOC - sent to the DUT during commissioning process,ICAC matches the ICAC + sent to the DUT during commissioning process ICAC matches the ICAC sent to the DUT during commissioning process from AddNOC in pre-condition" verification: | 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 3486d8b349a92e..010a2adb87b5b6 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 @@ -45,7 +45,7 @@ tests: - label: "Verify that the DUT sends AttestationRequest Command to TH" PICS: OPCREDS.C.C00.Tx verification: | - Verify that the DUT send AttestationRequest Command to TH(all-clusters-app) + Verify that the DUT send AttestationRequest Command to TH(all-clusters-app) commissioning log [1657778307.595402][8192:8197] CHIP:CTL: Commissioning stage next step: "SendDACCertificateRequest" -> "SendAttestationRequest" [1657778307.595466][8192:8197] CHIP:CTL: Performing next commissioning step "SendAttestationRequest" @@ -288,7 +288,7 @@ tests: - label: "Verify that the DUT sends CertificateChainRequest Command to TH" PICS: OPCREDS.C.C02.Tx verification: | - Verify that the DUT send CertificateChainRequest Command to TH (all-clusters-app) + Verify that the DUT send CertificateChainRequest Command to TH (all-clusters-app) commissioning log [1657778306.864918][8192:8197] CHIP:CTL: Sending Certificate Chain request to 0xffff78000b60 device [1657778306.865059][8192:8197] CHIP:DMG: ICR moving to [AddingComm] @@ -419,7 +419,7 @@ tests: - label: "Verify that the DUT Sends CSRRequest command to TH" PICS: OPCREDS.C.C04.Tx verification: | - Verify that the DUT send CSRRequest command to TH (all-clusters-app) + Verify that the DUT send CSRRequest command to TH (all-clusters-app) commissioning log [1657778307.949847][8192:8197] CHIP:CTL: Sending CSR request to 0xffff78000b60 device [1657778307.949923][8192:8197] CHIP:DMG: ICR moving to [AddingComm] @@ -519,7 +519,7 @@ tests: which contains the Node Operational PublicKey from CSR AttestationSignature" verification: | - Extract the CSRResponse values from TH (all-clusters-app) + Extract the CSRResponse values from TH (all-clusters-app) commissioning log [1657778308.175702][8192:8197] CHIP:EM: Found matching exchange: 40144i, Delegate: 0xaaaaf7819670 [1657778308.175743][8192:8197] CHIP:DMG: ICR moving to [ResponseRe] @@ -563,7 +563,7 @@ tests: - label: "Verify that the DUT sends AddTrustedRootCertificate command to TH" PICS: OPCREDS.C.C0b.Tx verification: | - Verify that the DUT send AddTrustedRootCertificate command to TH (all-clusters-app) + Verify that the DUT send AddTrustedRootCertificate command to TH (all-clusters-app) commissioning log [1657778308.179742][8192:8197] CHIP:CTL: Performing next commissioning step "SendTrustedRootCert" [1657778308.179769][8192:8197] CHIP:CTL: Sending root certificate to the device @@ -683,7 +683,7 @@ tests: - label: "Verify that DUT sends the AddNOC Command to TH" PICS: OPCREDS.C.C06.Tx verification: | - Verify that the DUT send AddNOC command to TH (all-clusters-app) + Verify that the DUT send AddNOC command to TH (all-clusters-app) commissioning log [1657778308.374786][8192:8197] CHIP:CTL: Performing next commissioning step "SendNOC" @@ -920,12 +920,12 @@ tests: disabled: true - label: - "Verify that the size of RootPublicKey is within 65 octstr ,Verify + "Verify that the size of RootPublicKey is within 65 octstr. Verify that the NodeID is the same as the chip-node-id in the NOC sent with - AddNOC Command,Verify that the VendorID is the same as the - AdminVendorID sent with AddNOC Command,Verify that the FabricID is the - same as the matter-fabric-id field from the operational - certificate,Verify that the size of Label has a maximum value of 32 + AddNOC Command. Verify that the VendorID is the same as the + AdminVendorID sent with AddNOC Command. Verify that the FabricID is + the same as the matter-fabric-id field from the operational + certificate. Verify that the size of Label has a maximum value of 32 bytes." verification: | Verify that the following on TH (all-clusters-app) log diff --git a/src/app/tests/suites/certification/Test_TC_PRS_3_1.yaml b/src/app/tests/suites/certification/Test_TC_PRS_3_1.yaml index ea7108c7a0d7a0..e2afec23eb8851 100644 --- a/src/app/tests/suites/certification/Test_TC_PRS_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_PRS_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml b/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml index 0cd5f3da210b15..3a4e367bb7a47d 100644 --- a/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Preconditions:" + verification: | + This test case is verified after the device is provisioned. Pls provision device first, Pass appropriate nodeID in the below command + disabled: true + - label: "Commission DUT to TH" verification: | verification step to be updated. @@ -48,26 +53,26 @@ tests: "TH reads the Order attribute from Power Source Cluster at Enpoint[eNr] of the DUT" verification: | - ./chip-tool powersource read order 1 1 + ./chip-tool powersource read order 1 2 verify on TH(chip-tool) that order attribute succeeds with no error.The order value is the same or greater than the order value of the previous iteration - [...] - [1653564242.694964][36231:36236] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_002F Attribute 0x0000_0001 DataVersion: 4212858705 - [1653564242.695038][36231:36236] CHIP:TOO: Order: 2 + [1659879820.566144][2615:2620] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_002F Attribute 0x0000_0001 DataVersion: 1842182672 + [1659879820.569572][2615:2620] CHIP:TOO: Order: 1 - ./chip-tool powersource read order 1 2 + + ./chip-tool powersource read order 1 1 verify on TH(chip-tool) that order attribute succeeds with no error.The order value is the same or greater than the order value of the previous iteration - [1659879820.566144][2615:2620] CHIP:TOO: Endpoint: 2 Cluster: 0x0000_002F Attribute 0x0000_0001 DataVersion: 1842182672 - [1659879820.569572][2615:2620] CHIP:TOO: Order: 1 + [...] + [1653564242.694964][36231:36236] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_002F Attribute 0x0000_0001 DataVersion: 4212858705 + [1653564242.695038][36231:36236] CHIP:TOO: Order: 2 - ./chip-tool powersource read order 1 0 + ./chip-tool powersource read order 1 0 verify on TH(chip-tool) that order attribute succeeds with no error.The order value is the same or greater than the order value of the previous iteration [1659879944.863570][2633:2638] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_002F Attribute 0x0000_0001 DataVersion: 1479870496 [1659879944.863664][2633:2638] CHIP:TOO: Order: 3 - [1659879944.863854][2633:2638] CHIP:EM: Sending Standalone Ack for MessageCounter:4546692 on exchange 20518i disabled: true diff --git a/src/app/tests/suites/certification/Test_TC_RH_3_1.yaml b/src/app/tests/suites/certification/Test_TC_RH_3_1.yaml index dca4b6443e6364..4f33bf4e31ab3f 100644 --- a/src/app/tests/suites/certification/Test_TC_RH_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_RH_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml index 887f256cbbc1db..c137d70c6a29e7 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml @@ -39,6 +39,8 @@ tests: verification: | avahi-browse -rt _matter._tcp + Verify on the TH Log: + + veth721e1d9 IPv6 433B62F8F07F4327-0000000000000001 _matter._tcp local = veth721e1d9 IPv6 433B62F8F07F4327-0000000000000001 _matter._tcp local hostname = [E45F0149AE290000.local] diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml index 5f28f3d5beaeaa..0062e1c7f3e949 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml @@ -26,6 +26,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT is instructed to start advertising its presence as a commissioner in the network" @@ -56,8 +61,7 @@ tests: - to look for subtypes, on the raspi run $ avahi-browse -p _services._dns-sd._udp - | grep _matterd + to look for subtypes, on the raspi run $ avahi-browse -p _services._dns-sd._udp | grep _matterd +;eth0;IPv6;_CM;_sub._matterd._udp;local +;eth0;IPv6;_L3840;_sub._matterd._udp;local diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml index 2ffd0fd3854d6b..5d2e190fdaff95 100644 --- a/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml @@ -26,9 +26,14 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Commission TH1 to DUTs Fabric" verification: | - 1. Provision the device using 1st controller chip-tool (as example commissioner) on the raspi (use above instructions) + 1. Provision the device using 1st controller chip-tool (as example commissioner) on the raspi (use the instructions) ./chip-tool pairing onnetwork 2 20202021 diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml index ac51168f2d9a1e..a930c424fe8135 100644 --- a/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml @@ -46,7 +46,8 @@ tests: - label: "Set up subscription to SwitchLatched event" PICS: SWTCH.S.F00 verification: | - In Raspi platform to change the switch position use the below command, Pls use equivalent command on the respective DUT.After provisioning ,open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) + echo "{"Name":"SwitchLatched","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -69,7 +70,7 @@ tests: - label: "Operator sets switch to first position" PICS: SWTCH.S.F00 verification: | - In Raspi platform to change the switch to first position use the below command, Pls use equivalent command on the respective DUT.After provisioning ,open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"SwitchLatched","NewPosition":0}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -95,7 +96,7 @@ tests: - label: "Operator sets switch to second position" PICS: SWTCH.S.F00 verification: | - In Raspi platform to change the switch to second position use the below sample command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"SwitchLatched","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -118,12 +119,12 @@ tests: disabled: true - label: - "If NumberOfPositions>2 (see 2c of TC-SWTCH-2.1) : - Operator sets + "If NumberOfPositions>2 (see 2a of TC-SWTCH-2.1) : - Operator sets switch to next position - Read CurrentPosition attribute" verification: | Raspi device doesn"t support more than 2 position ,so this step is not verifiable by using raspi device - In Raspi platform to change the switch to third position use the below sample command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"SwitchLatched","NewPosition":2}" > /tmp/chip_all_clusters_fifo (PID of DUT) @@ -173,7 +174,7 @@ tests: - label: "Operator returns switch to first position" PICS: SWTCH.S.F00 verification: | - In Raspi platform to change the switch to first position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"SwitchLatched","NewPosition":0}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -198,7 +199,7 @@ tests: - label: "Set up subscription to InitialPress event" PICS: SWTCH.S.F01 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -243,7 +244,7 @@ tests: - label: "Operator operates switch (keep it pressed)" PICS: SWTCH.S.F01 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -268,7 +269,7 @@ tests: - label: "Operator does not operate switch (release switch)" PICS: SWTCH.S.F01 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"ShortRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -291,7 +292,7 @@ tests: - label: "Set up subscription to InitialPress and ShortRelease events" PICS: SWTCH.S.F01 && SWTCH.S.F02 && !SWTCH.S.F03 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -300,7 +301,7 @@ tests: [1659686596.526820][2530:2530] CHIP:-: The new position when the momentary switch starts to be pressed:1 [1659686596.526881][2530:2530] CHIP:ZCL: SwitchServer: OnInitialPress - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"ShortRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -354,7 +355,7 @@ tests: "Operator operates switch (keep pressed for long time, e.g. 5 seconds)" PICS: SWTCH.S.F01 && SWTCH.S.F02 && !SWTCH.S.F03 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo_2530 @@ -380,7 +381,7 @@ tests: - label: "Operator releases switch" PICS: SWTCH.S.F01 && SWTCH.S.F02 && !SWTCH.S.F03 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"ShortRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -408,7 +409,7 @@ tests: LongRelease events" PICS: SWTCH.S.F01 && SWTCH.S.F03 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -417,7 +418,7 @@ tests: [1659693098.031859][2530:2530] CHIP:-: The new position when the momentary switch starts to be pressed:1 [1659693098.031888][2530:2530] CHIP:ZCL: SwitchServer: OnInitialPress - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"LongPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -426,7 +427,7 @@ tests: [1659693130.925064][2530:2530] CHIP:-: The new position when the momentary switch has been pressed for a long time:1 [1659693130.925313][2530:2530] CHIP:ZCL: SwitchServer: OnLongPress - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"ShortRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -435,7 +436,7 @@ tests: [1659693174.709479][2530:2530] CHIP:-: The the previous value of the CurrentPosition when the momentary switch has been released:1 [1659693174.709539][2530:2530] CHIP:ZCL: SwitchServer: OnShortRelease - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"LongRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -538,7 +539,7 @@ tests: MultiPressComplete events" PICS: SWTCH.S.F01 && SWTCH.S.F04 verification: | - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"InitialPress","NewPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -547,7 +548,7 @@ tests: [1659693098.031859][2530:2530] CHIP:-: The new position when the momentary switch starts to be pressed:1 [1659693098.031888][2530:2530] CHIP:ZCL: SwitchServer: OnInitialPress - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"ShortRelease","PreviousPosition":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -556,7 +557,7 @@ tests: [1659694387.720237][2530:2530] CHIP:-: The the previous value of the CurrentPosition when the momentary switch has been released:1 [1659694387.720304][2530:2530] CHIP:ZCL: SwitchServer: OnShortRelease - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"MultiPressComplete","PreviousPosition":1,"TotalNumberOfPressesCounted":1}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -564,7 +565,7 @@ tests: [1659694592.348389][2530:2530] CHIP:DMG: Endpoint 1, Cluster 0x0000_003B update version to ee5e772b [1659694592.348481][2530:2530] CHIP:-: The new position when the momentary switch has been pressed in a multi-press sequence:1 - In Raspi platform to change the switch to second position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"MultiPressOngoing","NewPosition":1,"CurrentNumberOfPressesCounted":2}" > /tmp/chip_all_clusters_fifo- (PID of DUT) @@ -869,7 +870,7 @@ tests: [1659696223.568397][3981:3986] CHIP:TOO: } - In Raspi platform to change the switch position use the below command, Pls use equivalent command on the respective DUT.open one more terminal on DUT side execute the echo command on that terminal. + On Raspi platform To trigger the event give the below command by opening an another terminal in DUT (Below is the example command developed in all-clusters-app to generate the event, Vendor Dut should have capability to generate this event) echo "{"Name":"MultiPressOngoing","previousPosition":1,"CurrentNumberOfPressesCounted":3}" > /tmp/chip_all_clusters_fifo- (PID of DUT) diff --git a/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml index e4101b19ecb7a3..f2dc3a06570cfa 100644 --- a/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml index 5ee9d5d49fae27..90989264ca2dff 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml index 1aaa744557356c..ab6f0e52bac81c 100644 --- a/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT increases the temperature by sending a SetpointRaiseLower command to the Test Harness, with a valid Mode argument (0, 1 or 2) and a diff --git a/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml index b1667296ad68a5..93899e3ed8eb66 100644 --- a/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml @@ -28,6 +28,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads all supported mandatory attributes from TH one at a time in a manufacturer specific order" diff --git a/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml b/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml index 099a68415e1279..391fa07689121e 100644 --- a/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "DUT reads LabelList from the TH" PICS: ULABEL.C.A0000 verification: | diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_5_1.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_5_1.yaml index d1b9f4360ea558..ad1a9212f3c838 100644 --- a/src/app/tests/suites/certification/Test_TC_WNCV_5_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_WNCV_5_1.yaml @@ -24,12 +24,17 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Check Attribute defining the cluster Features" verification: | verification step to be updated. disabled: true - - label: "DUT reads the (65532) _FeatureMap_ attribute from T" + - label: "DUT reads the (65532) _FeatureMap_ attribute from TH" PICS: WNCV.C.Afffc verification: | On TestHarnes (all-cluster-app) a received read of feature-map looks like this: diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml index 5a5ca6f749440f..7e077c22b70943 100644 --- a/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Check UpOrOpen command" verification: | verification step to be updated. diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml index 9140778f02ca5c..c2d60eb96c7982 100644 --- a/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml @@ -24,6 +24,11 @@ config: endpoint: 0 tests: + - label: "Note" + verification: | + For DUT as client test cases, Chip-tool command used below are an example to verify the functionality. For certification test, we expect DUT should have a capability or way to run the equivalent command. + disabled: true + - label: "Check GoToLiftPercentage command 50%" verification: | verification step to be updated. From a8d12af4be0cbf26f3f1352a5562eb7856ca8651 Mon Sep 17 00:00:00 2001 From: jmartinez-silabs <67972863+jmartinez-silabs@users.noreply.github.com> Date: Sat, 20 Aug 2022 20:38:00 -0400 Subject: [PATCH 17/44] [Hotfix] disable lcd in CI lighting_app with RPC build (#22052) * Hotfix, disable lcd in CI lighting_app with RPC build * oops disable_lcd=true * missing #ifdef for building without lcd + add is_debug=false for efr32 rpc builds when using build_examples.py * fix strings in build_all_except_host.txt * fix strings again in build_all_except_host.txt --- .github/workflows/examples-efr32.yaml | 2 +- examples/platform/efr32/BaseApplication.cpp | 2 + scripts/build/builders/efr32.py | 2 +- .../build/testdata/build_all_except_host.txt | 64 +++++++++---------- 4 files changed, 36 insertions(+), 34 deletions(-) diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml index acb4e6b18e96b3..b8c5134d6e9fcd 100644 --- a/.github/workflows/examples-efr32.yaml +++ b/.github/workflows/examples-efr32.yaml @@ -95,7 +95,7 @@ jobs: timeout-minutes: 15 run: | scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/lighting_app_debug_rpc BRD4161A "is_debug=false" \ - 'import("//with_pw_rpc.gni")' + disable_lcd=true 'import("//with_pw_rpc.gni")' .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+rpc lighting-app \ out/lighting_app_debug_rpc/BRD4161A/chip-efr32-lighting-example.out /tmp/bloat_reports/ - name: Build example EFR32+WF200 WiFi Lock app for BRD4161A diff --git a/examples/platform/efr32/BaseApplication.cpp b/examples/platform/efr32/BaseApplication.cpp index 2cdc4753ef572b..66d8cbc0a4efa5 100644 --- a/examples/platform/efr32/BaseApplication.cpp +++ b/examples/platform/efr32/BaseApplication.cpp @@ -391,8 +391,10 @@ void BaseApplication::ButtonHandler(AppEvent * aEvent) CancelFunctionTimer(); mFunction = kFunction_NoneSelected; +#ifdef DISPLAY_ENABLED // TOGGLE QRCode/LCD demo UI slLCD.ToggleQRCode(); +#endif #ifdef SL_WIFI if (!ConnectivityMgr().IsWiFiStationProvisioned()) diff --git a/scripts/build/builders/efr32.py b/scripts/build/builders/efr32.py index 0f8abe07cb6865..d4a536a1e80ca2 100644 --- a/scripts/build/builders/efr32.py +++ b/scripts/build/builders/efr32.py @@ -120,7 +120,7 @@ def __init__(self, self.extra_gn_options = ['efr32_board="%s"' % board.GnArgName()] if enable_rpcs: - self.extra_gn_options.append('import("//with_pw_rpc.gni")') + self.extra_gn_options.append('is_debug=false import("//with_pw_rpc.gni")') if enable_ota_requestor: self.extra_gn_options.append('chip_enable_ota_requestor=true') diff --git a/scripts/build/testdata/build_all_except_host.txt b/scripts/build/testdata/build_all_except_host.txt index 7c255c2eb96d29..ea86e68d1139fd 100644 --- a/scripts/build/testdata/build_all_except_host.txt +++ b/scripts/build/testdata/build_all_except_host.txt @@ -188,10 +188,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A"' {out}/efr32-brd4161a-light # Generating efr32-brd4161a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A" import("//with_pw_rpc.gni")' {out}/efr32-brd4161a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4161a-light-rpc # Generating efr32-brd4161a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4161a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4161a-light-rpc-with-ota-requestor # Generating efr32-brd4161a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4161A" chip_enable_ota_requestor=true' {out}/efr32-brd4161a-light-with-ota-requestor @@ -200,10 +200,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A"' {out}/efr32-brd4161a-lock # Generating efr32-brd4161a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A" import("//with_pw_rpc.gni")' {out}/efr32-brd4161a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4161a-lock-rpc # Generating efr32-brd4161a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4161a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4161a-lock-rpc-with-ota-requestor # Generating efr32-brd4161a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4161A" chip_enable_ota_requestor=true' {out}/efr32-brd4161a-lock-with-ota-requestor @@ -230,10 +230,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A"' {out}/efr32-brd4163a-light # Generating efr32-brd4163a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A" import("//with_pw_rpc.gni")' {out}/efr32-brd4163a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4163a-light-rpc # Generating efr32-brd4163a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4163a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4163a-light-rpc-with-ota-requestor # Generating efr32-brd4163a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4163A" chip_enable_ota_requestor=true' {out}/efr32-brd4163a-light-with-ota-requestor @@ -242,10 +242,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A"' {out}/efr32-brd4163a-lock # Generating efr32-brd4163a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A" import("//with_pw_rpc.gni")' {out}/efr32-brd4163a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4163a-lock-rpc # Generating efr32-brd4163a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4163a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4163a-lock-rpc-with-ota-requestor # Generating efr32-brd4163a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4163A" chip_enable_ota_requestor=true' {out}/efr32-brd4163a-lock-with-ota-requestor @@ -272,10 +272,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A"' {out}/efr32-brd4164a-light # Generating efr32-brd4164a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A" import("//with_pw_rpc.gni")' {out}/efr32-brd4164a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4164a-light-rpc # Generating efr32-brd4164a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4164a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4164a-light-rpc-with-ota-requestor # Generating efr32-brd4164a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4164A" chip_enable_ota_requestor=true' {out}/efr32-brd4164a-light-with-ota-requestor @@ -284,10 +284,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A"' {out}/efr32-brd4164a-lock # Generating efr32-brd4164a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A" import("//with_pw_rpc.gni")' {out}/efr32-brd4164a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4164a-lock-rpc # Generating efr32-brd4164a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4164a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4164a-lock-rpc-with-ota-requestor # Generating efr32-brd4164a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4164A" chip_enable_ota_requestor=true' {out}/efr32-brd4164a-lock-with-ota-requestor @@ -314,10 +314,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A"' {out}/efr32-brd4166a-light # Generating efr32-brd4166a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A" import("//with_pw_rpc.gni")' {out}/efr32-brd4166a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4166a-light-rpc # Generating efr32-brd4166a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4166a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4166a-light-rpc-with-ota-requestor # Generating efr32-brd4166a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4166A" chip_enable_ota_requestor=true' {out}/efr32-brd4166a-light-with-ota-requestor @@ -326,10 +326,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A"' {out}/efr32-brd4166a-lock # Generating efr32-brd4166a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A" import("//with_pw_rpc.gni")' {out}/efr32-brd4166a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4166a-lock-rpc # Generating efr32-brd4166a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4166a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4166a-lock-rpc-with-ota-requestor # Generating efr32-brd4166a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4166A" chip_enable_ota_requestor=true' {out}/efr32-brd4166a-lock-with-ota-requestor @@ -356,10 +356,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A"' {out}/efr32-brd4170a-light # Generating efr32-brd4170a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A" import("//with_pw_rpc.gni")' {out}/efr32-brd4170a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4170a-light-rpc # Generating efr32-brd4170a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4170a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4170a-light-rpc-with-ota-requestor # Generating efr32-brd4170a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4170A" chip_enable_ota_requestor=true' {out}/efr32-brd4170a-light-with-ota-requestor @@ -368,10 +368,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A"' {out}/efr32-brd4170a-lock # Generating efr32-brd4170a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A" import("//with_pw_rpc.gni")' {out}/efr32-brd4170a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4170a-lock-rpc # Generating efr32-brd4170a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4170a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4170a-lock-rpc-with-ota-requestor # Generating efr32-brd4170a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4170A" chip_enable_ota_requestor=true' {out}/efr32-brd4170a-lock-with-ota-requestor @@ -398,10 +398,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A"' {out}/efr32-brd4186a-light # Generating efr32-brd4186a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A" import("//with_pw_rpc.gni")' {out}/efr32-brd4186a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4186a-light-rpc # Generating efr32-brd4186a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4186a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4186a-light-rpc-with-ota-requestor # Generating efr32-brd4186a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4186A" chip_enable_ota_requestor=true' {out}/efr32-brd4186a-light-with-ota-requestor @@ -410,10 +410,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A"' {out}/efr32-brd4186a-lock # Generating efr32-brd4186a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A" import("//with_pw_rpc.gni")' {out}/efr32-brd4186a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4186a-lock-rpc # Generating efr32-brd4186a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4186a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4186a-lock-rpc-with-ota-requestor # Generating efr32-brd4186a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4186A" chip_enable_ota_requestor=true' {out}/efr32-brd4186a-lock-with-ota-requestor @@ -440,10 +440,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A"' {out}/efr32-brd4187a-light # Generating efr32-brd4187a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A" import("//with_pw_rpc.gni")' {out}/efr32-brd4187a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4187a-light-rpc # Generating efr32-brd4187a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4187a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4187a-light-rpc-with-ota-requestor # Generating efr32-brd4187a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4187A" chip_enable_ota_requestor=true' {out}/efr32-brd4187a-light-with-ota-requestor @@ -452,10 +452,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A"' {out}/efr32-brd4187a-lock # Generating efr32-brd4187a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A" import("//with_pw_rpc.gni")' {out}/efr32-brd4187a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4187a-lock-rpc # Generating efr32-brd4187a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4187a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4187a-lock-rpc-with-ota-requestor # Generating efr32-brd4187a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4187A" chip_enable_ota_requestor=true' {out}/efr32-brd4187a-lock-with-ota-requestor @@ -482,10 +482,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A"' {out}/efr32-brd4304a-light # Generating efr32-brd4304a-light-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A" import("//with_pw_rpc.gni")' {out}/efr32-brd4304a-light-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4304a-light-rpc # Generating efr32-brd4304a-light-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4304a-light-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4304a-light-rpc-with-ota-requestor # Generating efr32-brd4304a-light-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lighting-app/efr32 '--args=efr32_board="BRD4304A" chip_enable_ota_requestor=true' {out}/efr32-brd4304a-light-with-ota-requestor @@ -494,10 +494,10 @@ gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/exa gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A"' {out}/efr32-brd4304a-lock # Generating efr32-brd4304a-lock-rpc -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A" import("//with_pw_rpc.gni")' {out}/efr32-brd4304a-lock-rpc +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A" is_debug=false import("//with_pw_rpc.gni")' {out}/efr32-brd4304a-lock-rpc # Generating efr32-brd4304a-lock-rpc-with-ota-requestor -gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A" import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4304a-lock-rpc-with-ota-requestor +gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A" is_debug=false import("//with_pw_rpc.gni") chip_enable_ota_requestor=true' {out}/efr32-brd4304a-lock-rpc-with-ota-requestor # Generating efr32-brd4304a-lock-with-ota-requestor gn gen --check --fail-on-unused-args --export-compile-commands --root={root}/examples/lock-app/efr32 '--args=efr32_board="BRD4304A" chip_enable_ota_requestor=true' {out}/efr32-brd4304a-lock-with-ota-requestor From 977aba0a8102fb2903e4d09af7b4aafbcafd5de8 Mon Sep 17 00:00:00 2001 From: yunhanw-google Date: Mon, 22 Aug 2022 06:53:08 -0700 Subject: [PATCH 18/44] follow-up for fabric-scoped event (#22014) --- src/app/EventLogging.h | 2 +- .../python/test/test_scripts/cluster_objects.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/app/EventLogging.h b/src/app/EventLogging.h index b2ce7667ab2364..f9fa56837f07e9 100644 --- a/src/app/EventLogging.h +++ b/src/app/EventLogging.h @@ -73,7 +73,7 @@ CHIP_ERROR LogEvent(const T & aEventData, EndpointId aEndpoint, EventNumber & aE eventOptions.mPriority = aEventData.GetPriorityLevel(); eventOptions.mFabricIndex = aEventData.GetFabricIndex(); // this skips logging the event if it's fabric-scoped but no fabric association exists yet. - VerifyOrReturnError(eventOptions.mFabricIndex != kUndefinedFabricIndex, CHIP_NO_ERROR); + VerifyOrReturnError(eventOptions.mFabricIndex != kUndefinedFabricIndex, CHIP_ERROR_INVALID_FABRIC_INDEX); // // Unlike attributes which have a different 'EncodeForRead' for fabric-scoped structs, diff --git a/src/controller/python/test/test_scripts/cluster_objects.py b/src/controller/python/test/test_scripts/cluster_objects.py index deae10c2cd6962..5a9db3dd6ba28c 100644 --- a/src/controller/python/test/test_scripts/cluster_objects.py +++ b/src/controller/python/test/test_scripts/cluster_objects.py @@ -313,8 +313,6 @@ async def _TriggerEvent(cls, devCtrl): await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestEventRequest()) await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestEventRequest()) await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestEventRequest()) - await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestFabricScopedEventRequest(arg1=0)) - await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestFabricScopedEventRequest(arg1=1)) @classmethod async def _RetryForContent(cls, request, until, retryCount=10, intervalSeconds=1): @@ -335,11 +333,19 @@ async def TriggerAndWaitForEvents(cls, devCtrl, req): @base.test_case async def TestGenerateUndefinedFabricScopedEventRequests(cls, devCtrl): logger.info("Running TestGenerateUndefinedFabricScopedEventRequests") - await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestFabricScopedEventRequest(arg1=0)) + try: + res = await devCtrl.SendCommand(nodeid=NODE_ID, endpoint=1, payload=Clusters.TestCluster.Commands.TestEmitTestFabricScopedEventRequest(arg1=0)) + raise ValueError(f"Unexpected Failure") + except chip.interaction_model.InteractionModelError as ex: + logger.info(f"Recevied {ex} from server.") res = await devCtrl.ReadEvent(nodeid=NODE_ID, events=[ - (1, Clusters.TestCluster.Events.TestEvent, 0), + (1, Clusters.TestCluster.Events.TestFabricScopedEvent, 0), ]) logger.info(f"return result is {res}") + if len(res) != 0: + raise AssertionError("failure: not expect to receive fabric-scoped event when fabric is undefined") + else: + logger.info("TestGenerateUndefinedFabricScopedEventRequests: Success") @classmethod @base.test_case From 9713e108ab731985fe8cf95d051cf640bdafb98a Mon Sep 17 00:00:00 2001 From: Yufeng Wang Date: Mon, 22 Aug 2022 06:57:07 -0700 Subject: [PATCH 19/44] Wrap all nlfaultinjection logic with build flag chip_with_nlfaultinjection (#22004) --- src/inet/BUILD.gn | 6 ++++-- src/inet/tests/BUILD.gn | 9 +++++++-- src/system/BUILD.gn | 6 ++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/inet/BUILD.gn b/src/inet/BUILD.gn index 10852750646742..cb86a45780df9c 100644 --- a/src/inet/BUILD.gn +++ b/src/inet/BUILD.gn @@ -88,7 +88,6 @@ static_library("inet") { "InetArgParser.h", "InetError.cpp", "InetError.h", - "InetFaultInjection.h", "InetInterface.cpp", "InetInterface.h", "InetLayer.h", @@ -132,7 +131,10 @@ static_library("inet") { } if (chip_with_nlfaultinjection) { - sources += [ "InetFaultInjection.cpp" ] + sources += [ + "InetFaultInjection.cpp", + "InetFaultInjection.h", + ] public_deps += [ "${nlfaultinjection_root}:nlfaultinjection" ] } diff --git a/src/inet/tests/BUILD.gn b/src/inet/tests/BUILD.gn index 3946a798fa63c3..1788410bb6c6d3 100644 --- a/src/inet/tests/BUILD.gn +++ b/src/inet/tests/BUILD.gn @@ -35,8 +35,6 @@ static_library("helpers") { "TestInetCommonOptions.h", "TestInetCommonPosix.cpp", "TestInetLayerCommon.cpp", - "TestSetupFaultInjection.h", - "TestSetupFaultInjectionPosix.cpp", "TestSetupSignalling.h", "TestSetupSignallingPosix.cpp", ] @@ -45,6 +43,13 @@ static_library("helpers") { sources += [ "TestInetLayer.cpp" ] } + if (chip_with_nlfaultinjection) { + sources += [ + "TestSetupFaultInjection.h", + "TestSetupFaultInjectionPosix.cpp", + ] + } + cflags = [ "-Wconversion" ] public_deps = [ diff --git a/src/system/BUILD.gn b/src/system/BUILD.gn index f2f5172dbee3c6..a70b943e1d14d2 100644 --- a/src/system/BUILD.gn +++ b/src/system/BUILD.gn @@ -177,7 +177,6 @@ static_library("system") { "SystemError.cpp", "SystemError.h", "SystemEvent.h", - "SystemFaultInjection.h", "SystemLayer.cpp", "SystemLayer.h", "SystemLayerImpl.h", @@ -219,7 +218,10 @@ static_library("system") { } if (chip_with_nlfaultinjection) { - sources += [ "SystemFaultInjection.cpp" ] + sources += [ + "SystemFaultInjection.cpp", + "SystemFaultInjection.h", + ] public_deps += [ "${nlfaultinjection_root}:nlfaultinjection" ] } } From 7c53493814cb9b3d9a6f1d215f4b2ebec20bfb6b Mon Sep 17 00:00:00 2001 From: Jon Smirl Date: Mon, 22 Aug 2022 10:38:04 -0400 Subject: [PATCH 20/44] Remove the default constructor for ChipDeviceController(). It is required to set a vendor ID (#21980) so it must be passed during construction. Also fix typo in onCommissioningStatusUpdate JNI method description. --- .../main/java/com/google/chip/chiptool/ChipClient.kt | 5 ++++- .../java/AndroidDeviceControllerWrapper.cpp | 2 +- .../chip/devicecontroller/ChipDeviceController.java | 11 +++++------ .../src/chip/devicecontroller/ControllerParams.java | 3 ++- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt b/src/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt index 10d7c32e994a9e..6e3833820716a3 100644 --- a/src/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt +++ b/src/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/ChipClient.kt @@ -20,6 +20,7 @@ package com.google.chip.chiptool import android.content.Context import android.util.Log import chip.devicecontroller.ChipDeviceController +import chip.devicecontroller.ControllerParams import chip.devicecontroller.GetConnectedDeviceCallbackJni.GetConnectedDeviceCallback import chip.platform.AndroidBleManager import chip.platform.AndroidChipPlatform @@ -38,12 +39,14 @@ object ChipClient { private const val TAG = "ChipClient" private lateinit var chipDeviceController: ChipDeviceController private lateinit var androidPlatform: AndroidChipPlatform + /* 0xFFF4 is a test vendor ID, replace with your assigned company ID */ + private const val VENDOR_ID = 0xFFF4 fun getDeviceController(context: Context): ChipDeviceController { getAndroidChipPlatform(context) if (!this::chipDeviceController.isInitialized) { - chipDeviceController = ChipDeviceController() + chipDeviceController = ChipDeviceController(ControllerParams.newBuilder().setControllerVendorId(VENDOR_ID).build()) } return chipDeviceController } diff --git a/src/controller/java/AndroidDeviceControllerWrapper.cpp b/src/controller/java/AndroidDeviceControllerWrapper.cpp index 8b28896a701d44..ada814133734fc 100644 --- a/src/controller/java/AndroidDeviceControllerWrapper.cpp +++ b/src/controller/java/AndroidDeviceControllerWrapper.cpp @@ -425,7 +425,7 @@ void AndroidDeviceControllerWrapper::OnCommissioningStatusUpdate(PeerId peerId, JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread(); jmethodID onCommissioningStatusUpdateMethod; CHIP_ERROR err = JniReferences::GetInstance().FindMethod(env, mJavaObjectRef, "onCommissioningStatusUpdate", - "(JLjava/lang/string;I)V", &onCommissioningStatusUpdateMethod); + "(JLjava/lang/String;I)V", &onCommissioningStatusUpdateMethod); VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Controller, "Error finding Java method: %" CHIP_ERROR_FORMAT, err.Format())); UtfString jStageCompleted(env, StageToString(stageCompleted)); diff --git a/src/controller/java/src/chip/devicecontroller/ChipDeviceController.java b/src/controller/java/src/chip/devicecontroller/ChipDeviceController.java index 97627b56c4ce1f..47c87b364143e3 100644 --- a/src/controller/java/src/chip/devicecontroller/ChipDeviceController.java +++ b/src/controller/java/src/chip/devicecontroller/ChipDeviceController.java @@ -44,12 +44,11 @@ public static void loadJni() { return; } - /** Returns a new {@link ChipDeviceController} with default parameters. */ - public ChipDeviceController() { - this(ControllerParams.newBuilder().build()); - } - - /** Returns a new {@link ChipDeviceController} with the specified parameters. */ + /** + * Returns a new {@link ChipDeviceController} with the specified parameters. you must set a vendor + * ID, ControllerParams.newBuilder().setControllerVendorId(0xFFF4).build() 0xFFF4 is a test vendor + * ID + */ public ChipDeviceController(ControllerParams params) { deviceControllerPtr = newDeviceController(params); } diff --git a/src/controller/java/src/chip/devicecontroller/ControllerParams.java b/src/controller/java/src/chip/devicecontroller/ControllerParams.java index 42fd04f42907de..b0413cf4a8abf0 100644 --- a/src/controller/java/src/chip/devicecontroller/ControllerParams.java +++ b/src/controller/java/src/chip/devicecontroller/ControllerParams.java @@ -86,7 +86,8 @@ public static Builder newBuilder() { /** * Returns parameters which uses the provided {@code operationalKeyConfig} as its operating - * credentials. + * credentials. You must set a vendor ID, 0xFFF4 is a test vendor ID + * ControllerParams.newBuilder().setControllerVendorId(0xFFF4).build() */ public static Builder newBuilder(OperationalKeyConfig operationalKeyConfig) { return newBuilder() From b85c5ec60a1f9b35bcbe37b5b18c04e1d695db1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Kr=C3=B3lik?= <66667989+Damian-Nordic@users.noreply.github.com> Date: Mon, 22 Aug 2022 16:40:44 +0200 Subject: [PATCH 21/44] [nrfconnect] Fix Light Switch Example build (#22036) The example was not built in CI, so we missed the build breakage. Signed-off-by: Damian Krolik Signed-off-by: Damian Krolik --- .github/workflows/examples-nrfconnect.yaml | 54 +++++++++---------- .../nrfconnect/CMakeLists.txt | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.github/workflows/examples-nrfconnect.yaml b/.github/workflows/examples-nrfconnect.yaml index 3c110ce1ccece7..5da513c70de6ba 100644 --- a/.github/workflows/examples-nrfconnect.yaml +++ b/.github/workflows/examples-nrfconnect.yaml @@ -95,15 +95,6 @@ jobs: nrfconnect nrf52840dk_nrf52840 lock-app \ examples/lock-app/nrfconnect/build/zephyr/zephyr.elf \ /tmp/bloat_reports/ - - name: Build example nRF Connect SDK Lighting App on nRF52840 DK - if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' - timeout-minutes: 15 - run: | - scripts/examples/nrfconnect_example.sh lighting-app nrf52840dk_nrf52840 - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - nrfconnect nrf52840dk_nrf52840 lighting-app \ - examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ - /tmp/bloat_reports/ - name: Build example nRF Connect SDK Lighting App on nRF52840 Dongle if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' timeout-minutes: 15 @@ -122,6 +113,15 @@ jobs: nrfconnect nrf52840dk_nrf52840+rpc lighting-app \ examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ /tmp/bloat_reports/ + - name: Build example nRF Connect SDK Light Switch App on nRF52840 DK + if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' + timeout-minutes: 15 + run: | + scripts/examples/nrfconnect_example.sh light-switch-app nrf52840dk_nrf52840 + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + nrfconnect nrf52840dk_nrf52840 light-switch-app \ + examples/light-switch-app/nrfconnect/build/zephyr/zephyr.elf \ + /tmp/bloat_reports/ - name: Build example nRF Connect SDK Shell on nRF52840 DK if: github.event_name == 'push' || steps.changed_paths.outputs.shell == 'true' timeout-minutes: 15 @@ -140,24 +140,6 @@ jobs: nrfconnect nrf52840dk_nrf52840 pigweed-app \ examples/pigweed-app/nrfconnect/build/zephyr/zephyr.elf \ /tmp/bloat_reports/ - - name: Build example nRF Connect SDK Lock App on nRF5340 DK - if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' - timeout-minutes: 15 - run: | - scripts/examples/nrfconnect_example.sh lock-app nrf5340dk_nrf5340_cpuapp - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - nrfconnect nrf5340dk_nrf5340_cpuapp lock-app \ - examples/lock-app/nrfconnect/build/zephyr/zephyr.elf \ - /tmp/bloat_reports/ - - name: Build example nRF Connect SDK Lighting App on nRF5340 DK - if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' - timeout-minutes: 15 - run: | - scripts/examples/nrfconnect_example.sh lighting-app nrf5340dk_nrf5340_cpuapp - .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ - nrfconnect nrf5340dk_nrf5340_cpuapp lighting-app \ - examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ - /tmp/bloat_reports/ - name: Build example nRF Connect SDK Pump App on nRF52840 DK if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' timeout-minutes: 15 @@ -192,6 +174,24 @@ jobs: nrfconnect nrf52840dk_nrf52840 all-clusters-minimal-app \ examples/all-clusters-minimal-app/nrfconnect/build/zephyr/zephyr.elf \ /tmp/bloat_reports/ + - name: Build example nRF Connect SDK Lock App on nRF5340 DK + if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' + timeout-minutes: 15 + run: | + scripts/examples/nrfconnect_example.sh lock-app nrf5340dk_nrf5340_cpuapp + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + nrfconnect nrf5340dk_nrf5340_cpuapp lock-app \ + examples/lock-app/nrfconnect/build/zephyr/zephyr.elf \ + /tmp/bloat_reports/ + - name: Build example nRF Connect SDK Lighting App on nRF5340 DK + if: github.event_name == 'push' || steps.changed_paths.outputs.nrfconnect == 'true' + timeout-minutes: 15 + run: | + scripts/examples/nrfconnect_example.sh lighting-app nrf5340dk_nrf5340_cpuapp + .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \ + nrfconnect nrf5340dk_nrf5340_cpuapp lighting-app \ + examples/lighting-app/nrfconnect/build/zephyr/zephyr.elf \ + /tmp/bloat_reports/ - name: Run unit tests for Zephyr native_posix_64 platform if: github.event_name == 'push' || steps.changed_paths.outputs.tests == 'true' timeout-minutes: 15 diff --git a/examples/light-switch-app/nrfconnect/CMakeLists.txt b/examples/light-switch-app/nrfconnect/CMakeLists.txt index 865b8262749bb9..3a0084efa79c42 100644 --- a/examples/light-switch-app/nrfconnect/CMakeLists.txt +++ b/examples/light-switch-app/nrfconnect/CMakeLists.txt @@ -60,7 +60,7 @@ target_sources(app PRIVATE main/BindingHandler.cpp ${GEN_DIR}/light-switch-app/zap-generated/callback-stub.cpp ${GEN_DIR}/light-switch-app/zap-generated/IMClusterCommandHandler.cpp - ${NRFCONNECT_COMMON}/util/LEDWidget.cpp + ${NRFCONNECT_COMMON}/util/LEDWidget.cpp) if(CONFIG_CHIP_OTA_REQUESTOR) From e2c28dfd077f411342a5781abe71377cd98f9874 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Mon, 22 Aug 2022 13:11:51 -0400 Subject: [PATCH 22/44] Restrict esp32 build dependencies to x64 linux. Mac seems to fail on gevent which is brought by gdbgui (#22071) --- scripts/requirements.esp32.txt | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/scripts/requirements.esp32.txt b/scripts/requirements.esp32.txt index c870b03a23cd56..4bf5479986c5a2 100644 --- a/scripts/requirements.esp32.txt +++ b/scripts/requirements.esp32.txt @@ -1,12 +1,12 @@ -click>=7.0 -future>=0.15.2 -pyparsing>=2.0.3,<2.4.0 -idf-component-manager>=0.2.99-beta -gdbgui==0.13.2.0 -pygdbmi<=0.9.0.2 -reedsolo>=1.5.3,<=1.5.4 -bitstring>=3.1.6 -ecdsa>=0.16.0 -kconfiglib==13.7.1 -construct==2.10.54 -python-socketio<5 +click>=7.0 ; platform_machine != 'aarch64' and sys_platform == 'linux' +future>=0.15.2 ; platform_machine != 'aarch64' and sys_platform == 'linux' +pyparsing>=2.0.3,<2.4.0 ; platform_machine != 'aarch64' and sys_platform == 'linux' +idf-component-manager>=0.2.99-beta ; platform_machine != 'aarch64' and sys_platform == 'linux' +gdbgui==0.13.2.0 ; platform_machine != 'aarch64' and sys_platform == 'linux' +pygdbmi<=0.9.0.2 ; platform_machine != 'aarch64' and sys_platform == 'linux' +reedsolo>=1.5.3,<=1.5.4 ; platform_machine != 'aarch64' and sys_platform == 'linux' +bitstring>=3.1.6 ; platform_machine != 'aarch64' and sys_platform == 'linux' +ecdsa>=0.16.0 ; platform_machine != 'aarch64' and sys_platform == 'linux' +kconfiglib==13.7.1 ; platform_machine != 'aarch64' and sys_platform == 'linux' +construct==2.10.54 ; platform_machine != 'aarch64' and sys_platform == 'linux' +python-socketio<5 ; platform_machine != 'aarch64' and sys_platform == 'linux' From 585a53a96f51e3e593316fba85bb8d49e0d8bb7c Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Mon, 22 Aug 2022 13:17:19 -0400 Subject: [PATCH 23/44] Disable imx docker CI check step because it always fails with no space left on device (#22050) --- .github/workflows/docker_img.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker_img.yaml b/.github/workflows/docker_img.yaml index b706dbcac39e42..73c45ee303a756 100644 --- a/.github/workflows/docker_img.yaml +++ b/.github/workflows/docker_img.yaml @@ -42,7 +42,12 @@ jobs: - "-esp32" - "-esp32-qemu" - "-infineon" - - "-imx" + # NOTE: imx image requires too much space for GitHub-hosted runners. It fails with: + # ``` + # .... + # ApplyLayer exit status 1 stdout: stderr: write /opt/fsl-imx-xwayland/5.15-kirkstone/sysroots/armv8a-poky-linux/opt/ltp/testcases/bin/fanotify15: no space left on device + # ``` + # - "-imx" - "-k32w" - "-mbed-os" - "-nrf-platform" From 3899b665418e2f79e229a5ba9498b59027de400d Mon Sep 17 00:00:00 2001 From: Sid Hsu Date: Tue, 23 Aug 2022 01:54:37 +0800 Subject: [PATCH 24/44] [Infineon] Fix CYW30739 KVS to pass the storage API audit. (#21995) * Support key length upto PersistentStorageDelegate::kKeyLengthMax. * _Get and _Put methods can handle zero-size data correctly. --- .../CYW30739/KeyValueStoreManagerImpl.cpp | 56 ++++++++++++------- .../CYW30739/KeyValueStoreManagerImpl.h | 18 +++++- 2 files changed, 50 insertions(+), 24 deletions(-) diff --git a/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.cpp b/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.cpp index 00e7a063614bb9..e61edab6ebfd18 100644 --- a/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.cpp +++ b/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.cpp @@ -44,15 +44,14 @@ CHIP_ERROR KeyValueStoreManagerImpl::Init(void) for (uint8_t configID = 0; configID < mMaxEntryCount; configID++) { - char key[CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH]; - memset(key, 0, sizeof(key)); - size_t keyLength; - err = CYW30739Config::ReadConfigValueStr(CYW30739ConfigKey(Config::kChipKvsKey_KeyBase, configID), key, sizeof(key), - keyLength); + KeyStorage keyStorage; + size_t keyStorageLength; + err = CYW30739Config::ReadConfigValueBin(CYW30739ConfigKey(Config::kChipKvsKey_KeyBase, configID), &keyStorage, + sizeof(keyStorage), keyStorageLength); if (err != CHIP_NO_ERROR) continue; - KeyConfigIdEntry * entry = Platform::New(configID, key, keyLength); + KeyConfigIdEntry * entry = Platform::New(configID, keyStorage); VerifyOrExit(entry != nullptr, err = CHIP_ERROR_NO_MEMORY); slist_add_tail(entry, &mKeyConfigIdList); @@ -75,14 +74,24 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t VerifyOrReturnError(offset_bytes == 0, CHIP_ERROR_NOT_IMPLEMENTED); - const size_t keyLength = strnlen(key, CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH); - VerifyOrExit(keyLength != 0 && keyLength <= CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH && + const size_t keyLength = strnlen(key, PersistentStorageDelegate::kKeyLengthMax); + VerifyOrExit(keyLength != 0 && keyLength <= PersistentStorageDelegate::kKeyLengthMax && value_size <= kMaxPersistedValueLengthSupported, err = CHIP_ERROR_INVALID_ARGUMENT); entry = FindEntry(key); VerifyOrExit(entry != nullptr, err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND); - VerifyOrExit(value_size != 0, err = CHIP_ERROR_BUFFER_TOO_SMALL); + + if (value_size == 0 || entry->GetValueSize() == 0) + { + if (read_bytes_size != nullptr) + *read_bytes_size = 0; + + if (value_size >= entry->GetValueSize()) + ExitNow(err = CHIP_NO_ERROR); + else + ExitNow(err = CHIP_ERROR_BUFFER_TOO_SMALL); + } size_t byte_count; err = CYW30739Config::ReadConfigValueBin(entry->GetValueConfigKey(), value, value_size, byte_count); @@ -94,6 +103,8 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t *read_bytes_size = byte_count; } + VerifyOrExit(value_size >= entry->GetValueSize(), err = CHIP_ERROR_BUFFER_TOO_SMALL); + exit: return err; } @@ -101,10 +112,10 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t CHIP_ERROR KeyValueStoreManagerImpl::_Put(const char * key, const void * value, size_t value_size) { CHIP_ERROR err = CHIP_NO_ERROR; - const KeyConfigIdEntry * entry; + KeyConfigIdEntry * entry; - const size_t keyLength = strnlen(key, CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH + 1); - VerifyOrExit(keyLength != 0 && keyLength <= CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH && + const size_t keyLength = strnlen(key, PersistentStorageDelegate::kKeyLengthMax + 1); + VerifyOrExit(keyLength != 0 && keyLength <= PersistentStorageDelegate::kKeyLengthMax && value_size <= kMaxPersistedValueLengthSupported, err = CHIP_ERROR_INVALID_ARGUMENT); @@ -112,9 +123,13 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Put(const char * key, const void * value, VerifyOrExit(entry != nullptr, ChipLogError(DeviceLayer, "%s AllocateEntry %s", __func__, ErrorStr(err)); err = CHIP_ERROR_NO_MEMORY); - SuccessOrExit(err = CYW30739Config::WriteConfigValueBin(entry->GetValueConfigKey(), value, value_size)); + if (value_size != 0) + { + SuccessOrExit(err = CYW30739Config::WriteConfigValueBin(entry->GetValueConfigKey(), value, value_size)); + } - SuccessOrExit(err = CYW30739Config::WriteConfigValueStr(entry->GetKeyConfigKey(), key, keyLength)); + entry->SetValueSize(value_size); + SuccessOrExit(err = CYW30739Config::WriteConfigValueBin(entry->GetKeyConfigKey(), &entry->mStorage, sizeof(entry->mStorage))); exit: return err; @@ -125,8 +140,8 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Delete(const char * key) CHIP_ERROR err; KeyConfigIdEntry * entry; - const size_t keyLength = strnlen(key, CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH); - VerifyOrExit(keyLength != 0 && keyLength <= CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH, err = CHIP_ERROR_INVALID_ARGUMENT); + const size_t keyLength = strnlen(key, PersistentStorageDelegate::kKeyLengthMax); + VerifyOrExit(keyLength != 0 && keyLength <= PersistentStorageDelegate::kKeyLengthMax, err = CHIP_ERROR_INVALID_ARGUMENT); entry = FindEntry(key); VerifyOrExit(entry != nullptr, err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND); @@ -156,14 +171,13 @@ CHIP_ERROR KeyValueStoreManagerImpl::EraseAll(void) return CHIP_NO_ERROR; } -KeyValueStoreManagerImpl::KeyConfigIdEntry::KeyConfigIdEntry(uint8_t configID, const char * key, size_t keyLength) : - mConfigID(configID) +KeyValueStoreManagerImpl::KeyStorage::KeyStorage(const char * key, size_t keyLength) : mValueSize(0) { memset(mKey, 0, sizeof(mKey)); memcpy(mKey, key, keyLength); } -bool KeyValueStoreManagerImpl::KeyConfigIdEntry::IsMatchKey(const char * key) const +bool KeyValueStoreManagerImpl::KeyStorage::IsMatchKey(const char * key) const { return strncmp(mKey, key, sizeof(mKey)) == 0; } @@ -175,7 +189,7 @@ KeyValueStoreManagerImpl::KeyConfigIdEntry * KeyValueStoreManagerImpl::AllocateE ReturnErrorCodeIf(newEntry != nullptr, newEntry); ReturnErrorCodeIf(!freeConfigID.HasValue(), nullptr); - newEntry = Platform::New(freeConfigID.Value(), key, keyLength); + newEntry = Platform::New(freeConfigID.Value(), KeyStorage(key, keyLength)); ReturnErrorCodeIf(newEntry == nullptr, nullptr); KeyConfigIdEntry * entry = static_cast(slist_tail(&mKeyConfigIdList)); @@ -220,7 +234,7 @@ KeyValueStoreManagerImpl::KeyConfigIdEntry * KeyValueStoreManagerImpl::FindEntry { entry = entry->Next(); - if (entry->IsMatchKey(key)) + if (entry->mStorage.IsMatchKey(key)) return entry; if (freeConfigID != nullptr && !freeConfigID->HasValue() && entry != slist_tail(&mKeyConfigIdList)) diff --git a/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.h b/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.h index a719bc6c2af7ac..5938bd28a56c98 100644 --- a/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.h +++ b/src/platform/Infineon/CYW30739/KeyValueStoreManagerImpl.h @@ -23,6 +23,7 @@ #pragma once +#include #include #include @@ -56,11 +57,20 @@ class KeyValueStoreManagerImpl final : public KeyValueStoreManager static constexpr uint8_t mMaxEntryCount = 128; - struct KeyConfigIdEntry : public slist_node_t + struct KeyStorage { - KeyConfigIdEntry(uint8_t configID, const char * key, size_t keyLength); + KeyStorage(const char * key = nullptr, size_t keyLength = 0); bool IsMatchKey(const char * key) const; + + size_t mValueSize; + char mKey[PersistentStorageDelegate::kKeyLengthMax]; + }; + + struct KeyConfigIdEntry : public slist_node_t + { + KeyConfigIdEntry(uint8_t configID, const KeyStorage & keyStorage) : mConfigID(configID), mStorage(keyStorage) {} + constexpr Config::Key GetValueConfigKey() const { return Internal::CYW30739ConfigKey(Config::kChipKvsValue_KeyBase, mConfigID); @@ -71,9 +81,11 @@ class KeyValueStoreManagerImpl final : public KeyValueStoreManager } constexpr KeyConfigIdEntry * Next() const { return static_cast(next); } constexpr uint8_t NextConfigID() const { return mConfigID + 1; } + constexpr size_t GetValueSize() const { return mStorage.mValueSize; } + constexpr void SetValueSize(size_t valueSize) { mStorage.mValueSize = valueSize; } uint8_t mConfigID; - char mKey[CHIP_CONFIG_PERSISTED_STORAGE_MAX_KEY_LENGTH]; + KeyStorage mStorage; }; KeyConfigIdEntry * AllocateEntry(const char * key, size_t keyLength); From 15ec1792a4a6e47fa62fc127d5f9463ecb1ee99c Mon Sep 17 00:00:00 2001 From: Sandeep Mistry Date: Mon, 22 Aug 2022 13:55:44 -0400 Subject: [PATCH 25/44] [Docs] Update building guide for Ubuntu 2022.04 (#21636) --- docs/guides/BUILDING.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/guides/BUILDING.md b/docs/guides/BUILDING.md index 5bcd865ca5db1b..00bf6d97a581f9 100644 --- a/docs/guides/BUILDING.md +++ b/docs/guides/BUILDING.md @@ -8,7 +8,7 @@ Tested on: - macOS 10.15 - Debian 11 -- Ubuntu 20.04 LTS +- Ubuntu 22.04 LTS Build system features: @@ -81,9 +81,8 @@ dependency. ### Installing prerequisites on Raspberry Pi 4 -Using `rpi-imager`, install the Ubuntu _21.04_ 64-bit _server_ OS for arm64 -architectures on a micro SD card. This release will have bluez 5.55 or newer -which is required for BLE functionality. +Using `rpi-imager`, install the Ubuntu _22.04_ 64-bit _server_ OS for arm64 +architectures on a micro SD card. Boot the SD card, login with the default user account "ubuntu" and password "ubuntu", then proceed with From a71a002e5377f267a57cf112980e4a49f010e5f7 Mon Sep 17 00:00:00 2001 From: jmartinez-silabs <67972863+jmartinez-silabs@users.noreply.github.com> Date: Mon, 22 Aug 2022 14:05:00 -0400 Subject: [PATCH 26/44] More cleanup for the openthread build targets and EFR32 (#22049) --- examples/chef/efr32/BUILD.gn | 1 + examples/light-switch-app/efr32/BUILD.gn | 1 + examples/lighting-app/efr32/BUILD.gn | 1 + examples/lock-app/efr32/BUILD.gn | 1 + examples/shell/shell_common/BUILD.gn | 15 ++--- examples/thermostat/efr32/BUILD.gn | 1 + examples/window-app/efr32/BUILD.gn | 1 + src/inet/BUILD.gn | 2 +- src/platform/EFR32/BUILD.gn | 4 +- src/test_driver/efr32/BUILD.gn | 1 + third_party/openthread/BUILD.gn | 21 ++++++- third_party/openthread/ot-efr32 | 2 +- third_party/silabs/BUILD.gn | 78 ++++++++++-------------- 13 files changed, 67 insertions(+), 62 deletions(-) diff --git a/examples/chef/efr32/BUILD.gn b/examples/chef/efr32/BUILD.gn index 662933081bc331..c567ae9d8f1cbf 100644 --- a/examples/chef/efr32/BUILD.gn +++ b/examples/chef/efr32/BUILD.gn @@ -207,6 +207,7 @@ efr32_executable("chef_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/light-switch-app/efr32/BUILD.gn b/examples/light-switch-app/efr32/BUILD.gn index 3118b7a6dadc18..e2705abdedcb65 100644 --- a/examples/light-switch-app/efr32/BUILD.gn +++ b/examples/light-switch-app/efr32/BUILD.gn @@ -200,6 +200,7 @@ efr32_executable("light_switch_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/lighting-app/efr32/BUILD.gn b/examples/lighting-app/efr32/BUILD.gn index 76430e8586e8d3..060b9f67343aa0 100644 --- a/examples/lighting-app/efr32/BUILD.gn +++ b/examples/lighting-app/efr32/BUILD.gn @@ -205,6 +205,7 @@ efr32_executable("lighting_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/lock-app/efr32/BUILD.gn b/examples/lock-app/efr32/BUILD.gn index bb6530f56e5313..2f8f2dc6bf67b4 100644 --- a/examples/lock-app/efr32/BUILD.gn +++ b/examples/lock-app/efr32/BUILD.gn @@ -202,6 +202,7 @@ efr32_executable("lock_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/shell/shell_common/BUILD.gn b/examples/shell/shell_common/BUILD.gn index d4b57df2f969ee..0217eb057fdff4 100644 --- a/examples/shell/shell_common/BUILD.gn +++ b/examples/shell/shell_common/BUILD.gn @@ -52,17 +52,10 @@ static_library("shell_common") { if (chip_enable_openthread && (current_os == "freertos" || current_os == "zephyr")) { - if (chip_openthread_ftd) { - public_deps += [ - "${chip_root}/third_party/openthread/repo:libopenthread-cli-ftd", - "${chip_root}/third_party/openthread/repo:libopenthread-ftd", - ] - } else { - public_deps += [ - "${chip_root}/third_party/openthread/repo:libopenthread-cli-mtd", - "${chip_root}/third_party/openthread/repo:libopenthread-mtd", - ] - } + public_deps += [ + "${chip_root}/third_party/openthread:openthread_cli", + "${chip_root}/third_party/openthread:openthread_device", + ] } if (chip_shell_cmd_server) { diff --git a/examples/thermostat/efr32/BUILD.gn b/examples/thermostat/efr32/BUILD.gn index fe2be76adf88a8..edb03073686e3e 100644 --- a/examples/thermostat/efr32/BUILD.gn +++ b/examples/thermostat/efr32/BUILD.gn @@ -196,6 +196,7 @@ efr32_executable("thermostat_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/window-app/efr32/BUILD.gn b/examples/window-app/efr32/BUILD.gn index 7d2bfbec6dca1f..c7a3f57e4b9ff8 100644 --- a/examples/window-app/efr32/BUILD.gn +++ b/examples/window-app/efr32/BUILD.gn @@ -188,6 +188,7 @@ efr32_executable("window_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/src/inet/BUILD.gn b/src/inet/BUILD.gn index cb86a45780df9c..a042007d02c5a3 100644 --- a/src/inet/BUILD.gn +++ b/src/inet/BUILD.gn @@ -107,7 +107,7 @@ static_library("inet") { } if (chip_system_config_use_open_thread_inet_endpoints) { - public_deps += [ "${chip_root}/third_party/openthread:openthread" ] + public_deps += [ "${chip_root}/third_party/openthread:openthread_device" ] } if (chip_inet_config_enable_tcp_endpoint) { diff --git a/src/platform/EFR32/BUILD.gn b/src/platform/EFR32/BUILD.gn index e406ce994eedee..eb73a6f80f85cf 100644 --- a/src/platform/EFR32/BUILD.gn +++ b/src/platform/EFR32/BUILD.gn @@ -98,9 +98,9 @@ static_library("EFR32") { "$dir_pw_kvs", ] if (chip_enable_openthread) { - public_deps += [ "${chip_root}/third_party/openthread:openthread" ] + public_deps += [ "${chip_root}/third_party/openthread:openthread_device" ] - deps += [ "${chip_root}/third_party/silabs:openthread_cli" ] + deps += [ "${chip_root}/third_party/openthread:openthread_cli" ] sources += [ "../OpenThread/OpenThreadUtils.cpp", diff --git a/src/test_driver/efr32/BUILD.gn b/src/test_driver/efr32/BUILD.gn index 45e4aff6fe40a7..8ee3c4f3e59c69 100644 --- a/src/test_driver/efr32/BUILD.gn +++ b/src/test_driver/efr32/BUILD.gn @@ -96,6 +96,7 @@ efr32_executable("efr32_device_tests") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", + "${chip_root}/third_party/openthread:openthread_device", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/third_party/openthread/BUILD.gn b/third_party/openthread/BUILD.gn index 752f245738a750..9ee8e905551837 100644 --- a/third_party/openthread/BUILD.gn +++ b/third_party/openthread/BUILD.gn @@ -16,10 +16,27 @@ group("openthread") { "${chip_root}/third_party/openthread/platforms:libopenthread-platform", "${chip_root}/third_party/openthread/platforms:libopenthread-platform-utils", ] + } +} + +group("openthread_device") { + if (chip_openthread_target != "") { + public_deps = [ chip_openthread_target ] + } else { + if (chip_openthread_ftd) { + public_deps = [ "${openthread_root}:libopenthread-ftd" ] + } else { + public_deps = [ "${openthread_root}:libopenthread-mtd" ] + } + } +} + +group("openthread_cli") { + if (chip_openthread_target == "") { if (chip_openthread_ftd) { - public_deps += [ "${openthread_root}:libopenthread-ftd" ] + public_deps = [ "${openthread_root}:libopenthread-cli-ftd" ] } else { - public_deps += [ "${openthread_root}:libopenthread-mtd" ] + public_deps = [ "${openthread_root}:libopenthread-cli-mtd" ] } } } diff --git a/third_party/openthread/ot-efr32 b/third_party/openthread/ot-efr32 index fd77faf7a3443f..1e10a32228c96f 160000 --- a/third_party/openthread/ot-efr32 +++ b/third_party/openthread/ot-efr32 @@ -1 +1 @@ -Subproject commit fd77faf7a3443f7941dfd9e9713aea09eb08e9b9 +Subproject commit 1e10a32228c96f273603612ef7d5ce693ecdf887 diff --git a/third_party/silabs/BUILD.gn b/third_party/silabs/BUILD.gn index c4f96d18d339f5..1589f72e7865ae 100644 --- a/third_party/silabs/BUILD.gn +++ b/third_party/silabs/BUILD.gn @@ -31,18 +31,6 @@ group("efr32_sdk") { public_deps = [ efr32_sdk_target ] } -if (chip_enable_openthread) { - group("openthread_cli") { - if (!use_silabs_thread_lib) { - if (chip_openthread_ftd) { - public_deps = [ "${sl_openthread_root}:libopenthread-cli-ftd" ] - } else { - public_deps = [ "${sl_openthread_root}:libopenthread-cli-mtd" ] - } - } - } -} - if (use_silabs_thread_lib) { config("libopenthread-platform_config") { include_dirs = [ "${sl_openthread_root}/examples/platforms" ] @@ -74,7 +62,6 @@ if (use_silabs_thread_lib) { "RADIO_CONFIG_DMP_SUPPORT=1", "${efr32_board}=1", "${efr32_mcu}", - "USE_SL_THREAD_CERT_LIB", "OPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE=\"openthread-core-efr32-config-check.h\"", ] @@ -88,7 +75,6 @@ if (use_silabs_thread_lib) { source_set("openthread_core_config_efr32") { sources = [ - "${sl_openthread_root}/src/cli/cli_config.h", "${sl_ot_efr32_root}/src/src/openthread-core-efr32-config-check.h", "${sl_ot_efr32_root}/src/src/openthread-core-efr32-config.h", ] @@ -102,37 +88,39 @@ if (use_silabs_thread_lib) { } source_set("ot-efr32-cert") { - sources = [ - "${sl_openthread_root}/examples/apps/cli/cli_uart.cpp", - "${sl_openthread_root}/src/cli/cli.cpp", - "${sl_openthread_root}/src/cli/cli.hpp", - "${sl_openthread_root}/src/cli/cli_coap.cpp", - "${sl_openthread_root}/src/cli/cli_coap.hpp", - "${sl_openthread_root}/src/cli/cli_coap_secure.cpp", - "${sl_openthread_root}/src/cli/cli_coap_secure.hpp", - "${sl_openthread_root}/src/cli/cli_commissioner.cpp", - "${sl_openthread_root}/src/cli/cli_commissioner.hpp", - "${sl_openthread_root}/src/cli/cli_config.h", - "${sl_openthread_root}/src/cli/cli_dataset.cpp", - "${sl_openthread_root}/src/cli/cli_dataset.hpp", - "${sl_openthread_root}/src/cli/cli_history.cpp", - "${sl_openthread_root}/src/cli/cli_history.hpp", - "${sl_openthread_root}/src/cli/cli_joiner.cpp", - "${sl_openthread_root}/src/cli/cli_joiner.hpp", - "${sl_openthread_root}/src/cli/cli_network_data.cpp", - "${sl_openthread_root}/src/cli/cli_network_data.hpp", - "${sl_openthread_root}/src/cli/cli_output.cpp", - "${sl_openthread_root}/src/cli/cli_output.hpp", - "${sl_openthread_root}/src/cli/cli_srp_client.cpp", - "${sl_openthread_root}/src/cli/cli_srp_client.hpp", - "${sl_openthread_root}/src/cli/cli_srp_server.cpp", - "${sl_openthread_root}/src/cli/cli_srp_server.hpp", - "${sl_openthread_root}/src/cli/cli_tcp.cpp", - "${sl_openthread_root}/src/cli/cli_tcp.hpp", - "${sl_openthread_root}/src/cli/cli_udp.cpp", - "${sl_openthread_root}/src/cli/cli_udp.hpp", - "${sl_openthread_root}/src/cli/x509_cert_key.hpp", - ] + if (enable_openthread_cli) { + sources = [ + "${sl_openthread_root}/examples/apps/cli/cli_uart.cpp", + "${sl_openthread_root}/src/cli/cli.cpp", + "${sl_openthread_root}/src/cli/cli.hpp", + "${sl_openthread_root}/src/cli/cli_coap.cpp", + "${sl_openthread_root}/src/cli/cli_coap.hpp", + "${sl_openthread_root}/src/cli/cli_coap_secure.cpp", + "${sl_openthread_root}/src/cli/cli_coap_secure.hpp", + "${sl_openthread_root}/src/cli/cli_commissioner.cpp", + "${sl_openthread_root}/src/cli/cli_commissioner.hpp", + "${sl_openthread_root}/src/cli/cli_config.h", + "${sl_openthread_root}/src/cli/cli_dataset.cpp", + "${sl_openthread_root}/src/cli/cli_dataset.hpp", + "${sl_openthread_root}/src/cli/cli_history.cpp", + "${sl_openthread_root}/src/cli/cli_history.hpp", + "${sl_openthread_root}/src/cli/cli_joiner.cpp", + "${sl_openthread_root}/src/cli/cli_joiner.hpp", + "${sl_openthread_root}/src/cli/cli_network_data.cpp", + "${sl_openthread_root}/src/cli/cli_network_data.hpp", + "${sl_openthread_root}/src/cli/cli_output.cpp", + "${sl_openthread_root}/src/cli/cli_output.hpp", + "${sl_openthread_root}/src/cli/cli_srp_client.cpp", + "${sl_openthread_root}/src/cli/cli_srp_client.hpp", + "${sl_openthread_root}/src/cli/cli_srp_server.cpp", + "${sl_openthread_root}/src/cli/cli_srp_server.hpp", + "${sl_openthread_root}/src/cli/cli_tcp.cpp", + "${sl_openthread_root}/src/cli/cli_tcp.hpp", + "${sl_openthread_root}/src/cli/cli_udp.cpp", + "${sl_openthread_root}/src/cli/cli_udp.hpp", + "${sl_openthread_root}/src/cli/x509_cert_key.hpp", + ] + } public_configs = [ ":openthread_efr32_config", From f68b948bd78986ed85b1ee326e05da5361e83eff Mon Sep 17 00:00:00 2001 From: jmartinez-silabs <67972863+jmartinez-silabs@users.noreply.github.com> Date: Mon, 22 Aug 2022 15:23:22 -0400 Subject: [PATCH 27/44] Fix GetBootReason prototype so it overrides the generic one, Replace sl_ot_sys_init by manual call. OT efr32MiscInit was 'stealing' the reboot cause from the matter stack (#22077) --- examples/platform/efr32/init_efrPlatform.cpp | 3 ++- src/platform/EFR32/ConfigurationManagerImpl.cpp | 5 +++-- src/platform/EFR32/ConfigurationManagerImpl.h | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/examples/platform/efr32/init_efrPlatform.cpp b/examples/platform/efr32/init_efrPlatform.cpp index a0e33702b40e68..36ee0018e8a814 100644 --- a/examples/platform/efr32/init_efrPlatform.cpp +++ b/examples/platform/efr32/init_efrPlatform.cpp @@ -68,7 +68,8 @@ void init_efrPlatform(void) #endif #if CHIP_ENABLE_OPENTHREAD - sl_ot_sys_init(); + efr32RadioInit(); + efr32AlarmInit(); #endif // CHIP_ENABLE_OPENTHREAD } diff --git a/src/platform/EFR32/ConfigurationManagerImpl.cpp b/src/platform/EFR32/ConfigurationManagerImpl.cpp index 64a66be824f61a..0dd8170da5d3b5 100644 --- a/src/platform/EFR32/ConfigurationManagerImpl.cpp +++ b/src/platform/EFR32/ConfigurationManagerImpl.cpp @@ -97,7 +97,7 @@ CHIP_ERROR ConfigurationManagerImpl::IncreaseBootCount(void) return EFR32Config::WriteConfigValue(EFR32Config::kConfigKey_BootCount, bootCount + 1); } -uint32_t ConfigurationManagerImpl::GetBootReason(void) +CHIP_ERROR ConfigurationManagerImpl::GetBootReason(uint32_t & bootReason) { // rebootCause is obtained at bootup. BootReasonType matterBootCause; @@ -150,7 +150,8 @@ uint32_t ConfigurationManagerImpl::GetBootReason(void) matterBootCause = BootReasonType::kUnspecified; #endif - return to_underlying(matterBootCause); + bootReason = to_underlying(matterBootCause); + return CHIP_NO_ERROR; } CHIP_ERROR ConfigurationManagerImpl::GetTotalOperationalHours(uint32_t & totalOperationalHours) diff --git a/src/platform/EFR32/ConfigurationManagerImpl.h b/src/platform/EFR32/ConfigurationManagerImpl.h index aaebd3ea65ac91..2f40d8d260a363 100644 --- a/src/platform/EFR32/ConfigurationManagerImpl.h +++ b/src/platform/EFR32/ConfigurationManagerImpl.h @@ -40,7 +40,7 @@ class ConfigurationManagerImpl : public Internal::GenericConfigurationManagerImp // This returns an instance of this class. static ConfigurationManagerImpl & GetDefaultInstance(); - uint32_t GetBootReason(void); + CHIP_ERROR GetBootReason(uint32_t & bootReason); CHIP_ERROR GetRebootCount(uint32_t & rebootCount); CHIP_ERROR IncreaseBootCount(void); CHIP_ERROR GetTotalOperationalHours(uint32_t & totalOperationalHours); From 6681060d7d44832bac7534464a84cab72bec62b1 Mon Sep 17 00:00:00 2001 From: Ricardo Casallas <77841255+rcasallas-silabs@users.noreply.github.com> Date: Mon, 22 Aug 2022 16:41:58 -0400 Subject: [PATCH 28/44] [EFR32] Fix CSR length. (#22080) --- src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp | 4 +++- src/platform/EFR32/Efr32PsaOpaqueKeypair.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp b/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp index 6077681f19eb57..72c4706501f851 100644 --- a/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp +++ b/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp @@ -894,7 +894,9 @@ P256Keypair::~P256Keypair() CHIP_ERROR P256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & csr_length) const { MutableByteSpan csr(out_csr, csr_length); - return GenerateCertificateSigningRequest(this, csr); + CHIP_ERROR err = GenerateCertificateSigningRequest(this, csr); + csr_length = (CHIP_NO_ERROR == err) ? csr.size() : 0; + return err; } CHIP_ERROR VerifyCertificateSigningRequest(const uint8_t * csr_buf, size_t csr_length, P256PublicKey & pubkey) diff --git a/src/platform/EFR32/Efr32PsaOpaqueKeypair.cpp b/src/platform/EFR32/Efr32PsaOpaqueKeypair.cpp index b1c32dc028471d..da72af848bab51 100644 --- a/src/platform/EFR32/Efr32PsaOpaqueKeypair.cpp +++ b/src/platform/EFR32/Efr32PsaOpaqueKeypair.cpp @@ -407,7 +407,9 @@ CHIP_ERROR EFR32OpaqueP256Keypair::Deserialize(P256SerializedKeypair & input) CHIP_ERROR EFR32OpaqueP256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & csr_length) const { MutableByteSpan csr(out_csr, csr_length); - return GenerateCertificateSigningRequest(this, csr); + CHIP_ERROR err = GenerateCertificateSigningRequest(this, csr); + csr_length = (CHIP_NO_ERROR == err) ? csr.size() : 0; + return err; } CHIP_ERROR EFR32OpaqueP256Keypair::ECDSA_sign_msg(const uint8_t * msg, size_t msg_length, P256ECDSASignature & out_signature) const From f6929bb913bca7f5d5d7b770788e8d6f3c74ed29 Mon Sep 17 00:00:00 2001 From: jmartinez-silabs <67972863+jmartinez-silabs@users.noreply.github.com> Date: Mon, 22 Aug 2022 18:12:16 -0400 Subject: [PATCH 29/44] Set MAX_EXCHANGE_CONTEXT and NUM_UDP_ENDPOINT to match minimal requirements of matter spec (#22078) --- src/platform/EFR32/CHIPPlatformConfig.h | 2 +- src/platform/EFR32/InetPlatformConfig.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform/EFR32/CHIPPlatformConfig.h b/src/platform/EFR32/CHIPPlatformConfig.h index decc6c59602779..cffeb4645ec29d 100644 --- a/src/platform/EFR32/CHIPPlatformConfig.h +++ b/src/platform/EFR32/CHIPPlatformConfig.h @@ -57,7 +57,7 @@ #endif // CHIP_CONFIG_MAX_UNSOLICITED_MESSAGE_HANDLERS #ifndef CHIP_CONFIG_MAX_EXCHANGE_CONTEXTS -#define CHIP_CONFIG_MAX_EXCHANGE_CONTEXTS 8 +#define CHIP_CONFIG_MAX_EXCHANGE_CONTEXTS 20 #endif // CHIP_CONFIG_MAX_EXCHANGE_CONTEXTS #ifndef CHIP_LOG_FILTERING diff --git a/src/platform/EFR32/InetPlatformConfig.h b/src/platform/EFR32/InetPlatformConfig.h index 3e8bb9a2f6d229..fe3304fa5d9915 100644 --- a/src/platform/EFR32/InetPlatformConfig.h +++ b/src/platform/EFR32/InetPlatformConfig.h @@ -49,5 +49,5 @@ #endif // INET_CONFIG_NUM_TCP_ENDPOINTS #ifndef INET_CONFIG_NUM_UDP_ENDPOINTS -#define INET_CONFIG_NUM_UDP_ENDPOINTS 6 +#define INET_CONFIG_NUM_UDP_ENDPOINTS 20 #endif // INET_CONFIG_NUM_UDP_ENDPOINTS From 095f6b5a25ca44d2b130816ed326d0130ed70697 Mon Sep 17 00:00:00 2001 From: chirag-silabs <100861685+chirag-silabs@users.noreply.github.com> Date: Tue, 23 Aug 2022 09:14:02 +0530 Subject: [PATCH 30/44] [EFR32] Setting the network interface type to WIFI for wifi devices (#22041) * EFR32 wifi setting the network interface type to WIFI * Changes as per the suggestions * Changing the if condition * Correcting the code by adding ; for the build to be succeed --- src/platform/EFR32/DiagnosticDataProviderImpl.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/platform/EFR32/DiagnosticDataProviderImpl.cpp b/src/platform/EFR32/DiagnosticDataProviderImpl.cpp index a6d4833b65fe4b..31858125a0665b 100644 --- a/src/platform/EFR32/DiagnosticDataProviderImpl.cpp +++ b/src/platform/EFR32/DiagnosticDataProviderImpl.cpp @@ -264,7 +264,8 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetNetworkInterfaces(NetworkInterface ** ifp->name = CharSpan::fromCharString(ifp->Name); ifp->isOperational = true; Inet::InterfaceType interfaceType; - if (interfaceIterator.GetInterfaceType(interfaceType) == CHIP_NO_ERROR) + CHIP_ERROR err = interfaceIterator.GetInterfaceType(interfaceType); + if (err == CHIP_NO_ERROR || err == CHIP_ERROR_NOT_IMPLEMENTED) { switch (interfaceType) { @@ -283,6 +284,9 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetNetworkInterfaces(NetworkInterface ** case Inet::InterfaceType::Cellular: ifp->type = EMBER_ZCL_INTERFACE_TYPE_CELLULAR; break; + default: + ifp->type = EMBER_ZCL_INTERFACE_TYPE_WI_FI; + break; } } else From 3b41dbe4dc520544be62be3b19e2b63140bb8428 Mon Sep 17 00:00:00 2001 From: rgoliver Date: Mon, 22 Aug 2022 23:46:58 -0400 Subject: [PATCH 31/44] OTA: Add SetMetadataForProvider to requestor (#22005) * OTA: Add SetMetadataForProvider to requestor Add a setter for the OTA MetadataForProvider, which is provided during the QueryImageRequest. * RPC: Add RPC to set ota metadata for provider Add an RPC to set the TLV data in metadata for provider, which is used during the SendQueryImageRequest. --- .../pigweed/protos/device_service.options | 1 + .../pigweed/protos/device_service.proto | 5 +++ examples/common/pigweed/rpc_services/Device.h | 33 +++++++++++++++++-- .../ota-requestor/DefaultOTARequestor.cpp | 1 + .../ota-requestor/DefaultOTARequestor.h | 5 +++ .../ota-requestor/OTARequestorInterface.h | 3 ++ 6 files changed, 45 insertions(+), 3 deletions(-) diff --git a/examples/common/pigweed/protos/device_service.options b/examples/common/pigweed/protos/device_service.options index b5f9da673ff778..a0798688c38a84 100644 --- a/examples/common/pigweed/protos/device_service.options +++ b/examples/common/pigweed/protos/device_service.options @@ -5,3 +5,4 @@ chip.rpc.PairingInfo.qr_code max_size:256 chip.rpc.PairingInfo.qr_code_url max_size:256 chip.rpc.SpakeInfo.verifier max_size:97 // kSpake2p_VerifierSerialized_Length chip.rpc.SpakeInfo.salt max_size:32 // kSpake2p_Max_PBKDF_Salt_Length +chip.rpc.MetadataForProvider.tlv max_size:512 // length defined in chip spec 11.20.6.7 diff --git a/examples/common/pigweed/protos/device_service.proto b/examples/common/pigweed/protos/device_service.proto index 1c13d7d7281f14..6903e4a9055414 100644 --- a/examples/common/pigweed/protos/device_service.proto +++ b/examples/common/pigweed/protos/device_service.proto @@ -41,10 +41,15 @@ message PairingState { bool pairing_enabled = 1; } +message MetadataForProvider { + bytes tlv = 1; +} + service Device { rpc FactoryReset(pw.protobuf.Empty) returns (pw.protobuf.Empty){} rpc Reboot(pw.protobuf.Empty) returns (pw.protobuf.Empty){} rpc TriggerOta(pw.protobuf.Empty) returns (pw.protobuf.Empty){} + rpc SetOtaMetadataForProvider(MetadataForProvider) returns (pw.protobuf.Empty){} rpc GetDeviceInfo(pw.protobuf.Empty) returns (DeviceInfo){} rpc GetDeviceState(pw.protobuf.Empty) returns (DeviceState){} rpc SetPairingState(PairingState) returns (pw.protobuf.Empty){} diff --git a/examples/common/pigweed/rpc_services/Device.h b/examples/common/pigweed/rpc_services/Device.h index d3d5afd165810d..4a80cb44516236 100644 --- a/examples/common/pigweed/rpc_services/Device.h +++ b/examples/common/pigweed/rpc_services/Device.h @@ -223,7 +223,7 @@ class Device : public pw_rpc::nanopb::Device::Service virtual pw::Status TriggerOta(const pw_protobuf_Empty & request, pw_protobuf_Empty & response) { -#if CONFIG_CHIP_OTA_REQUESTOR +#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR chip::DeviceLayer::PlatformMgr().ScheduleWork( [](intptr_t) { chip::OTARequestorInterface * requestor = chip::GetRequestorInstance(); @@ -238,10 +238,33 @@ class Device : public pw_rpc::nanopb::Device::Service }, reinterpret_cast(nullptr)); return pw::OkStatus(); -#else +#else // CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR ChipLogError(AppServer, "Trigger OTA requested, but OTA requestor not compiled in."); return pw::Status::Unimplemented(); -#endif +#endif // CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR + } + + virtual pw::Status SetOtaMetadataForProvider(const chip_rpc_MetadataForProvider & request, pw_protobuf_Empty & response) + { +#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR + chip::OTARequestorInterface * requestor = chip::GetRequestorInstance(); + if (requestor == nullptr) + { + ChipLogError(SoftwareUpdate, "Can't get the CASESessionManager"); + return pw::Status::Unavailable(); + } + else if (sizeof(metadataForProviderBuffer) < request.tlv.size) + { + return pw::Status::ResourceExhausted(); + } + memcpy(metadataForProviderBuffer, request.tlv.bytes, request.tlv.size); + DeviceLayer::StackLock lock; + requestor->SetMetadataForProvider(chip::ByteSpan(metadataForProviderBuffer, request.tlv.size)); + return pw::OkStatus(); +#else // CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR + ChipLogError(AppServer, "OTA set metadata for provider requested, but OTA requestor not compiled in."); + return pw::Status::Unimplemented(); +#endif // CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR } virtual pw::Status SetPairingState(const chip_rpc_PairingState & request, pw_protobuf_Empty & response) @@ -415,6 +438,10 @@ class Device : public pw_rpc::nanopb::Device::Service } private: +#if CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR + static constexpr size_t kMaxMetadataForProviderLength = 512; // length defined in chip spec 11.20.6.7 + uint8_t metadataForProviderBuffer[kMaxMetadataForProviderLength]; +#endif // CHIP_DEVICE_CONFIG_ENABLE_OTA_REQUESTOR Internal::CommissionableDataProviderRpcWrapper mCommissionableDataProvider; }; diff --git a/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp b/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp index f31bb2e0c5408a..f96b85ed9b4963 100644 --- a/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp +++ b/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp @@ -767,6 +767,7 @@ CHIP_ERROR DefaultOTARequestor::SendQueryImageRequest(Messaging::ExchangeManager args.location.SetValue(CharSpan("XX", strlen("XX"))); } + args.metadataForProvider = mMetadataForProvider; Controller::OtaSoftwareUpdateProviderCluster cluster(exchangeMgr, sessionHandle, mProviderLocation.Value().endpoint); return cluster.InvokeCommand(args, this, OnQueryImageResponse, OnQueryImageFailure); diff --git a/src/app/clusters/ota-requestor/DefaultOTARequestor.h b/src/app/clusters/ota-requestor/DefaultOTARequestor.h index 9f9902858c3141..938f2be59f671a 100644 --- a/src/app/clusters/ota-requestor/DefaultOTARequestor.h +++ b/src/app/clusters/ota-requestor/DefaultOTARequestor.h @@ -92,6 +92,10 @@ class DefaultOTARequestor : public OTARequestorInterface, public BDXDownloader:: void GetProviderLocation(Optional & providerLocation) override { providerLocation = mProviderLocation; } + // Set the metadata value for the provider to be used in the next query and OTA update process + // NOTE: Does not persist across reboot. + void SetMetadataForProvider(ByteSpan metadataForProvider) override { mMetadataForProvider.SetValue(metadataForProvider); } + // Add a default OTA provider to the cached list CHIP_ERROR AddDefaultOtaProvider(const ProviderLocationType & providerLocation) override; @@ -319,6 +323,7 @@ class DefaultOTARequestor : public OTARequestorInterface, public BDXDownloader:: BDXDownloader * mBdxDownloader = nullptr; // TODO: this should be OTADownloader BDXMessenger mBdxMessenger; // TODO: ideally this is held by the application uint8_t mUpdateTokenBuffer[kMaxUpdateTokenLen]; + Optional mMetadataForProvider; ByteSpan mUpdateToken; uint32_t mCurrentVersion = 0; uint32_t mTargetVersion = 0; diff --git a/src/app/clusters/ota-requestor/OTARequestorInterface.h b/src/app/clusters/ota-requestor/OTARequestorInterface.h index f24563d36c3c79..bd09f833971cc0 100644 --- a/src/app/clusters/ota-requestor/OTARequestorInterface.h +++ b/src/app/clusters/ota-requestor/OTARequestorInterface.h @@ -203,6 +203,9 @@ class OTARequestorInterface // Set the provider location to be used in the next query and OTA update process virtual void SetCurrentProviderLocation(ProviderLocationType providerLocation) = 0; + // Set the metadata value for the provider to be used in the next query and OTA update process + virtual void SetMetadataForProvider(chip::ByteSpan metadataForProvider) = 0; + // If there is an OTA update in progress, returns the provider location for the current OTA update, otherwise, returns the // provider location that was last used virtual void GetProviderLocation(Optional & providerLocation) = 0; From 48f87f3ce2b3b8457af63f8e68dbf3f1e42ae219 Mon Sep 17 00:00:00 2001 From: Tennessee Carmel-Veilleux Date: Mon, 22 Aug 2022 23:47:09 -0400 Subject: [PATCH 32/44] Add missing validity checks to CSR verification (#22069) * Add missing validity checks to CSR verification - SDK's CSR verification (VerifyCertificateSigningRequest) allowed trailing garbage past the end of the buffer if the primary SEQUENCE element is OK and checks-out. This is looser enforcement than some crypto libraries which expect a CSR to be 100% valid ASN.1 DER and have no unnecessary bytes or otherwise unparsable bytes. Fixes #22068 This PR: - Adds validity checks for size and basic format that catches the problem. - Adds unit tests that use externally generated CSRs to validate the `VerifyCertificateSigningRequest` logic, rather than only relying on round-trips with generation. Testing done: - Added new unit tests. Existing unit tests pass - Tested under OpenSSL, BoringSSL and mbedTLS * Fix docs typo --- src/crypto/CHIPCryptoPAL.cpp | 23 +++ src/crypto/CHIPCryptoPAL.h | 15 ++ src/crypto/CHIPCryptoPALOpenSSL.cpp | 2 + src/crypto/CHIPCryptoPALTinyCrypt.cpp | 2 + src/crypto/CHIPCryptoPALmbedTLS.cpp | 2 + src/crypto/tests/CHIPCryptoPALTest.cpp | 165 +++++++++++++++++++ src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp | 2 + 7 files changed, 211 insertions(+) diff --git a/src/crypto/CHIPCryptoPAL.cpp b/src/crypto/CHIPCryptoPAL.cpp index ec2e415806c23b..859f5809e4b742 100644 --- a/src/crypto/CHIPCryptoPAL.cpp +++ b/src/crypto/CHIPCryptoPAL.cpp @@ -1092,5 +1092,28 @@ CHIP_ERROR GenerateCertificateSigningRequest(const P256Keypair * keypair, Mutabl return err; } +CHIP_ERROR VerifyCertificateSigningRequestFormat(const uint8_t * csr, size_t csr_length) +{ + // Ensure we have enough size to validate header + VerifyOrReturnError((csr_length >= 16) && (csr_length <= kMAX_CSR_Length), CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + Reader reader(csr, csr_length); + + // Ensure we have an outermost SEQUENCE + uint8_t seq_header = 0; + ReturnErrorOnFailure(reader.Read8(&seq_header).StatusCode()); + VerifyOrReturnError(seq_header == kSeqTag, CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + uint8_t seq_length = 0; + VerifyOrReturnError(ReadDerLength(reader, seq_length) == CHIP_NO_ERROR, CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + // Ensure that outer length matches sequence length + tag overhead, otherwise + // we have trailing garbage + size_t header_overhead = (seq_length <= 127) ? 2 : 3; + VerifyOrReturnError(csr_length == (seq_length + header_overhead), CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + return CHIP_NO_ERROR; +} + } // namespace Crypto } // namespace chip diff --git a/src/crypto/CHIPCryptoPAL.h b/src/crypto/CHIPCryptoPAL.h index ea67c59a5765c1..544a554dcb31eb 100644 --- a/src/crypto/CHIPCryptoPAL.h +++ b/src/crypto/CHIPCryptoPAL.h @@ -640,8 +640,23 @@ CHIP_ERROR AES_CCM_decrypt(const uint8_t * ciphertext, size_t ciphertext_length, **/ CHIP_ERROR GenerateCertificateSigningRequest(const P256Keypair * keypair, MutableByteSpan & csr_span); +/** + * @brief Common code to validate ASN.1 format/size of a CSR, used by VerifyCertificateSigningRequest. + * + * Ensures it's not obviously malformed and doesn't have trailing garbage. + * + * @param csr CSR in DER format + * @param csr_length The length of the CSR buffer + * @return CHIP_ERROR_UNSUPPORTED_CERT_FORMAT on invalid format, CHIP_NO_ERROR otherwise. + */ +CHIP_ERROR VerifyCertificateSigningRequestFormat(const uint8_t * csr, size_t csr_length); + /** * @brief Verify the Certificate Signing Request (CSR). If successfully verified, it outputs the public key from the CSR. + * + * The CSR is valid if the format is correct, the signature validates with the embedded public + * key, and there is no trailing garbage data. + * * @param csr CSR in DER format * @param csr_length The length of the CSR * @param pubkey The public key from the verified CSR diff --git a/src/crypto/CHIPCryptoPALOpenSSL.cpp b/src/crypto/CHIPCryptoPALOpenSSL.cpp index 761294d0cc84ee..d1211bccbc5da2 100644 --- a/src/crypto/CHIPCryptoPALOpenSSL.cpp +++ b/src/crypto/CHIPCryptoPALOpenSSL.cpp @@ -1254,6 +1254,8 @@ CHIP_ERROR P256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & CHIP_ERROR VerifyCertificateSigningRequest(const uint8_t * csr, size_t csr_length, P256PublicKey & pubkey) { + ReturnErrorOnFailure(VerifyCertificateSigningRequestFormat(csr, csr_length)); + ERR_clear_error(); CHIP_ERROR error = CHIP_NO_ERROR; int result = 0; diff --git a/src/crypto/CHIPCryptoPALTinyCrypt.cpp b/src/crypto/CHIPCryptoPALTinyCrypt.cpp index ae166a294744fc..aa9df451cc692a 100644 --- a/src/crypto/CHIPCryptoPALTinyCrypt.cpp +++ b/src/crypto/CHIPCryptoPALTinyCrypt.cpp @@ -777,6 +777,8 @@ CHIP_ERROR P256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & CHIP_ERROR VerifyCertificateSigningRequest(const uint8_t * csr_buf, size_t csr_length, P256PublicKey & pubkey) { #if defined(MBEDTLS_X509_CSR_PARSE_C) + ReturnErrorOnFailure(VerifyCertificateSigningRequestFormat(csr_buf, csr_length)); + // TODO: For some embedded targets, mbedTLS library doesn't have mbedtls_x509_csr_parse_der, and mbedtls_x509_csr_parse_free. // Taking a step back, embedded targets likely will not process CSR requests. Adding this action item to reevaluate // this if there's a need for this processing for embedded targets. diff --git a/src/crypto/CHIPCryptoPALmbedTLS.cpp b/src/crypto/CHIPCryptoPALmbedTLS.cpp index 9bce7e94430796..dfbd993f023d8d 100644 --- a/src/crypto/CHIPCryptoPALmbedTLS.cpp +++ b/src/crypto/CHIPCryptoPALmbedTLS.cpp @@ -889,6 +889,8 @@ CHIP_ERROR P256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & CHIP_ERROR VerifyCertificateSigningRequest(const uint8_t * csr_buf, size_t csr_length, P256PublicKey & pubkey) { #if defined(MBEDTLS_X509_CSR_PARSE_C) + ReturnErrorOnFailure(VerifyCertificateSigningRequestFormat(csr_buf, csr_length)); + // TODO: For some embedded targets, mbedTLS library doesn't have mbedtls_x509_csr_parse_der, and mbedtls_x509_csr_parse_free. // Taking a step back, embedded targets likely will not process CSR requests. Adding this action item to reevaluate // this if there's a need for this processing for embedded targets. diff --git a/src/crypto/tests/CHIPCryptoPALTest.cpp b/src/crypto/tests/CHIPCryptoPALTest.cpp index 8c76468e6158ea..485ead2cf99322 100644 --- a/src/crypto/tests/CHIPCryptoPALTest.cpp +++ b/src/crypto/tests/CHIPCryptoPALTest.cpp @@ -1034,6 +1034,170 @@ static void TestP256_Keygen(nlTestSuite * inSuite, void * inContext) NL_TEST_ASSERT(inSuite, keypair.Pubkey().ECDSA_validate_msg_signature(test_msg, msglen, test_sig) == CHIP_NO_ERROR); } +void TestCSR_Verify(nlTestSuite * inSuite, void * inContext) +{ + Crypto::P256PublicKey pubKey; + CHIP_ERROR err; + + // First case: there is trailing garbage in the CSR + { + const uint8_t kBadTrailingGarbageCsr[255] = { + 0x30, 0x81, 0xda, 0x30, 0x81, 0x81, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x0c, 0x03, 0x43, 0x53, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, + 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x72, 0x48, 0xc0, 0x36, 0xf0, 0x12, 0x5f, 0xd1, + 0x68, 0x92, 0x2d, 0xee, 0x57, 0x2b, 0x8e, 0x20, 0x9d, 0x97, 0xfa, 0x73, 0x92, 0xf1, 0xa0, 0x91, 0x0e, 0xfd, 0x04, 0x93, + 0x66, 0x47, 0x3c, 0xa3, 0xf0, 0xa8, 0x47, 0xa1, 0xa3, 0x1e, 0x13, 0x3b, 0x67, 0x3b, 0x18, 0xca, 0x77, 0xd1, 0xea, 0xe3, + 0x74, 0x93, 0x49, 0x8b, 0x9d, 0xdc, 0xef, 0xf9, 0xd5, 0x9b, 0x27, 0x19, 0xad, 0x6e, 0x90, 0xd2, 0xa0, 0x11, 0x30, 0x0f, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x0e, 0x31, 0x02, 0x30, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x6a, 0x2e, 0x15, 0x34, 0x1b, 0xde, + 0xcb, 0x8f, 0xd2, 0xfd, 0x35, 0x03, 0x89, 0x0e, 0xed, 0x23, 0x54, 0xff, 0xcb, 0x79, 0xf9, 0xcb, 0x40, 0x33, 0x59, 0xb4, + 0x27, 0x69, 0xeb, 0x07, 0x3b, 0xd5, 0x02, 0x21, 0x00, 0xb0, 0x25, 0xc9, 0xc2, 0x21, 0xe8, 0x54, 0xcc, 0x08, 0x12, 0xf5, + 0x10, 0x3a, 0x0b, 0x25, 0x20, 0x0a, 0x61, 0x38, 0xc8, 0x6f, 0x82, 0xa7, 0x51, 0x84, 0x61, 0xae, 0x93, 0x69, 0xe4, 0x74, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + + err = VerifyCertificateSigningRequest(&kBadTrailingGarbageCsr[0], sizeof(kBadTrailingGarbageCsr), pubKey); + + // On first test case, check if CSRs are supported at all, and skip test if they are not. + if (err == CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE) + { + ChipLogError(Crypto, "The current platform does not support CSR parsing."); + return; + } + + NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + + err = VerifyCertificateSigningRequestFormat(&kBadTrailingGarbageCsr[0], sizeof(kBadTrailingGarbageCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + } + + // Second case: correct CSR + { + const uint8_t kGoodCsr[205] = { + 0x30, 0x81, 0xca, 0x30, 0x70, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x0c, 0x03, 0x43, 0x53, 0x52, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xa3, 0xbe, 0xa1, 0xf5, 0x42, 0x01, + 0x07, 0x3c, 0x4b, 0x75, 0x85, 0xd8, 0xe2, 0x98, 0xac, 0x2f, 0xf6, 0x98, 0xdb, 0xd9, 0x5b, 0xe0, 0x7e, 0xc1, 0x04, + 0xd5, 0x73, 0xc5, 0xb0, 0x90, 0x77, 0x27, 0x00, 0x1e, 0x22, 0xc7, 0x89, 0x5e, 0x4d, 0x75, 0x07, 0x89, 0x82, 0x0f, + 0x49, 0xb6, 0x59, 0xd5, 0xc5, 0x15, 0x7d, 0x93, 0xe6, 0x80, 0x5c, 0x70, 0x89, 0x0a, 0x43, 0x10, 0x3d, 0xeb, 0x3d, + 0x4a, 0xa0, 0x00, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x48, + 0x00, 0x30, 0x45, 0x02, 0x20, 0x1d, 0x86, 0x21, 0xb4, 0xc2, 0xe1, 0xa9, 0xf3, 0xbc, 0xc8, 0x7c, 0xda, 0xb4, 0xb9, + 0xc6, 0x8c, 0xd0, 0xe4, 0x9a, 0x9c, 0xef, 0x02, 0x93, 0x98, 0x27, 0x7e, 0x81, 0x21, 0x5d, 0x20, 0x9d, 0x32, 0x02, + 0x21, 0x00, 0x8b, 0x6b, 0x49, 0xb6, 0x7d, 0x3e, 0x67, 0x9e, 0xb1, 0x22, 0xd3, 0x63, 0x82, 0x40, 0x4f, 0x49, 0xa4, + 0xdc, 0x17, 0x35, 0xac, 0x4b, 0x7a, 0xbf, 0x52, 0x05, 0x58, 0x68, 0xe0, 0xaa, 0xd2, 0x8e, + }; + const uint8_t kGoodCsrSubjectPublicKey[65] = { + 0x04, 0xa3, 0xbe, 0xa1, 0xf5, 0x42, 0x01, 0x07, 0x3c, 0x4b, 0x75, 0x85, 0xd8, 0xe2, 0x98, 0xac, 0x2f, + 0xf6, 0x98, 0xdb, 0xd9, 0x5b, 0xe0, 0x7e, 0xc1, 0x04, 0xd5, 0x73, 0xc5, 0xb0, 0x90, 0x77, 0x27, 0x00, + 0x1e, 0x22, 0xc7, 0x89, 0x5e, 0x4d, 0x75, 0x07, 0x89, 0x82, 0x0f, 0x49, 0xb6, 0x59, 0xd5, 0xc5, 0x15, + 0x7d, 0x93, 0xe6, 0x80, 0x5c, 0x70, 0x89, 0x0a, 0x43, 0x10, 0x3d, 0xeb, 0x3d, 0x4a, + }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + + err = VerifyCertificateSigningRequestFormat(&kGoodCsr[0], sizeof(kGoodCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + err = VerifyCertificateSigningRequest(&kGoodCsr[0], sizeof(kGoodCsr), pubKey); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + Crypto::P256PublicKey expected(kGoodCsrSubjectPublicKey); + NL_TEST_ASSERT(inSuite, pubKey.Matches(expected)); + } + + // Third case: bad signature + { + const uint8_t kBadSignatureSignatureCsr[205] = { + 0x30, 0x81, 0xca, 0x30, 0x70, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x0c, 0x03, 0x43, 0x53, 0x52, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xa3, 0xbe, 0xa1, 0xf5, 0x42, 0x01, + 0x07, 0x3c, 0x4b, 0x75, 0x85, 0xd8, 0xe2, 0x98, 0xac, 0x2f, 0xf6, 0x98, 0xdb, 0xd9, 0x5b, 0xe0, 0x7e, 0xc1, 0x04, + 0xd5, 0x73, 0xc5, 0xb0, 0x90, 0x77, 0x27, 0x00, 0x1e, 0x22, 0xc7, 0x89, 0x5e, 0x4d, 0x75, 0x07, 0x89, 0x82, 0x0f, + 0x49, 0xb6, 0x59, 0xd5, 0xc5, 0x15, 0x7d, 0x93, 0xe6, 0x80, 0x5c, 0x70, 0x89, 0x0a, 0x43, 0x10, 0x3d, 0xeb, 0x3d, + 0x4a, 0xa0, 0x00, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x48, + 0x00, 0x30, 0x45, 0x02, 0x20, 0x1d, 0x86, 0x21, 0xb4, 0xc2, 0xe1, 0xa9, 0xf3, 0xbc, 0xc8, 0x7c, 0xda, 0xb4, 0xb9, + 0xc6, 0x8c, 0xd0, 0xe4, 0x9a, 0x9c, 0xef, 0x02, 0x93, 0x98, 0x27, 0x7e, 0x81, 0x21, 0x5d, 0x20, 0x9d, 0x32, 0x02, + 0x21, 0x00, 0x8b, 0x6b, 0x49, 0xb6, 0x7d, 0x3e, 0x67, 0x9e, 0xb1, 0x21, 0xd3, 0x63, 0x82, 0x40, 0x4f, 0x49, 0xa4, + 0xdc, 0x17, 0x35, 0xac, 0x4b, 0x7a, 0xbf, 0x52, 0x05, 0x58, 0x68, 0xe0, 0xaa, 0xd2, 0x8e, + }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + + err = VerifyCertificateSigningRequestFormat(&kBadSignatureSignatureCsr[0], sizeof(kBadSignatureSignatureCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_NO_ERROR); + + err = VerifyCertificateSigningRequest(&kBadSignatureSignatureCsr[0], sizeof(kBadSignatureSignatureCsr), pubKey); + NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + } + + // Fourth case: CSR too big + { + const uint8_t kBadTooBigCsr[256] = { + 0x30, 0x81, 0xda, 0x30, 0x81, 0x81, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x0c, 0x03, 0x43, 0x53, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, + 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x72, 0x48, 0xc0, 0x36, 0xf0, 0x12, 0x5f, 0xd1, + 0x68, 0x92, 0x2d, 0xee, 0x57, 0x2b, 0x8e, 0x20, 0x9d, 0x97, 0xfa, 0x73, 0x92, 0xf1, 0xa0, 0x91, 0x0e, 0xfd, 0x04, 0x93, + 0x66, 0x47, 0x3c, 0xa3, 0xf0, 0xa8, 0x47, 0xa1, 0xa3, 0x1e, 0x13, 0x3b, 0x67, 0x3b, 0x18, 0xca, 0x77, 0xd1, 0xea, 0xe3, + 0x74, 0x93, 0x49, 0x8b, 0x9d, 0xdc, 0xef, 0xf9, 0xd5, 0x9b, 0x27, 0x19, 0xad, 0x6e, 0x90, 0xd2, 0xa0, 0x11, 0x30, 0x0f, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x0e, 0x31, 0x02, 0x30, 0x00, 0x30, 0x0a, 0x06, 0x08, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x6a, 0x2e, 0x15, 0x34, 0x1b, 0xde, + 0xcb, 0x8f, 0xd2, 0xfd, 0x35, 0x03, 0x89, 0x0e, 0xed, 0x23, 0x54, 0xff, 0xcb, 0x79, 0xf9, 0xcb, 0x40, 0x33, 0x59, 0xb4, + 0x27, 0x69, 0xeb, 0x07, 0x3b, 0xd5, 0x02, 0x21, 0x00, 0xb0, 0x25, 0xc9, 0xc2, 0x21, 0xe8, 0x54, 0xcc, 0x08, 0x12, 0xf5, + 0x10, 0x3a, 0x0b, 0x25, 0x20, 0x0a, 0x61, 0x38, 0xc8, 0x6f, 0x82, 0xa7, 0x51, 0x84, 0x61, 0xae, 0x93, 0x69, 0xe4, 0x74, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + err = VerifyCertificateSigningRequestFormat(&kBadTooBigCsr[0], sizeof(kBadTooBigCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + err = VerifyCertificateSigningRequest(&kBadTooBigCsr[0], sizeof(kBadTooBigCsr), pubKey); + NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + } + + // Fifth case: obviously invalid CSR (1/2) + { + const uint8_t kTooSmallCsr[10] = { 0x30, 0x81, 0xda, 0x30, 0x81, 0x81, 0x02, 0x01, 0x00, 0x30 }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + + err = VerifyCertificateSigningRequestFormat(&kTooSmallCsr[0], sizeof(kTooSmallCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + err = VerifyCertificateSigningRequest(&kTooSmallCsr[0], sizeof(kTooSmallCsr), pubKey); + NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + } + + // Sixth case: obviously invalid CSR (2/2) + { + const uint8_t kNotSequenceCsr[205] = { + 0x31, 0x81, 0xca, 0x30, 0x70, 0x02, 0x01, 0x00, 0x30, 0x0e, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x0c, 0x03, 0x43, 0x53, 0x52, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xa3, 0xbe, 0xa1, 0xf5, 0x42, 0x01, + 0x07, 0x3c, 0x4b, 0x75, 0x85, 0xd8, 0xe2, 0x98, 0xac, 0x2f, 0xf6, 0x98, 0xdb, 0xd9, 0x5b, 0xe0, 0x7e, 0xc1, 0x04, + 0xd5, 0x73, 0xc5, 0xb0, 0x90, 0x77, 0x27, 0x00, 0x1e, 0x22, 0xc7, 0x89, 0x5e, 0x4d, 0x75, 0x07, 0x89, 0x82, 0x0f, + 0x49, 0xb6, 0x59, 0xd5, 0xc5, 0x15, 0x7d, 0x93, 0xe6, 0x80, 0x5c, 0x70, 0x89, 0x0a, 0x43, 0x10, 0x3d, 0xeb, 0x3d, + 0x4a, 0xa0, 0x00, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x48, + 0x00, 0x30, 0x45, 0x02, 0x20, 0x1d, 0x86, 0x21, 0xb4, 0xc2, 0xe1, 0xa9, 0xf3, 0xbc, 0xc8, 0x7c, 0xda, 0xb4, 0xb9, + 0xc6, 0x8c, 0xd0, 0xe4, 0x9a, 0x9c, 0xef, 0x02, 0x93, 0x98, 0x27, 0x7e, 0x81, 0x21, 0x5d, 0x20, 0x9d, 0x32, 0x02, + 0x21, 0x00, 0x8b, 0x6b, 0x49, 0xb6, 0x7d, 0x3e, 0x67, 0x9e, 0xb1, 0x22, 0xd3, 0x63, 0x82, 0x40, 0x4f, 0x49, 0xa4, + 0xdc, 0x17, 0x35, 0xac, 0x4b, 0x7a, 0xbf, 0x52, 0x05, 0x58, 0x68, 0xe0, 0xaa, 0xd2, 0x8e, + }; + + Crypto::ClearSecretData(pubKey.Bytes(), pubKey.Length()); + + err = VerifyCertificateSigningRequestFormat(&kNotSequenceCsr[0], sizeof(kNotSequenceCsr)); + NL_TEST_ASSERT(inSuite, err == CHIP_ERROR_UNSUPPORTED_CERT_FORMAT); + + err = VerifyCertificateSigningRequest(&kNotSequenceCsr[0], sizeof(kNotSequenceCsr), pubKey); + NL_TEST_ASSERT(inSuite, err != CHIP_NO_ERROR); + } +} + void TestCSR_GenDirect(nlTestSuite * inSuite, void * inContext) { uint8_t csrBuf[kMAX_CSR_Length]; @@ -2136,6 +2300,7 @@ static const nlTest sTests[] = { NL_TEST_DEF("Test adding entropy sources", TestAddEntropySources), NL_TEST_DEF("Test PBKDF2 SHA256", TestPBKDF2_SHA256_TestVectors), NL_TEST_DEF("Test P256 Keygen", TestP256_Keygen), + NL_TEST_DEF("Test CSR Verification + PK extraction", TestCSR_Verify), NL_TEST_DEF("Test CSR Generation via P256Keypair method", TestCSR_GenByKeypair), NL_TEST_DEF("Test Direct CSR Generation", TestCSR_GenDirect), NL_TEST_DEF("Test Keypair Serialize", TestKeypair_Serialize), diff --git a/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp b/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp index 72c4706501f851..27289aeea069aa 100644 --- a/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp +++ b/src/platform/EFR32/CHIPCryptoPALPsaEfr32.cpp @@ -902,6 +902,8 @@ CHIP_ERROR P256Keypair::NewCertificateSigningRequest(uint8_t * out_csr, size_t & CHIP_ERROR VerifyCertificateSigningRequest(const uint8_t * csr_buf, size_t csr_length, P256PublicKey & pubkey) { #if defined(MBEDTLS_X509_CSR_PARSE_C) + ReturnErrorOnFailure(VerifyCertificateSigningRequestFormat(csr_buf, csr_length)); + // TODO: For some embedded targets, mbedTLS library doesn't have mbedtls_x509_csr_parse_der, and mbedtls_x509_csr_parse_free. // Taking a step back, embedded targets likely will not process CSR requests. Adding this action item to reevaluate // this if there's a need for this processing for embedded targets. From 5f94d380c22c46267c521a008aff36653b902ecb Mon Sep 17 00:00:00 2001 From: Shubham Patil Date: Tue, 23 Aug 2022 18:48:29 +0530 Subject: [PATCH 33/44] [ESP32] Support disabling SOFTAP for saving some flash (#22096) * [ESP32] Support disabling SOFTAP support for saving some flash * Disable softap by default in examples * If rendezvous mode is softap then enable softap configurations --- config/esp32/components/chip/Kconfig | 1 + .../esp32/main/Kconfig.projbuild | 2 + .../all-clusters-app/esp32/sdkconfig.defaults | 3 ++ .../esp32/main/Kconfig.projbuild | 2 + .../esp32/sdkconfig.defaults | 3 ++ examples/bridge-app/esp32/sdkconfig.defaults | 3 ++ examples/chef/esp32/main/Kconfig.projbuild | 2 + examples/chef/esp32/sdkconfig.defaults | 3 ++ .../light-switch-app/esp32/sdkconfig.defaults | 5 ++- .../lighting-app/esp32/sdkconfig.defaults | 3 ++ examples/lock-app/esp32/sdkconfig.defaults | 3 ++ .../ota-provider-app/esp32/sdkconfig.defaults | 3 ++ .../esp32/sdkconfig.defaults | 3 ++ .../esp32/sdkconfig.defaults | 3 ++ src/platform/ESP32/CHIPDevicePlatformConfig.h | 2 + src/platform/ESP32/ConnectivityManagerImpl.h | 42 +++++++++++-------- .../ESP32/ConnectivityManagerImpl_WiFi.cpp | 23 ++++++++-- src/platform/ESP32/ESP32Utils.cpp | 9 +++- src/platform/ESP32/ESP32Utils.h | 2 + src/platform/ESP32/PlatformManagerImpl.cpp | 3 +- 20 files changed, 95 insertions(+), 25 deletions(-) diff --git a/config/esp32/components/chip/Kconfig b/config/esp32/components/chip/Kconfig index 4a6cc6dd6e889e..55cafa1c8a07a8 100644 --- a/config/esp32/components/chip/Kconfig +++ b/config/esp32/components/chip/Kconfig @@ -387,6 +387,7 @@ menu "CHIP Device Layer" menu "WiFi AP Options" config ENABLE_WIFI_AP + depends on ESP_WIFI_SOFTAP_SUPPORT bool "Enable CHIP WIFI AP" default y help diff --git a/examples/all-clusters-app/esp32/main/Kconfig.projbuild b/examples/all-clusters-app/esp32/main/Kconfig.projbuild index 8791a80a443e71..22edca7a03b264 100644 --- a/examples/all-clusters-app/esp32/main/Kconfig.projbuild +++ b/examples/all-clusters-app/esp32/main/Kconfig.projbuild @@ -53,6 +53,7 @@ menu "Demo" config RENDEZVOUS_MODE_SOFTAP bool "Soft-AP" + select ESP_WIFI_SOFTAP_SUPPORT config RENDEZVOUS_MODE_BLE bool "BLE" depends on BT_ENABLED @@ -60,6 +61,7 @@ menu "Demo" bool "On-Network" config RENDEZVOUS_MODE_SOFTAP_ON_NETWORK bool "Soft-AP / On-Network" + select ESP_WIFI_SOFTAP_SUPPORT config RENDEZVOUS_MODE_BLE_ON_NETWORK bool "BLE / On-Network" endchoice diff --git a/examples/all-clusters-app/esp32/sdkconfig.defaults b/examples/all-clusters-app/esp32/sdkconfig.defaults index 5f996f40946d68..a9c28a1a863a25 100644 --- a/examples/all-clusters-app/esp32/sdkconfig.defaults +++ b/examples/all-clusters-app/esp32/sdkconfig.defaults @@ -53,3 +53,6 @@ CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y # Serial Flasher config CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y CONFIG_ESPTOOLPY_FLASHSIZE="4MB" + +# Disable softap support by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n diff --git a/examples/all-clusters-minimal-app/esp32/main/Kconfig.projbuild b/examples/all-clusters-minimal-app/esp32/main/Kconfig.projbuild index 8791a80a443e71..22edca7a03b264 100644 --- a/examples/all-clusters-minimal-app/esp32/main/Kconfig.projbuild +++ b/examples/all-clusters-minimal-app/esp32/main/Kconfig.projbuild @@ -53,6 +53,7 @@ menu "Demo" config RENDEZVOUS_MODE_SOFTAP bool "Soft-AP" + select ESP_WIFI_SOFTAP_SUPPORT config RENDEZVOUS_MODE_BLE bool "BLE" depends on BT_ENABLED @@ -60,6 +61,7 @@ menu "Demo" bool "On-Network" config RENDEZVOUS_MODE_SOFTAP_ON_NETWORK bool "Soft-AP / On-Network" + select ESP_WIFI_SOFTAP_SUPPORT config RENDEZVOUS_MODE_BLE_ON_NETWORK bool "BLE / On-Network" endchoice diff --git a/examples/all-clusters-minimal-app/esp32/sdkconfig.defaults b/examples/all-clusters-minimal-app/esp32/sdkconfig.defaults index 5f996f40946d68..a9c28a1a863a25 100644 --- a/examples/all-clusters-minimal-app/esp32/sdkconfig.defaults +++ b/examples/all-clusters-minimal-app/esp32/sdkconfig.defaults @@ -53,3 +53,6 @@ CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y # Serial Flasher config CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y CONFIG_ESPTOOLPY_FLASHSIZE="4MB" + +# Disable softap support by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n diff --git a/examples/bridge-app/esp32/sdkconfig.defaults b/examples/bridge-app/esp32/sdkconfig.defaults index 6a6589e1040577..d76496f541c9ba 100644 --- a/examples/bridge-app/esp32/sdkconfig.defaults +++ b/examples/bridge-app/esp32/sdkconfig.defaults @@ -39,3 +39,6 @@ CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y + +# Disable softap support by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n diff --git a/examples/chef/esp32/main/Kconfig.projbuild b/examples/chef/esp32/main/Kconfig.projbuild index 307b7f6ccb83bc..695222b7f43c45 100644 --- a/examples/chef/esp32/main/Kconfig.projbuild +++ b/examples/chef/esp32/main/Kconfig.projbuild @@ -55,6 +55,7 @@ menu "Demo" bool "Bypass" config RENDEZVOUS_MODE_SOFTAP bool "Soft-AP" + select ESP_WIFI_SOFTAP_SUPPORT config RENDEZVOUS_MODE_BLE bool "BLE" depends on BT_ENABLED @@ -62,6 +63,7 @@ menu "Demo" bool "On-Network" config RENDEZVOUS_MODE_SOFTAP_ON_NETWORK bool "Soft-AP / On-Network" + select ESP_WIFI_SOFTAP_SUPPORT config RENDEZVOUS_MODE_BLE_ON_NETWORK bool "BLE / On-Network" endchoice diff --git a/examples/chef/esp32/sdkconfig.defaults b/examples/chef/esp32/sdkconfig.defaults index ab2bb7c5dcb419..a3a1d8a272b8b3 100644 --- a/examples/chef/esp32/sdkconfig.defaults +++ b/examples/chef/esp32/sdkconfig.defaults @@ -47,3 +47,6 @@ CONFIG_STACK_CHECK=y # Serial Flasher config CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y CONFIG_ESPTOOLPY_FLASHSIZE="4MB" + +# Disable softap support by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n diff --git a/examples/light-switch-app/esp32/sdkconfig.defaults b/examples/light-switch-app/esp32/sdkconfig.defaults index f8d119e98c2bec..4e780d862ad614 100644 --- a/examples/light-switch-app/esp32/sdkconfig.defaults +++ b/examples/light-switch-app/esp32/sdkconfig.defaults @@ -45,4 +45,7 @@ CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y CONFIG_ESPTOOLPY_FLASHSIZE="4MB" #enable debug shell -CONFIG_ENABLE_CHIP_SHELL=y \ No newline at end of file +CONFIG_ENABLE_CHIP_SHELL=y + +# Disable softap support by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n diff --git a/examples/lighting-app/esp32/sdkconfig.defaults b/examples/lighting-app/esp32/sdkconfig.defaults index 23a3766c340c04..e051a3f2b37aee 100644 --- a/examples/lighting-app/esp32/sdkconfig.defaults +++ b/examples/lighting-app/esp32/sdkconfig.defaults @@ -43,3 +43,6 @@ CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y # Serial Flasher config CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y CONFIG_ESPTOOLPY_FLASHSIZE="4MB" + +# Disable softap support by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n diff --git a/examples/lock-app/esp32/sdkconfig.defaults b/examples/lock-app/esp32/sdkconfig.defaults index c9b513d752fc6c..d53bfc85c76c22 100644 --- a/examples/lock-app/esp32/sdkconfig.defaults +++ b/examples/lock-app/esp32/sdkconfig.defaults @@ -43,3 +43,6 @@ CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y #Lock app PID CONFIG_DEVICE_PRODUCT_ID=0x8006 + +# Disable softap support by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n diff --git a/examples/ota-provider-app/esp32/sdkconfig.defaults b/examples/ota-provider-app/esp32/sdkconfig.defaults index 537c6deab2897f..7fce894e5a80d8 100644 --- a/examples/ota-provider-app/esp32/sdkconfig.defaults +++ b/examples/ota-provider-app/esp32/sdkconfig.defaults @@ -58,3 +58,6 @@ CONFIG_USE_TEST_SETUP_DISCRIMINATOR=0xF01 # Enable chip shell CONFIG_ENABLE_CHIP_SHELL=y + +# Disable softap support by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n diff --git a/examples/ota-requestor-app/esp32/sdkconfig.defaults b/examples/ota-requestor-app/esp32/sdkconfig.defaults index beec4822b35cdf..17b6e378f65ca9 100644 --- a/examples/ota-requestor-app/esp32/sdkconfig.defaults +++ b/examples/ota-requestor-app/esp32/sdkconfig.defaults @@ -59,3 +59,6 @@ CONFIG_DEVICE_SOFTWARE_VERSION_NUMBER=2 # Enable Chip Shell CONFIG_ENABLE_CHIP_SHELL=y + +# Disable softap support by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n diff --git a/examples/temperature-measurement-app/esp32/sdkconfig.defaults b/examples/temperature-measurement-app/esp32/sdkconfig.defaults index 4659af909a144f..dcd05c0734f36a 100644 --- a/examples/temperature-measurement-app/esp32/sdkconfig.defaults +++ b/examples/temperature-measurement-app/esp32/sdkconfig.defaults @@ -84,3 +84,6 @@ CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096 #enable lwIP route hooks CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y + +# Disable softap support by default +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n diff --git a/src/platform/ESP32/CHIPDevicePlatformConfig.h b/src/platform/ESP32/CHIPDevicePlatformConfig.h index 3bc56162c00350..c40cd8c565e11d 100644 --- a/src/platform/ESP32/CHIPDevicePlatformConfig.h +++ b/src/platform/ESP32/CHIPDevicePlatformConfig.h @@ -59,11 +59,13 @@ #define CHIP_DEVICE_CONFIG_MAX_SCAN_NETWORKS_RESULTS CONFIG_MAX_SCAN_NETWORKS_RESULTS #define CHIP_DEVICE_CONFIG_WIFI_SCAN_COMPLETION_TIMEOUT CONFIG_WIFI_SCAN_COMPLETION_TIMEOUT #define CHIP_DEVICE_CONFIG_WIFI_CONNECTIVITY_TIMEOUT CONFIG_WIFI_CONNECTIVITY_TIMEOUT +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP #define CHIP_DEVICE_CONFIG_WIFI_AP_SSID_PREFIX CONFIG_WIFI_AP_SSID_PREFIX #define CHIP_DEVICE_CONFIG_WIFI_AP_CHANNEL CONFIG_WIFI_AP_CHANNEL #define CHIP_DEVICE_CONFIG_WIFI_AP_MAX_STATIONS CONFIG_WIFI_AP_MAX_STATIONS #define CHIP_DEVICE_CONFIG_WIFI_AP_BEACON_INTERVAL CONFIG_WIFI_AP_BEACON_INTERVAL #define CHIP_DEVICE_CONFIG_WIFI_AP_IDLE_TIMEOUT CONFIG_WIFI_AP_IDLE_TIMEOUT +#endif /* CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP */ #define CHIP_DEVICE_CONFIG_ENABLE_WIFI_TELEMETRY CONFIG_ENABLE_WIFI_TELEMETRY #define CHIP_DEVICE_CONFIG_ENABLE_WIFI CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP | CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION #endif // CONFIG_IDF_TARGET_ESP32H2 diff --git a/src/platform/ESP32/ConnectivityManagerImpl.h b/src/platform/ESP32/ConnectivityManagerImpl.h index 3bdd1418c23564..9c7f7774317318 100644 --- a/src/platform/ESP32/ConnectivityManagerImpl.h +++ b/src/platform/ESP32/ConnectivityManagerImpl.h @@ -109,15 +109,6 @@ class ConnectivityManagerImpl final : public ConnectivityManager, CHIP_ERROR _SetWiFiStationReconnectInterval(System::Clock::Timeout val); bool _IsWiFiStationProvisioned(void); void _ClearWiFiStationProvision(void); - WiFiAPMode _GetWiFiAPMode(void); - CHIP_ERROR _SetWiFiAPMode(WiFiAPMode val); - bool _IsWiFiAPActive(void); - bool _IsWiFiAPApplicationControlled(void); - void _DemandStartWiFiAP(void); - void _StopOnDemandWiFiAP(void); - void _MaintainOnDemandWiFiAP(void); - System::Clock::Timeout _GetWiFiAPIdleTimeout(void); - void _SetWiFiAPIdleTimeout(System::Clock::Timeout val); CHIP_ERROR _GetAndLogWiFiStatsCounters(void); bool _CanStartWiFiScan(); void _OnWiFiScanDone(); @@ -126,13 +117,9 @@ class ConnectivityManagerImpl final : public ConnectivityManager, // ===== Private members reserved for use by this class only. System::Clock::Timestamp mLastStationConnectFailTime; - System::Clock::Timestamp mLastAPDemandTime; WiFiStationMode mWiFiStationMode; WiFiStationState mWiFiStationState; - WiFiAPMode mWiFiAPMode; - WiFiAPState mWiFiAPState; System::Clock::Timeout mWiFiStationReconnectInterval; - System::Clock::Timeout mWiFiAPIdleTimeout; BitFlags mFlags; CHIP_ERROR InitWiFi(void); @@ -144,10 +131,27 @@ class ConnectivityManagerImpl final : public ConnectivityManager, void ChangeWiFiStationState(WiFiStationState newState); static void DriveStationState(::chip::System::Layer * aLayer, void * aAppState); +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP + WiFiAPMode _GetWiFiAPMode(void); + CHIP_ERROR _SetWiFiAPMode(WiFiAPMode val); + bool _IsWiFiAPActive(void); + void _DemandStartWiFiAP(void); + void _StopOnDemandWiFiAP(void); + void _MaintainOnDemandWiFiAP(void); + System::Clock::Timeout _GetWiFiAPIdleTimeout(void); + void _SetWiFiAPIdleTimeout(System::Clock::Timeout val); + bool _IsWiFiAPApplicationControlled(void); + + System::Clock::Timestamp mLastAPDemandTime; + WiFiAPMode mWiFiAPMode; + WiFiAPState mWiFiAPState; + System::Clock::Timeout mWiFiAPIdleTimeout; + void DriveAPState(void); CHIP_ERROR ConfigureWiFiAP(void); void ChangeWiFiAPState(WiFiAPState newState); static void DriveAPState(::chip::System::Layer * aLayer, void * aAppState); +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP void UpdateInternetConnectivityState(void); void OnStationIPv4AddressAvailable(const ip_event_got_ip_t & got_ip); @@ -174,16 +178,12 @@ inline bool ConnectivityManagerImpl::_IsWiFiStationConnected(void) return mWiFiStationState == kWiFiStationState_Connected; } -inline bool ConnectivityManagerImpl::_IsWiFiAPApplicationControlled(void) -{ - return mWiFiAPMode == kWiFiAPMode_ApplicationControlled; -} - inline System::Clock::Timeout ConnectivityManagerImpl::_GetWiFiStationReconnectInterval(void) { return mWiFiStationReconnectInterval; } +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP inline ConnectivityManager::WiFiAPMode ConnectivityManagerImpl::_GetWiFiAPMode(void) { return mWiFiAPMode; @@ -199,6 +199,12 @@ inline System::Clock::Timeout ConnectivityManagerImpl::_GetWiFiAPIdleTimeout(voi return mWiFiAPIdleTimeout; } +inline bool ConnectivityManagerImpl::_IsWiFiAPApplicationControlled(void) +{ + return mWiFiAPMode == kWiFiAPMode_ApplicationControlled; +} +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP + inline bool ConnectivityManagerImpl::_CanStartWiFiScan() { return mWiFiStationState != kWiFiStationState_Connecting; diff --git a/src/platform/ESP32/ConnectivityManagerImpl_WiFi.cpp b/src/platform/ESP32/ConnectivityManagerImpl_WiFi.cpp index f00c92803908aa..2eb2e1b3ad11e0 100644 --- a/src/platform/ESP32/ConnectivityManagerImpl_WiFi.cpp +++ b/src/platform/ESP32/ConnectivityManagerImpl_WiFi.cpp @@ -110,10 +110,13 @@ void ConnectivityManagerImpl::_ClearWiFiStationProvision(void) esp_wifi_set_config(WIFI_IF_STA, &stationConfig); DeviceLayer::SystemLayer().ScheduleWork(DriveStationState, NULL); +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP DeviceLayer::SystemLayer().ScheduleWork(DriveAPState, NULL); +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP } } +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP CHIP_ERROR ConnectivityManagerImpl::_SetWiFiAPMode(WiFiAPMode val) { CHIP_ERROR err = CHIP_NO_ERROR; @@ -167,6 +170,7 @@ void ConnectivityManagerImpl::_SetWiFiAPIdleTimeout(System::Clock::Timeout val) mWiFiAPIdleTimeout = val; DeviceLayer::SystemLayer().ScheduleWork(DriveAPState, NULL); } +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP #define WIFI_BAND_2_4GHZ 2400 #define WIFI_BAND_5_0GHZ 5000 @@ -382,13 +386,17 @@ CHIP_ERROR ConnectivityManagerImpl::_GetAndLogWiFiStatsCounters(void) CHIP_ERROR ConnectivityManagerImpl::InitWiFi() { mLastStationConnectFailTime = System::Clock::kZero; - mLastAPDemandTime = System::Clock::kZero; mWiFiStationMode = kWiFiStationMode_Disabled; mWiFiStationState = kWiFiStationState_NotConnected; - mWiFiAPMode = kWiFiAPMode_Disabled; - mWiFiAPState = kWiFiAPState_NotActive; mWiFiStationReconnectInterval = System::Clock::Milliseconds32(CHIP_DEVICE_CONFIG_WIFI_STATION_RECONNECT_INTERVAL); - mWiFiAPIdleTimeout = System::Clock::Milliseconds32(CHIP_DEVICE_CONFIG_WIFI_AP_IDLE_TIMEOUT); + +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP + mLastAPDemandTime = System::Clock::kZero; + mWiFiAPMode = kWiFiAPMode_Disabled; + mWiFiAPState = kWiFiAPState_NotActive; + mWiFiAPIdleTimeout = System::Clock::Milliseconds32(CHIP_DEVICE_CONFIG_WIFI_AP_IDLE_TIMEOUT); +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP + mFlags.SetRaw(0); // TODO Initialize the Chip Addressing and Routing Module. @@ -435,7 +443,10 @@ CHIP_ERROR ConnectivityManagerImpl::InitWiFi() // Queue work items to bootstrap the AP and station state machines once the Chip event loop is running. ReturnErrorOnFailure(DeviceLayer::SystemLayer().ScheduleWork(DriveStationState, NULL)); + +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP ReturnErrorOnFailure(DeviceLayer::SystemLayer().ScheduleWork(DriveAPState, NULL)); +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP return CHIP_NO_ERROR; } @@ -478,6 +489,7 @@ void ConnectivityManagerImpl::OnWiFiPlatformEvent(const ChipDeviceEvent * event) ChipLogProgress(DeviceLayer, "WIFI_EVENT_STA_STOP"); DriveStationState(); break; +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP case WIFI_EVENT_AP_START: ChipLogProgress(DeviceLayer, "WIFI_EVENT_AP_START"); ChangeWiFiAPState(kWiFiAPState_Active); @@ -492,6 +504,7 @@ void ConnectivityManagerImpl::OnWiFiPlatformEvent(const ChipDeviceEvent * event) ChipLogProgress(DeviceLayer, "WIFI_EVENT_AP_STACONNECTED"); MaintainOnDemandWiFiAP(); break; +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP default: break; } @@ -769,6 +782,7 @@ void ConnectivityManagerImpl::DriveStationState(::chip::System::Layer * aLayer, sInstance.DriveStationState(); } +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP void ConnectivityManagerImpl::DriveAPState() { CHIP_ERROR err = CHIP_NO_ERROR; @@ -952,6 +966,7 @@ void ConnectivityManagerImpl::DriveAPState(::chip::System::Layer * aLayer, void { sInstance.DriveAPState(); } +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP void ConnectivityManagerImpl::UpdateInternetConnectivityState(void) { diff --git a/src/platform/ESP32/ESP32Utils.cpp b/src/platform/ESP32/ESP32Utils.cpp index 9391ee586e3eb6..e6dd3ea4df09c3 100644 --- a/src/platform/ESP32/ESP32Utils.cpp +++ b/src/platform/ESP32/ESP32Utils.cpp @@ -38,6 +38,7 @@ using namespace ::chip::DeviceLayer::Internal; using chip::DeviceLayer::Internal::DeviceNetworkInfo; +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP CHIP_ERROR ESP32Utils::IsAPEnabled(bool & apEnabled) { wifi_mode_t curWiFiMode; @@ -53,6 +54,7 @@ CHIP_ERROR ESP32Utils::IsAPEnabled(bool & apEnabled) return CHIP_NO_ERROR; } +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP CHIP_ERROR ESP32Utils::IsStationEnabled(bool & staEnabled) { @@ -130,6 +132,7 @@ CHIP_ERROR ESP32Utils::EnableStationMode(void) return ESP32Utils::MapError(err); } +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP // If station mode is not already enabled (implying the current mode is WIFI_MODE_AP), change // the mode to WIFI_MODE_APSTA. if (curWiFiMode == WIFI_MODE_AP) @@ -144,15 +147,19 @@ CHIP_ERROR ESP32Utils::EnableStationMode(void) return ESP32Utils::MapError(err); } } +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP return CHIP_NO_ERROR; } CHIP_ERROR ESP32Utils::SetAPMode(bool enabled) { - wifi_mode_t curWiFiMode, targetWiFiMode; + wifi_mode_t curWiFiMode; + wifi_mode_t targetWiFiMode = WIFI_MODE_STA; +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP targetWiFiMode = (enabled) ? WIFI_MODE_APSTA : WIFI_MODE_STA; +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP // Get the current ESP WiFI mode. esp_err_t err = esp_wifi_get_mode(&curWiFiMode); diff --git a/src/platform/ESP32/ESP32Utils.h b/src/platform/ESP32/ESP32Utils.h index 94a98e0f8b281e..716b85e8434d3a 100644 --- a/src/platform/ESP32/ESP32Utils.h +++ b/src/platform/ESP32/ESP32Utils.h @@ -29,7 +29,9 @@ namespace Internal { class ESP32Utils { public: +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP static CHIP_ERROR IsAPEnabled(bool & apEnabled); +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP static CHIP_ERROR IsStationEnabled(bool & staEnabled); static bool IsStationProvisioned(void); static CHIP_ERROR IsStationConnected(bool & connected); diff --git a/src/platform/ESP32/PlatformManagerImpl.cpp b/src/platform/ESP32/PlatformManagerImpl.cpp index c96caeb03934ef..d2254692924cca 100644 --- a/src/platform/ESP32/PlatformManagerImpl.cpp +++ b/src/platform/ESP32/PlatformManagerImpl.cpp @@ -84,8 +84,9 @@ CHIP_ERROR PlatformManagerImpl::_InitChipStack(void) wifi_init_config_t cfg; uint8_t ap_mac[6]; wifi_mode_t mode; - +#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP esp_netif_create_default_wifi_ap(); +#endif // CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP esp_netif_create_default_wifi_sta(); esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, PlatformManagerImpl::HandleESPSystemEvent, NULL); From 543ae309d7ddcb313a8e706a91f15c2fce35e104 Mon Sep 17 00:00:00 2001 From: jmartinez-silabs <67972863+jmartinez-silabs@users.noreply.github.com> Date: Tue, 23 Aug 2022 09:22:23 -0400 Subject: [PATCH 34/44] address PR22049 post-merge commments (#22085) --- examples/chef/efr32/BUILD.gn | 2 +- examples/light-switch-app/efr32/BUILD.gn | 2 +- examples/lighting-app/efr32/BUILD.gn | 2 +- examples/lock-app/efr32/BUILD.gn | 2 +- examples/shell/shell_common/BUILD.gn | 2 +- examples/thermostat/efr32/BUILD.gn | 2 +- examples/window-app/efr32/BUILD.gn | 2 +- src/inet/BUILD.gn | 2 +- src/platform/EFR32/BUILD.gn | 2 +- src/test_driver/efr32/BUILD.gn | 2 +- third_party/openthread/BUILD.gn | 4 ++-- third_party/silabs/BUILD.gn | 2 +- 12 files changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/chef/efr32/BUILD.gn b/examples/chef/efr32/BUILD.gn index c567ae9d8f1cbf..e23b747fcad1dd 100644 --- a/examples/chef/efr32/BUILD.gn +++ b/examples/chef/efr32/BUILD.gn @@ -207,7 +207,7 @@ efr32_executable("chef_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", - "${chip_root}/third_party/openthread:openthread_device", + "${chip_root}/third_party/openthread:openthread-platform", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/light-switch-app/efr32/BUILD.gn b/examples/light-switch-app/efr32/BUILD.gn index e2705abdedcb65..2d628f537f9f6e 100644 --- a/examples/light-switch-app/efr32/BUILD.gn +++ b/examples/light-switch-app/efr32/BUILD.gn @@ -200,7 +200,7 @@ efr32_executable("light_switch_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", - "${chip_root}/third_party/openthread:openthread_device", + "${chip_root}/third_party/openthread:openthread-platform", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/lighting-app/efr32/BUILD.gn b/examples/lighting-app/efr32/BUILD.gn index 060b9f67343aa0..fbd5a88a7909b9 100644 --- a/examples/lighting-app/efr32/BUILD.gn +++ b/examples/lighting-app/efr32/BUILD.gn @@ -205,7 +205,7 @@ efr32_executable("lighting_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", - "${chip_root}/third_party/openthread:openthread_device", + "${chip_root}/third_party/openthread:openthread-platform", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/lock-app/efr32/BUILD.gn b/examples/lock-app/efr32/BUILD.gn index 2f8f2dc6bf67b4..e76b9cd48f1d1e 100644 --- a/examples/lock-app/efr32/BUILD.gn +++ b/examples/lock-app/efr32/BUILD.gn @@ -202,7 +202,7 @@ efr32_executable("lock_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", - "${chip_root}/third_party/openthread:openthread_device", + "${chip_root}/third_party/openthread:openthread-platform", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/shell/shell_common/BUILD.gn b/examples/shell/shell_common/BUILD.gn index 0217eb057fdff4..d601f0b54764b8 100644 --- a/examples/shell/shell_common/BUILD.gn +++ b/examples/shell/shell_common/BUILD.gn @@ -53,8 +53,8 @@ static_library("shell_common") { if (chip_enable_openthread && (current_os == "freertos" || current_os == "zephyr")) { public_deps += [ + "${chip_root}/third_party/openthread:openthread", "${chip_root}/third_party/openthread:openthread_cli", - "${chip_root}/third_party/openthread:openthread_device", ] } diff --git a/examples/thermostat/efr32/BUILD.gn b/examples/thermostat/efr32/BUILD.gn index edb03073686e3e..7e4e923992ff70 100644 --- a/examples/thermostat/efr32/BUILD.gn +++ b/examples/thermostat/efr32/BUILD.gn @@ -196,7 +196,7 @@ efr32_executable("thermostat_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", - "${chip_root}/third_party/openthread:openthread_device", + "${chip_root}/third_party/openthread:openthread-platform", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/examples/window-app/efr32/BUILD.gn b/examples/window-app/efr32/BUILD.gn index c7a3f57e4b9ff8..a9aa7cf402911c 100644 --- a/examples/window-app/efr32/BUILD.gn +++ b/examples/window-app/efr32/BUILD.gn @@ -188,7 +188,7 @@ efr32_executable("window_app") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", - "${chip_root}/third_party/openthread:openthread_device", + "${chip_root}/third_party/openthread:openthread-platform", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/src/inet/BUILD.gn b/src/inet/BUILD.gn index a042007d02c5a3..cb86a45780df9c 100644 --- a/src/inet/BUILD.gn +++ b/src/inet/BUILD.gn @@ -107,7 +107,7 @@ static_library("inet") { } if (chip_system_config_use_open_thread_inet_endpoints) { - public_deps += [ "${chip_root}/third_party/openthread:openthread_device" ] + public_deps += [ "${chip_root}/third_party/openthread:openthread" ] } if (chip_inet_config_enable_tcp_endpoint) { diff --git a/src/platform/EFR32/BUILD.gn b/src/platform/EFR32/BUILD.gn index eb73a6f80f85cf..1b5d6c45bbe3ba 100644 --- a/src/platform/EFR32/BUILD.gn +++ b/src/platform/EFR32/BUILD.gn @@ -98,7 +98,7 @@ static_library("EFR32") { "$dir_pw_kvs", ] if (chip_enable_openthread) { - public_deps += [ "${chip_root}/third_party/openthread:openthread_device" ] + public_deps += [ "${chip_root}/third_party/openthread:openthread" ] deps += [ "${chip_root}/third_party/openthread:openthread_cli" ] diff --git a/src/test_driver/efr32/BUILD.gn b/src/test_driver/efr32/BUILD.gn index 8ee3c4f3e59c69..1d6f87637a99db 100644 --- a/src/test_driver/efr32/BUILD.gn +++ b/src/test_driver/efr32/BUILD.gn @@ -96,7 +96,7 @@ efr32_executable("efr32_device_tests") { if (chip_enable_openthread) { deps += [ "${chip_root}/third_party/openthread:openthread", - "${chip_root}/third_party/openthread:openthread_device", + "${chip_root}/third_party/openthread:openthread-platform", "${examples_plat_dir}:efr-matter-shell", ] } diff --git a/third_party/openthread/BUILD.gn b/third_party/openthread/BUILD.gn index 9ee8e905551837..7a183e681867dc 100644 --- a/third_party/openthread/BUILD.gn +++ b/third_party/openthread/BUILD.gn @@ -8,7 +8,7 @@ declare_args() { chip_openthread_target = "" } -group("openthread") { +group("openthread-platform") { if (chip_openthread_target != "") { public_deps = [ chip_openthread_target ] } else { @@ -19,7 +19,7 @@ group("openthread") { } } -group("openthread_device") { +group("openthread") { if (chip_openthread_target != "") { public_deps = [ chip_openthread_target ] } else { diff --git a/third_party/silabs/BUILD.gn b/third_party/silabs/BUILD.gn index 1589f72e7865ae..7e885642cdd6f2 100644 --- a/third_party/silabs/BUILD.gn +++ b/third_party/silabs/BUILD.gn @@ -131,7 +131,7 @@ if (use_silabs_thread_lib) { ":libopenthread-platform", ":openthread_core_config_efr32", "${segger_rtt_root}:segger_rtt", - "${sl_openthread_root}/include/openthread:openthread", + "${sl_openthread_root}/include/openthread:openthread-platform", "${sl_openthread_root}/src/core/:libopenthread_core_headers", ] From 65d9ccf7461f8c45b4a07c4ca3e9c764dcc5793d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Kr=C3=B3lik?= <66667989+Damian-Nordic@users.noreply.github.com> Date: Tue, 23 Aug 2022 15:34:51 +0200 Subject: [PATCH 35/44] [nrfconnect] Fix Docker build due to conflicting PIP packages (#22072) nRF Connect Docker image build started to fail due to some conflicts in documentation dependencies. We don't need those dependencies in Matter CI, so get rid off them. Signed-off-by: Damian Krolik Signed-off-by: Damian Krolik --- integrations/docker/images/chip-build-nrf-platform/Dockerfile | 2 +- integrations/docker/images/chip-build/version | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integrations/docker/images/chip-build-nrf-platform/Dockerfile b/integrations/docker/images/chip-build-nrf-platform/Dockerfile index f27f0813c748b3..280534cac6c9fe 100644 --- a/integrations/docker/images/chip-build-nrf-platform/Dockerfile +++ b/integrations/docker/images/chip-build-nrf-platform/Dockerfile @@ -61,7 +61,7 @@ RUN set -x \ && (apt-get remove -fy python3-yaml && apt-get autoremove || exit 0) \ && python3 -m pip install -U --no-cache-dir cmake==3.22.5 \ && python3 -m pip install --no-cache-dir -r /opt/NordicSemiconductor/nrfconnect/zephyr/scripts/requirements.txt \ - && python3 -m pip install --no-cache-dir -r /opt/NordicSemiconductor/nrfconnect/nrf/scripts/requirements.txt \ + && python3 -m pip install --no-cache-dir -r /opt/NordicSemiconductor/nrfconnect/nrf/scripts/requirements-build.txt \ && python3 -m pip install --no-cache-dir -r /opt/NordicSemiconductor/nrfconnect/bootloader/mcuboot/scripts/requirements.txt \ && : # last line diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version index 0791656d59351a..1cb8eca1c7f032 100644 --- a/integrations/docker/images/chip-build/version +++ b/integrations/docker/images/chip-build/version @@ -1 +1 @@ -0.5.94 Version bump reason: Install ccache to the chip-build image +0.5.95 Version bump reason: Fix nrfconnect Docker build From ae16a8c75815c6b92c1c2788947a76a3127e3a56 Mon Sep 17 00:00:00 2001 From: Shubham Patil Date: Tue, 23 Aug 2022 19:07:41 +0530 Subject: [PATCH 36/44] [ESP32] Fix namespace for unique id and added rotating device id (#22063) unique id key in chip-factory namespace Unique-id should be changed after every factory reset and to do that it should be stored in chip-config namespace. Earlier it was stored in chip-factory which is not erased on factory reset. --- .../tools/generate_esp32_chip_factory_bin.py | 12 +++++------ src/platform/ESP32/ESP32Config.cpp | 3 ++- src/platform/ESP32/ESP32Config.h | 21 +++++++++++-------- .../ESP32/ESP32FactoryDataProvider.cpp | 5 +++-- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/scripts/tools/generate_esp32_chip_factory_bin.py b/scripts/tools/generate_esp32_chip_factory_bin.py index d5f6ed380a91c6..64b6c293fd6510 100755 --- a/scripts/tools/generate_esp32_chip_factory_bin.py +++ b/scripts/tools/generate_esp32_chip_factory_bin.py @@ -140,7 +140,7 @@ 'encoding': 'string', 'value': None, }, - 'unique-id': { + 'rd-id-uid': { 'type': 'data', 'encoding': 'hex2bin', 'value': None, @@ -260,7 +260,7 @@ def validate_args(args): check_str_range(args.product_name, 1, 32, 'Product name') check_str_range(args.hw_ver_str, 1, 64, 'Hardware version string') check_str_range(args.mfg_date, 8, 16, 'Manufacturing date') - check_str_range(args.unique_id, 32, 32, 'Unique id') + check_str_range(args.rd_id_uid, 32, 32, 'Rotating device Unique id') logging.info('Discriminator:{} Passcode:{}'.format(args.discriminator, args.passcode)) @@ -295,8 +295,8 @@ def populate_factory_data(args, spake2p_params): if args.serial_num is not None: FACTORY_DATA['serial-num']['value'] = args.serial_num - if args.unique_id is not None: - FACTORY_DATA['unique-id']['value'] = args.unique_id + if args.rd_id_uid is not None: + FACTORY_DATA['rd-id-uid']['value'] = args.rd_id_uid if args.mfg_date is not None: FACTORY_DATA['mfg-date']['value'] = args.mfg_date if args.vendor_id is not None: @@ -460,8 +460,8 @@ def any_base_int(s): return int(s, 0) parser.add_argument('--hw-ver-str', type=str, required=False, help='Hardware version string') parser.add_argument('--mfg-date', type=str, required=False, help='Manufacturing date in format YYYY-MM-DD') parser.add_argument('--serial-num', type=str, required=False, help='Serial number') - parser.add_argument('--unique-id', type=str, required=False, - help='128-bit unique identifier, provide 32-byte hex string, e.g. "1234567890abcdef1234567890abcdef"') + parser.add_argument('--rd-id-uid', type=str, required=False, + help='128-bit unique identifier for generating rotating device identifier, provide 32-byte hex string, e.g. "1234567890abcdef1234567890abcdef"') # These will be used by DeviceInfoProvider parser.add_argument('--calendar-types', type=str, nargs='+', required=False, diff --git a/src/platform/ESP32/ESP32Config.cpp b/src/platform/ESP32/ESP32Config.cpp index 0feaa568886f29..537ec90375c754 100644 --- a/src/platform/ESP32/ESP32Config.cpp +++ b/src/platform/ESP32/ESP32Config.cpp @@ -72,9 +72,9 @@ const ESP32Config::Key ESP32Config::kConfigKey_VendorId = { kConfig const ESP32Config::Key ESP32Config::kConfigKey_VendorName = { kConfigNamespace_ChipFactory, "vendor-name" }; const ESP32Config::Key ESP32Config::kConfigKey_ProductId = { kConfigNamespace_ChipFactory, "product-id" }; const ESP32Config::Key ESP32Config::kConfigKey_ProductName = { kConfigNamespace_ChipFactory, "product-name" }; -const ESP32Config::Key ESP32Config::kConfigKey_UniqueId = { kConfigNamespace_ChipFactory, "unique-id" }; const ESP32Config::Key ESP32Config::kConfigKey_SupportedCalTypes = { kConfigNamespace_ChipFactory, "cal-types" }; const ESP32Config::Key ESP32Config::kConfigKey_SupportedLocaleSize = { kConfigNamespace_ChipFactory, "locale-sz" }; +const ESP32Config::Key ESP32Config::kConfigKey_RotatingDevIdUniqueId = { kConfigNamespace_ChipFactory, "rd-id-uid" }; // Keys stored in the chip-config namespace const ESP32Config::Key ESP32Config::kConfigKey_ServiceConfig = { kConfigNamespace_ChipConfig, "service-config" }; @@ -85,6 +85,7 @@ const ESP32Config::Key ESP32Config::kConfigKey_FailSafeArmed = { kConfigNam const ESP32Config::Key ESP32Config::kConfigKey_WiFiStationSecType = { kConfigNamespace_ChipConfig, "sta-sec-type" }; const ESP32Config::Key ESP32Config::kConfigKey_RegulatoryLocation = { kConfigNamespace_ChipConfig, "reg-location" }; const ESP32Config::Key ESP32Config::kConfigKey_CountryCode = { kConfigNamespace_ChipConfig, "country-code" }; +const ESP32Config::Key ESP32Config::kConfigKey_UniqueId = { kConfigNamespace_ChipConfig, "unique-id" }; // Keys stored in the Chip-counters namespace const ESP32Config::Key ESP32Config::kCounterKey_RebootCount = { kConfigNamespace_ChipCounters, "reboot-count" }; diff --git a/src/platform/ESP32/ESP32Config.h b/src/platform/ESP32/ESP32Config.h index 86138368352a7f..e038b664fb8a09 100644 --- a/src/platform/ESP32/ESP32Config.h +++ b/src/platform/ESP32/ESP32Config.h @@ -53,7 +53,6 @@ class ESP32Config // Key definitions for well-known keys. static const Key kConfigKey_SerialNum; - static const Key kConfigKey_UniqueId; static const Key kConfigKey_MfrDeviceId; static const Key kConfigKey_MfrDeviceCert; static const Key kConfigKey_MfrDeviceICACerts; @@ -62,15 +61,7 @@ class ESP32Config static const Key kConfigKey_HardwareVersionString; static const Key kConfigKey_ManufacturingDate; static const Key kConfigKey_SetupPinCode; - static const Key kConfigKey_ServiceConfig; - static const Key kConfigKey_PairedAccountId; - static const Key kConfigKey_ServiceId; - static const Key kConfigKey_LastUsedEpochKeyId; - static const Key kConfigKey_FailSafeArmed; - static const Key kConfigKey_WiFiStationSecType; static const Key kConfigKey_SetupDiscriminator; - static const Key kConfigKey_RegulatoryLocation; - static const Key kConfigKey_CountryCode; static const Key kConfigKey_Spake2pIterationCount; static const Key kConfigKey_Spake2pSalt; static const Key kConfigKey_Spake2pVerifier; @@ -85,6 +76,18 @@ class ESP32Config static const Key kConfigKey_ProductName; static const Key kConfigKey_SupportedCalTypes; static const Key kConfigKey_SupportedLocaleSize; + static const Key kConfigKey_RotatingDevIdUniqueId; + + // CHIP Config keys + static const Key kConfigKey_ServiceConfig; + static const Key kConfigKey_PairedAccountId; + static const Key kConfigKey_ServiceId; + static const Key kConfigKey_LastUsedEpochKeyId; + static const Key kConfigKey_FailSafeArmed; + static const Key kConfigKey_WiFiStationSecType; + static const Key kConfigKey_RegulatoryLocation; + static const Key kConfigKey_CountryCode; + static const Key kConfigKey_UniqueId; // CHIP Counter keys static const Key kCounterKey_RebootCount; diff --git a/src/platform/ESP32/ESP32FactoryDataProvider.cpp b/src/platform/ESP32/ESP32FactoryDataProvider.cpp index 443374b2c4421b..8239a96b159f48 100644 --- a/src/platform/ESP32/ESP32FactoryDataProvider.cpp +++ b/src/platform/ESP32/ESP32FactoryDataProvider.cpp @@ -198,12 +198,13 @@ CHIP_ERROR ESP32FactoryDataProvider::GetHardwareVersionString(char * buf, size_t CHIP_ERROR ESP32FactoryDataProvider::GetRotatingDeviceIdUniqueId(MutableByteSpan & uniqueIdSpan) { ChipError err = CHIP_ERROR_WRONG_KEY_TYPE; -#if CHIP_ENABLE_ROTATING_DEVICE_ID && defined(CHIP_DEVICE_CONFIG_ROTATING_DEVICE_ID_UNIQUE_ID) +#if CHIP_ENABLE_ROTATING_DEVICE_ID static_assert(ConfigurationManager::kRotatingDeviceIDUniqueIDLength >= ConfigurationManager::kMinRotatingDeviceIDUniqueIDLength, "Length of unique ID for rotating device ID is smaller than minimum."); size_t uniqueIdLen = 0; - err = ESP32Config::ReadConfigValueBin(ESP32Config::kConfigKey_UniqueId, uniqueIdSpan.data(), uniqueIdSpan.size(), uniqueIdLen); + err = ESP32Config::ReadConfigValueBin(ESP32Config::kConfigKey_RotatingDevIdUniqueId, uniqueIdSpan.data(), uniqueIdSpan.size(), + uniqueIdLen); ReturnErrorOnFailure(err); uniqueIdSpan.reduce_size(uniqueIdLen); #endif From db3ce611a967ce9a93e3c6cf63519ef020f5c0ea Mon Sep 17 00:00:00 2001 From: Shubham Patil Date: Tue, 23 Aug 2022 19:10:03 +0530 Subject: [PATCH 37/44] [ESP32] Remove stale USE_ECHO_CLIENT and ECHO_HOST_IP kconfig options (#22097) --- .../all-clusters-app/esp32/main/Kconfig.projbuild | 7 ------- .../esp32/main/Kconfig.projbuild | 7 ------- examples/chef/esp32/main/Kconfig.projbuild | 7 ------- examples/lock-app/esp32/main/Kconfig.projbuild | 14 -------------- .../esp32/main/Kconfig.projbuild | 14 -------------- 5 files changed, 49 deletions(-) diff --git a/examples/all-clusters-app/esp32/main/Kconfig.projbuild b/examples/all-clusters-app/esp32/main/Kconfig.projbuild index 22edca7a03b264..dbf11ecaab5a57 100644 --- a/examples/all-clusters-app/esp32/main/Kconfig.projbuild +++ b/examples/all-clusters-app/esp32/main/Kconfig.projbuild @@ -66,13 +66,6 @@ menu "Demo" bool "BLE / On-Network" endchoice - config ECHO_HOST_IP - string "IPV4 address" - default "127.0.0.1" - depends on USE_ECHO_CLIENT - help - The IPV4 Address of the ECHO Server. - # NOTE: This config is not displayed as a input in the Kconfig menu, as its value is # entirely derived from the Device Type choice. However the CONFIG_EXAMPLE_DISPLAY_TYPE # define that is produced is needed to configure the TFT library correctly. diff --git a/examples/all-clusters-minimal-app/esp32/main/Kconfig.projbuild b/examples/all-clusters-minimal-app/esp32/main/Kconfig.projbuild index 22edca7a03b264..dbf11ecaab5a57 100644 --- a/examples/all-clusters-minimal-app/esp32/main/Kconfig.projbuild +++ b/examples/all-clusters-minimal-app/esp32/main/Kconfig.projbuild @@ -66,13 +66,6 @@ menu "Demo" bool "BLE / On-Network" endchoice - config ECHO_HOST_IP - string "IPV4 address" - default "127.0.0.1" - depends on USE_ECHO_CLIENT - help - The IPV4 Address of the ECHO Server. - # NOTE: This config is not displayed as a input in the Kconfig menu, as its value is # entirely derived from the Device Type choice. However the CONFIG_EXAMPLE_DISPLAY_TYPE # define that is produced is needed to configure the TFT library correctly. diff --git a/examples/chef/esp32/main/Kconfig.projbuild b/examples/chef/esp32/main/Kconfig.projbuild index 695222b7f43c45..a2b3ea3ce1c34c 100644 --- a/examples/chef/esp32/main/Kconfig.projbuild +++ b/examples/chef/esp32/main/Kconfig.projbuild @@ -68,13 +68,6 @@ menu "Demo" bool "BLE / On-Network" endchoice - config ECHO_HOST_IP - string "IPV4 address" - default "127.0.0.1" - depends on USE_ECHO_CLIENT - help - The IPV4 Address of the ECHO Server. - # NOTE: This config is not displayed as a input in the Kconfig menu, as its value is # entirely derived from the Device Type choice. However the CONFIG_EXAMPLE_DISPLAY_TYPE # define that is produced is needed to configure the TFT library correctly. diff --git a/examples/lock-app/esp32/main/Kconfig.projbuild b/examples/lock-app/esp32/main/Kconfig.projbuild index e2ec051d774fe1..4ec2e859c0b1f5 100644 --- a/examples/lock-app/esp32/main/Kconfig.projbuild +++ b/examples/lock-app/esp32/main/Kconfig.projbuild @@ -36,20 +36,6 @@ menu "Demo" bool "Ethernet" endchoice - config USE_ECHO_CLIENT - bool "Enable the built-in Echo Client" - default "n" - help - This enables a local FreeRTOS Echo Client so that the end-to-end echo server can be - tested easily - - config ECHO_HOST_IP - string "IPV4 address" - default "127.0.0.1" - depends on USE_ECHO_CLIENT - help - The IPV4 Address of the ECHO Server. - config RENDEZVOUS_MODE int range 0 8 diff --git a/examples/temperature-measurement-app/esp32/main/Kconfig.projbuild b/examples/temperature-measurement-app/esp32/main/Kconfig.projbuild index e2ec051d774fe1..4ec2e859c0b1f5 100644 --- a/examples/temperature-measurement-app/esp32/main/Kconfig.projbuild +++ b/examples/temperature-measurement-app/esp32/main/Kconfig.projbuild @@ -36,20 +36,6 @@ menu "Demo" bool "Ethernet" endchoice - config USE_ECHO_CLIENT - bool "Enable the built-in Echo Client" - default "n" - help - This enables a local FreeRTOS Echo Client so that the end-to-end echo server can be - tested easily - - config ECHO_HOST_IP - string "IPV4 address" - default "127.0.0.1" - depends on USE_ECHO_CLIENT - help - The IPV4 Address of the ECHO Server. - config RENDEZVOUS_MODE int range 0 8 From cfdb308152223458dfb28a4a606ef4c68c79245d Mon Sep 17 00:00:00 2001 From: Evgeny Margolis Date: Tue, 23 Aug 2022 06:41:28 -0700 Subject: [PATCH 38/44] TC_RR_1_1: Updated Method that Was Used to Generate Large Sized Operational Certificates (#22088) * TC_RR_1_1: Updated Method that Was Used to Generate Large Sized Operational Certificates. Instead of padding the subject DN this method adds size by adding Future Extension. This new approach doesen't have certain limitations compare to the previous approach and allows generation of larger certificates of approximate sizes: {RCAC, ICAC, NOC} ~ {400, 400, 350} bytes in TLV encoded form. * Update src/credentials/tests/TestChipCert.cpp Co-authored-by: Tennessee Carmel-Veilleux Co-authored-by: Tennessee Carmel-Veilleux --- .../ExampleOperationalCredentialsIssuer.cpp | 39 ++++++++----------- src/credentials/CHIPCert.h | 7 ++++ src/credentials/GenerateChipX509Cert.cpp | 30 +++++++++++++- src/credentials/tests/TestChipCert.cpp | 36 +++++++++++++++++ src/tools/chip-cert/CertUtils.cpp | 4 +- src/tools/chip-cert/Cmd_GenCert.cpp | 26 ++++++------- src/tools/chip-cert/chip-cert.h | 12 +++--- 7 files changed, 109 insertions(+), 45 deletions(-) diff --git a/src/controller/ExampleOperationalCredentialsIssuer.cpp b/src/controller/ExampleOperationalCredentialsIssuer.cpp index 9c0b376b13716c..dc026dbbf88bfd 100644 --- a/src/controller/ExampleOperationalCredentialsIssuer.cpp +++ b/src/controller/ExampleOperationalCredentialsIssuer.cpp @@ -52,10 +52,11 @@ CHIP_ERROR IssueX509Cert(uint32_t now, uint32_t validity, ChipDN issuerDn, ChipD const Crypto::P256PublicKey & subjectPublicKey, Crypto::P256Keypair & issuerKeypair, MutableByteSpan & outX509Cert) { - constexpr size_t kDERCertDnEncodingOverhead = 11; - constexpr size_t kTLVCertDnEncodingOverhead = 3; - constexpr size_t kMaxCertPaddingLength = 150; - constexpr size_t kTLVDesiredSize = kMaxCHIPCertLength - 50; + constexpr size_t kDERCertFutureExtEncodingOverhead = 12; + constexpr size_t kTLVCertFutureExtEncodingOverhead = kDERCertFutureExtEncodingOverhead + 5; + constexpr size_t kMaxCertPaddingLength = 200; + constexpr size_t kTLVDesiredSize = kMaxCHIPCertLength; + constexpr uint8_t sOID_Extension_SubjectAltName[] = { 0x55, 0x1d, 0x11 }; Platform::ScopedMemoryBuffer derBuf; ReturnErrorCodeIf(!derBuf.Alloc(kMaxDERCertLength), CHIP_ERROR_NO_MEMORY); @@ -84,7 +85,7 @@ CHIP_ERROR IssueX509Cert(uint32_t now, uint32_t validity, ChipDN issuerDn, ChipD return CHIP_ERROR_INVALID_ARGUMENT; } - if (maximizeSize && (desiredDn.RDNCount() < CHIP_CONFIG_CERT_MAX_RDN_ATTRIBUTES)) + if (maximizeSize) { Platform::ScopedMemoryBuffer paddedTlvBuf; ReturnErrorCodeIf(!paddedTlvBuf.Alloc(kMaxCHIPCertLength + kMaxCertPaddingLength), CHIP_ERROR_NO_MEMORY); @@ -99,15 +100,8 @@ CHIP_ERROR IssueX509Cert(uint32_t now, uint32_t validity, ChipDN issuerDn, ChipD ReturnErrorCodeIf(!fillerBuf.Alloc(kMaxCertPaddingLength), CHIP_ERROR_NO_MEMORY); memset(fillerBuf.Get(), 'A', kMaxCertPaddingLength); - int derPaddingLen = static_cast(kMaxDERCertLength - kDERCertDnEncodingOverhead - derSpan.size()); - int tlvPaddingLen = static_cast(kTLVDesiredSize - kTLVCertDnEncodingOverhead - paddedTlvSpan.size()); - if (certType == CertType::kRcac) - { - // For RCAC the issuer/subject DN are the same so padding will be present in both - derPaddingLen = (derPaddingLen - static_cast(kDERCertDnEncodingOverhead)) / 2; - tlvPaddingLen = (tlvPaddingLen - static_cast(kTLVCertDnEncodingOverhead)) / 2; - } - + int derPaddingLen = static_cast(kMaxDERCertLength - kDERCertFutureExtEncodingOverhead - derSpan.size()); + int tlvPaddingLen = static_cast(kTLVDesiredSize - kTLVCertFutureExtEncodingOverhead - paddedTlvSpan.size()); size_t paddingLen = 0; if (derPaddingLen >= 1 && tlvPaddingLen >= 1) { @@ -119,24 +113,25 @@ CHIP_ERROR IssueX509Cert(uint32_t now, uint32_t validity, ChipDN issuerDn, ChipD paddedDerSpan = MutableByteSpan{ paddedDerBuf.Get(), kMaxDERCertLength + kMaxCertPaddingLength }; paddedTlvSpan = MutableByteSpan{ paddedTlvBuf.Get(), kMaxCHIPCertLength + kMaxCertPaddingLength }; - ChipDN certDn = desiredDn; - // Fill the padding in the DomainNameQualifier DN - certDn.AddAttribute_DNQualifier(CharSpan(fillerBuf.Get(), paddingLen), false); + Optional futureExt; + FutureExtension ext = { ByteSpan(sOID_Extension_SubjectAltName), + ByteSpan(reinterpret_cast(fillerBuf.Get()), paddingLen) }; + futureExt.SetValue(ext); switch (certType) { case CertType::kRcac: { - X509CertRequestParams rcacRequest = { serialNumber, now, now + validity, certDn, certDn }; + X509CertRequestParams rcacRequest = { serialNumber, now, now + validity, desiredDn, desiredDn, futureExt }; ReturnErrorOnFailure(NewRootX509Cert(rcacRequest, issuerKeypair, paddedDerSpan)); break; } case CertType::kIcac: { - X509CertRequestParams icacRequest = { serialNumber, now, now + validity, certDn, issuerDn }; + X509CertRequestParams icacRequest = { serialNumber, now, now + validity, desiredDn, issuerDn, futureExt }; ReturnErrorOnFailure(NewICAX509Cert(icacRequest, subjectPublicKey, issuerKeypair, paddedDerSpan)); break; } case CertType::kNoc: { - X509CertRequestParams nocRequest = { serialNumber, now, now + validity, certDn, issuerDn }; + X509CertRequestParams nocRequest = { serialNumber, now, now + validity, desiredDn, issuerDn, futureExt }; ReturnErrorOnFailure(NewNodeOperationalX509Cert(nocRequest, subjectPublicKey, issuerKeypair, paddedDerSpan)); break; } @@ -146,10 +141,10 @@ CHIP_ERROR IssueX509Cert(uint32_t now, uint32_t validity, ChipDN issuerDn, ChipD ReturnErrorOnFailure(ConvertX509CertToChipCert(paddedDerSpan, paddedTlvSpan)); - ChipLogProgress(Controller, "Generated maximized certificate with %u DER bytes, %u TLV bytes", - static_cast(paddedDerSpan.size()), static_cast(paddedTlvSpan.size())); if (paddedDerSpan.size() <= kMaxDERCertLength && paddedTlvSpan.size() <= kMaxCHIPCertLength) { + ChipLogProgress(Controller, "Generated maximized certificate with %u DER bytes, %u TLV bytes", + static_cast(paddedDerSpan.size()), static_cast(paddedTlvSpan.size())); return CopySpanToMutableSpan(paddedDerSpan, outX509Cert); } } diff --git a/src/credentials/CHIPCert.h b/src/credentials/CHIPCert.h index 2f3fb7f0d76253..d95671ee74c3a4 100644 --- a/src/credentials/CHIPCert.h +++ b/src/credentials/CHIPCert.h @@ -507,6 +507,12 @@ CHIP_ERROR ConvertChipCertToX509Cert(const ByteSpan chipCert, MutableByteSpan & */ CHIP_ERROR ValidateChipRCAC(const ByteSpan & rcac); +struct FutureExtension +{ + ByteSpan OID; + ByteSpan Extension; +}; + struct X509CertRequestParams { int64_t SerialNumber; @@ -514,6 +520,7 @@ struct X509CertRequestParams uint32_t ValidityEnd; ChipDN SubjectDN; ChipDN IssuerDN; + Optional FutureExt; }; /** diff --git a/src/credentials/GenerateChipX509Cert.cpp b/src/credentials/GenerateChipX509Cert.cpp index e1c6fe5002ce3b..b51c49e0174f22 100644 --- a/src/credentials/GenerateChipX509Cert.cpp +++ b/src/credentials/GenerateChipX509Cert.cpp @@ -230,7 +230,31 @@ CHIP_ERROR EncodeNOCSpecificExtensions(ASN1Writer & writer) return err; } -CHIP_ERROR EncodeExtensions(bool isCA, const Crypto::P256PublicKey & SKI, const Crypto::P256PublicKey & AKI, ASN1Writer & writer) +CHIP_ERROR EncodeFutureExtension(const Optional & futureExt, ASN1Writer & writer) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + VerifyOrReturnError(futureExt.HasValue(), CHIP_NO_ERROR); + + ASN1_START_SEQUENCE + { + ReturnErrorOnFailure(writer.PutObjectId(futureExt.Value().OID.data(), static_cast(futureExt.Value().OID.size()))); + + ASN1_START_OCTET_STRING_ENCAPSULATED + { + ReturnErrorOnFailure(writer.PutOctetString(futureExt.Value().Extension.data(), + static_cast(futureExt.Value().Extension.size()))); + } + ASN1_END_ENCAPSULATED; + } + ASN1_END_SEQUENCE; + +exit: + return err; +} + +CHIP_ERROR EncodeExtensions(bool isCA, const Crypto::P256PublicKey & SKI, const Crypto::P256PublicKey & AKI, + const Optional & futureExt, ASN1Writer & writer) { CHIP_ERROR err = CHIP_NO_ERROR; @@ -250,6 +274,8 @@ CHIP_ERROR EncodeExtensions(bool isCA, const Crypto::P256PublicKey & SKI, const ReturnErrorOnFailure(EncodeSubjectKeyIdentifierExtension(SKI, writer)); ReturnErrorOnFailure(EncodeAuthorityKeyIdentifierExtension(AKI, writer)); + + ReturnErrorOnFailure(EncodeFutureExtension(futureExt, writer)); } ASN1_END_SEQUENCE; } @@ -336,7 +362,7 @@ CHIP_ERROR EncodeTBSCert(const X509CertRequestParams & requestParams, const Cryp ReturnErrorOnFailure(EncodeSubjectPublicKeyInfo(subjectPubkey, writer)); // certificate extensions - ReturnErrorOnFailure(EncodeExtensions(isCA, subjectPubkey, issuerPubkey, writer)); + ReturnErrorOnFailure(EncodeExtensions(isCA, subjectPubkey, issuerPubkey, requestParams.FutureExt, writer)); } ASN1_END_SEQUENCE; diff --git a/src/credentials/tests/TestChipCert.cpp b/src/credentials/tests/TestChipCert.cpp index 97c00d7ca555bd..c84b18db79024c 100644 --- a/src/credentials/tests/TestChipCert.cpp +++ b/src/credentials/tests/TestChipCert.cpp @@ -102,6 +102,14 @@ static const BitFlags sKCandCR(sKC, sCR); static const BitFlags sKCandEO(sKC, sEO); static const BitFlags sKCandDO(sKC, sDO); +constexpr uint8_t sOID_Extension_SubjectAltName[] = { 0x55, 0x1d, 0x11 }; +constexpr char kExtension_SubjectAltName[] = "test@example.com"; + +FutureExtension ext{ ByteSpan(sOID_Extension_SubjectAltName), + ByteSpan(reinterpret_cast(const_cast(kExtension_SubjectAltName)), + strlen(kExtension_SubjectAltName)) }; +Optional kSubjectAltNameAsFutureExt(ext); + static CHIP_ERROR LoadTestCertSet01(ChipCertificateSet & certSet) { CHIP_ERROR err; @@ -1247,6 +1255,15 @@ static void TestChipCert_GenerateRootCert(nlTestSuite * inSuite, void * inContex NL_TEST_ASSERT(inSuite, DecodeChipCert(outCert, certData) == CHIP_NO_ERROR); + // Test with FutureExtension + X509CertRequestParams root_params2 = { 1234, 631161876, 729942000, root_dn, root_dn, kSubjectAltNameAsFutureExt }; + MutableByteSpan signed_cert_span2(signed_cert); + NL_TEST_ASSERT(inSuite, NewRootX509Cert(root_params2, keypair, signed_cert_span2) == CHIP_NO_ERROR); + outCert = MutableByteSpan(outCertBuf); + + NL_TEST_ASSERT(inSuite, ConvertX509CertToChipCert(signed_cert_span2, outCert) == CHIP_NO_ERROR); + NL_TEST_ASSERT(inSuite, DecodeChipCert(outCert, certData) == CHIP_NO_ERROR); + // Test error case: root cert subject provided ICA OID Attribute. root_params.SubjectDN.Clear(); NL_TEST_ASSERT(inSuite, root_params.SubjectDN.AddAttribute_MatterICACId(0xabcdabcd) == CHIP_NO_ERROR); @@ -1325,6 +1342,15 @@ static void TestChipCert_GenerateICACert(nlTestSuite * inSuite, void * inContext NL_TEST_ASSERT(inSuite, DecodeChipCert(outCert, certData) == CHIP_NO_ERROR); + // Test with FutureExtension + X509CertRequestParams ica_params2 = { 1234, 631161876, 729942000, ica_dn, issuer_dn, kSubjectAltNameAsFutureExt }; + MutableByteSpan signed_cert_span2(signed_cert); + NL_TEST_ASSERT(inSuite, NewICAX509Cert(ica_params2, ica_keypair.Pubkey(), keypair, signed_cert_span2) == CHIP_NO_ERROR); + outCert = MutableByteSpan(outCertBuf); + + NL_TEST_ASSERT(inSuite, ConvertX509CertToChipCert(signed_cert_span2, outCert) == CHIP_NO_ERROR); + NL_TEST_ASSERT(inSuite, DecodeChipCert(outCert, certData) == CHIP_NO_ERROR); + // Test error case: ICA cert subject provided a node ID attribute ica_params.SubjectDN.Clear(); NL_TEST_ASSERT(inSuite, ica_params.SubjectDN.AddAttribute_MatterNodeId(0xABCDABCDABCDABCD) == CHIP_NO_ERROR); @@ -1372,6 +1398,16 @@ static void TestChipCert_GenerateNOCRoot(nlTestSuite * inSuite, void * inContext NL_TEST_ASSERT(inSuite, DecodeChipCert(outCert, certData) == CHIP_NO_ERROR); + // Test with FutureExtension + X509CertRequestParams noc_params2 = { 123456, 631161876, 729942000, noc_dn, issuer_dn, kSubjectAltNameAsFutureExt }; + MutableByteSpan signed_cert_span2(signed_cert); + NL_TEST_ASSERT(inSuite, + NewNodeOperationalX509Cert(noc_params2, noc_keypair.Pubkey(), keypair, signed_cert_span2) == CHIP_NO_ERROR); + outCert = MutableByteSpan(outCertBuf); + + NL_TEST_ASSERT(inSuite, ConvertX509CertToChipCert(signed_cert_span2, outCert) == CHIP_NO_ERROR); + NL_TEST_ASSERT(inSuite, DecodeChipCert(outCert, certData) == CHIP_NO_ERROR); + // Test error case: NOC cert subject doesn't have NodeId attribute noc_params.SubjectDN.Clear(); NL_TEST_ASSERT(inSuite, noc_params.SubjectDN.AddAttribute_MatterFabricId(0xFAB00000FAB00001) == CHIP_NO_ERROR); diff --git a/src/tools/chip-cert/CertUtils.cpp b/src/tools/chip-cert/CertUtils.cpp index f929e1446317e2..0c22503628bc31 100644 --- a/src/tools/chip-cert/CertUtils.cpp +++ b/src/tools/chip-cert/CertUtils.cpp @@ -772,7 +772,7 @@ bool WriteChipCert(const char * fileName, const ByteSpan & chipCert, CertFormat } bool MakeCert(uint8_t certType, const ToolChipDN * subjectDN, X509 * caCert, EVP_PKEY * caKey, const struct tm & validFrom, - uint32_t validDays, int pathLen, const FutureExtension * futureExts, uint8_t futureExtsCount, X509 * newCert, + uint32_t validDays, int pathLen, const FutureExtensionWithNID * futureExts, uint8_t futureExtsCount, X509 * newCert, EVP_PKEY * newKey, CertStructConfig & certConfig) { bool res = true; @@ -925,7 +925,7 @@ bool MakeCert(uint8_t certType, const ToolChipDN * subjectDN, X509 * caCert, EVP } CHIP_ERROR MakeCertChipTLV(uint8_t certType, const ToolChipDN * subjectDN, X509 * caCert, EVP_PKEY * caKey, - const struct tm & validFrom, uint32_t validDays, int pathLen, const FutureExtension * futureExts, + const struct tm & validFrom, uint32_t validDays, int pathLen, const FutureExtensionWithNID * futureExts, uint8_t futureExtsCount, X509 * x509Cert, EVP_PKEY * newKey, CertStructConfig & certConfig, MutableByteSpan & chipCert) { diff --git a/src/tools/chip-cert/Cmd_GenCert.cpp b/src/tools/chip-cert/Cmd_GenCert.cpp index e944bdb07733c9..6a0a1c6784335d 100644 --- a/src/tools/chip-cert/Cmd_GenCert.cpp +++ b/src/tools/chip-cert/Cmd_GenCert.cpp @@ -243,19 +243,19 @@ OptionSet *gCmdOptionSets[] = // clang-format on ToolChipDN gSubjectDN; -uint8_t gCertType = kCertType_NotSpecified; -int gPathLengthConstraint = kPathLength_NotSpecified; -bool gSelfSign = false; -const char * gCACertFileName = nullptr; -const char * gCAKeyFileName = nullptr; -const char * gInKeyFileName = nullptr; -const char * gOutCertFileName = nullptr; -const char * gOutKeyFileName = nullptr; -CertFormat gOutCertFormat = kCertFormat_Default; -KeyFormat gOutKeyFormat = kKeyFormat_Default; -uint32_t gValidDays = kCertValidDays_Undefined; -FutureExtension gFutureExtensions[3] = { { 0, nullptr } }; -uint8_t gFutureExtensionsCount = 0; +uint8_t gCertType = kCertType_NotSpecified; +int gPathLengthConstraint = kPathLength_NotSpecified; +bool gSelfSign = false; +const char * gCACertFileName = nullptr; +const char * gCAKeyFileName = nullptr; +const char * gInKeyFileName = nullptr; +const char * gOutCertFileName = nullptr; +const char * gOutKeyFileName = nullptr; +CertFormat gOutCertFormat = kCertFormat_Default; +KeyFormat gOutKeyFormat = kKeyFormat_Default; +uint32_t gValidDays = kCertValidDays_Undefined; +FutureExtensionWithNID gFutureExtensions[3] = { { 0, nullptr } }; +uint8_t gFutureExtensionsCount = 0; struct tm gValidFrom; CertStructConfig gCertConfig; diff --git a/src/tools/chip-cert/chip-cert.h b/src/tools/chip-cert/chip-cert.h index 6bdd41855c3a01..39e32fbe580c8b 100644 --- a/src/tools/chip-cert/chip-cert.h +++ b/src/tools/chip-cert/chip-cert.h @@ -141,7 +141,7 @@ enum AttCertType kAttCertType_DAC, /**< Device Attestation Certificate (DAC). */ }; -struct FutureExtension +struct FutureExtensionWithNID { int nid; const char * info; @@ -410,12 +410,12 @@ extern bool WriteCert(const char * fileName, X509 * cert, CertFormat certFmt); extern bool WriteChipCert(const char * fileName, const chip::ByteSpan & cert, CertFormat certFmt); extern bool MakeCert(uint8_t certType, const ToolChipDN * subjectDN, X509 * caCert, EVP_PKEY * caKey, const struct tm & validFrom, - uint32_t validDays, int pathLen, const FutureExtension * futureExts, uint8_t futureExtsCount, X509 * newCert, - EVP_PKEY * newKey, CertStructConfig & certConfig); + uint32_t validDays, int pathLen, const FutureExtensionWithNID * futureExts, uint8_t futureExtsCount, + X509 * newCert, EVP_PKEY * newKey, CertStructConfig & certConfig); extern CHIP_ERROR MakeCertChipTLV(uint8_t certType, const ToolChipDN * subjectDN, X509 * caCert, EVP_PKEY * caKey, - const struct tm & validFrom, uint32_t validDays, int pathLen, const FutureExtension * futureExts, - uint8_t futureExtsCount, X509 * x509Cert, EVP_PKEY * newKey, CertStructConfig & certConfig, - chip::MutableByteSpan & chipCert); + const struct tm & validFrom, uint32_t validDays, int pathLen, + const FutureExtensionWithNID * futureExts, uint8_t futureExtsCount, X509 * x509Cert, + EVP_PKEY * newKey, CertStructConfig & certConfig, chip::MutableByteSpan & chipCert); extern bool ResignCert(X509 * cert, X509 * caCert, EVP_PKEY * caKey); extern bool MakeAttCert(AttCertType attCertType, const char * subjectCN, uint16_t subjectVID, uint16_t subjectPID, From 4ab1882b52a66a99b66126034581ae716e3e668f Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Tue, 23 Aug 2022 10:24:52 -0400 Subject: [PATCH 39/44] Add libnl-dev to chip-build Dockerfile (#22047) --- integrations/docker/images/chip-build/Dockerfile | 4 +++- integrations/docker/images/chip-build/version | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/integrations/docker/images/chip-build/Dockerfile b/integrations/docker/images/chip-build/Dockerfile index bfcfea5e40e755..861f5ecb2df4e7 100644 --- a/integrations/docker/images/chip-build/Dockerfile +++ b/integrations/docker/images/chip-build/Dockerfile @@ -28,14 +28,16 @@ RUN set -x \ libcairo2-dev \ libdbus-1-dev \ libdbus-glib-1-dev \ + libdmalloc-dev \ libgif-dev \ libglib2.0-dev \ libical-dev \ libjpeg-dev \ - libdmalloc-dev \ libmbedtls-dev \ libncurses5-dev \ libncursesw5-dev \ + libnl-3-dev \ + libnl-route-3-dev \ libnspr4-dev \ libpango1.0-dev \ libpixman-1-dev \ diff --git a/integrations/docker/images/chip-build/version b/integrations/docker/images/chip-build/version index 1cb8eca1c7f032..b22b98316c9f22 100644 --- a/integrations/docker/images/chip-build/version +++ b/integrations/docker/images/chip-build/version @@ -1 +1 @@ -0.5.95 Version bump reason: Fix nrfconnect Docker build +0.5.96 Version bump reason: add libnl-dev libs to chip-build image From 0f9615d56605ab97e32c53d5cafd8a537666318b Mon Sep 17 00:00:00 2001 From: Seth Rickard Date: Tue, 23 Aug 2022 10:22:32 -0500 Subject: [PATCH 40/44] Update KVS to handle zero length elements (#21977) * allow for nullptr in KVS write * complete audit with chip_support_enable_storage_api_audit=true --- .../cc13x2_26x2/CC13X2_26X2Config.cpp | 83 +++++++++++-------- .../cc13x2_26x2/KeyValueStoreManagerImpl.cpp | 7 +- .../cc32xx/KeyValueStoreManagerImpl.cpp | 7 +- 3 files changed, 57 insertions(+), 40 deletions(-) diff --git a/src/platform/cc13x2_26x2/CC13X2_26X2Config.cpp b/src/platform/cc13x2_26x2/CC13X2_26X2Config.cpp index 09e3393e07b1b1..8d25d6673f5ea1 100644 --- a/src/platform/cc13x2_26x2/CC13X2_26X2Config.cpp +++ b/src/platform/cc13x2_26x2/CC13X2_26X2Config.cpp @@ -28,6 +28,7 @@ #include #include +#include #include #include @@ -165,7 +166,7 @@ CHIP_ERROR CC13X2_26X2Config::ReadConfigValueBin(Key key, uint8_t * buf, size_t /* Iterate through the key range to find a key that matches. */ static uint8_t FindKVSSubID(const char * key, uint16_t & subID) { - char key_scratch[32]; // 32 characters seems large enough for a key + char key_scratch[PersistentStorageDelegate::kKeyLengthMax + 1]; NVINTF_nvProxy_t nvProxy = { 0 }; uint8_t status = NVINTF_SUCCESS; @@ -209,20 +210,23 @@ CHIP_ERROR CC13X2_26X2Config::ReadKVS(const char * key, void * value, size_t val val_item.subID = subID; len = sNvoctpFps.getItemLen(val_item); - VerifyOrExit(len > 0, err = CHIP_DEVICE_ERROR_CONFIG_NOT_FOUND); // key not found - if ((offset_bytes + value_size) > len) + if (value_size >= (len - offset_bytes)) { - // trying to read up to the end of the element + // reading to end of element read_len = len - offset_bytes; } else { read_len = value_size; + err = CHIP_ERROR_BUFFER_TOO_SMALL; } - VerifyOrExit(sNvoctpFps.readItem(val_item, (uint16_t) offset_bytes, read_len, value) == NVINTF_SUCCESS, - err = CHIP_ERROR_PERSISTED_STORAGE_FAILED); + if (read_len > 0) + { + VerifyOrExit(sNvoctpFps.readItem(val_item, (uint16_t) offset_bytes, read_len, value) == NVINTF_SUCCESS, + err = CHIP_ERROR_PERSISTED_STORAGE_FAILED); + } if (read_bytes_size) { @@ -264,22 +268,14 @@ CHIP_ERROR CC13X2_26X2Config::WriteKVS(const char * key, const void * value, siz CHIP_ERROR err = CHIP_NO_ERROR; uint16_t subID; - if (FindKVSSubID(key, subID) == NVINTF_SUCCESS) - { - NVINTF_itemID_t val_item = CC13X2_26X2Config::kConfigKey_KVS_value.nvID; - // key already exists, update value - val_item.subID = subID; - VerifyOrExit(sNvoctpFps.updateItem(val_item, (uint16_t) value_size, (void *) value) == NVINTF_SUCCESS, - err = CHIP_ERROR_PERSISTED_STORAGE_FAILED); - } - else + NVINTF_itemID_t key_item = CC13X2_26X2Config::kConfigKey_KVS_key.nvID; + NVINTF_itemID_t val_item = CC13X2_26X2Config::kConfigKey_KVS_value.nvID; + + if (FindKVSSubID(key, subID) != NVINTF_SUCCESS) { - // key does not exist, likely case + // key item not found, find an empty subID intptr_t lock_key = sNvoctpFps.lockNV(); - NVINTF_itemID_t key_item = CC13X2_26X2Config::kConfigKey_KVS_key.nvID; - NVINTF_itemID_t val_item = CC13X2_26X2Config::kConfigKey_KVS_value.nvID; - /* Iterate through the subID range to find an unused subID in the * keyspace. SubID is a 10 bit value, reference * `/source/ti/common/nv/nvocmp.c:MVOCMP_MAXSUBID`. @@ -289,26 +285,39 @@ CHIP_ERROR CC13X2_26X2Config::WriteKVS(const char * key, const void * value, siz key_item.subID = i; if (sNvoctpFps.getItemLen(key_item) == 0U) { - val_item.subID = i; + subID = i; break; } } + sNvoctpFps.unlockNV(lock_key); + // write they key item - if (sNvoctpFps.writeItem(key_item, (uint16_t) strlen(key), (void *) key) == NVINTF_SUCCESS) + VerifyOrExit(sNvoctpFps.writeItem(key_item, (uint16_t) strlen(key), (void *) key) == NVINTF_SUCCESS, + err = CHIP_ERROR_PERSISTED_STORAGE_FAILED); + } + + key_item.subID = subID; + val_item.subID = subID; + + if (value_size == 0U) + { + // delete the value item if it exists + int8_t ret = sNvoctpFps.deleteItem(val_item); + if (ret != NVINTF_SUCCESS && ret != NVINTF_NOTFOUND) { - if (sNvoctpFps.writeItem(val_item, (uint16_t) value_size, (void *) value) != NVINTF_SUCCESS) - { - // try to delete the key item - sNvoctpFps.deleteItem(key_item); - err = CHIP_ERROR_PERSISTED_STORAGE_FAILED; - } + err = CHIP_ERROR_PERSISTED_STORAGE_FAILED; } - else + } + else + { + if (sNvoctpFps.writeItem(val_item, (uint16_t) value_size, (void *) value) != NVINTF_SUCCESS) { + // try to delete the key item + sNvoctpFps.deleteItem(key_item); err = CHIP_ERROR_PERSISTED_STORAGE_FAILED; } - sNvoctpFps.unlockNV(lock_key); } + exit: return err; } @@ -325,25 +334,31 @@ CHIP_ERROR CC13X2_26X2Config::WriteConfigValueBin(Key key, const uint8_t * data, CHIP_ERROR CC13X2_26X2Config::ClearKVS(const char * key) { - CHIP_ERROR err = CHIP_NO_ERROR; + CHIP_ERROR err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND; uint16_t subID; NVINTF_itemID_t key_item = CC13X2_26X2Config::kConfigKey_KVS_key.nvID; NVINTF_itemID_t val_item = CC13X2_26X2Config::kConfigKey_KVS_value.nvID; if (FindKVSSubID(key, subID) == NVINTF_SUCCESS) { + int8_t ret; + key_item.subID = subID; val_item.subID = subID; - // delete the value item - if (sNvoctpFps.deleteItem(val_item) != NVINTF_SUCCESS) + // delete the value item if it exists + ret = sNvoctpFps.deleteItem(val_item); + if (ret != NVINTF_SUCCESS && ret != NVINTF_NOTFOUND) { err = CHIP_ERROR_PERSISTED_STORAGE_FAILED; } - // delete the key item - if (sNvoctpFps.deleteItem(key_item) != NVINTF_SUCCESS) + // delete the key item if it exists + ret = sNvoctpFps.deleteItem(key_item); + if (ret != NVINTF_SUCCESS && ret != NVINTF_NOTFOUND) { err = CHIP_ERROR_PERSISTED_STORAGE_FAILED; } + + err = CHIP_NO_ERROR; } return err; diff --git a/src/platform/cc13x2_26x2/KeyValueStoreManagerImpl.cpp b/src/platform/cc13x2_26x2/KeyValueStoreManagerImpl.cpp index b74146c1de3704..5227b55e5e65df 100644 --- a/src/platform/cc13x2_26x2/KeyValueStoreManagerImpl.cpp +++ b/src/platform/cc13x2_26x2/KeyValueStoreManagerImpl.cpp @@ -44,7 +44,10 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t CHIP_ERROR err; VerifyOrReturnError(key, CHIP_ERROR_INVALID_ARGUMENT); - VerifyOrReturnError(value, CHIP_ERROR_INVALID_ARGUMENT); + if (0U != value_size) + { + VerifyOrReturnError(value, CHIP_ERROR_INVALID_ARGUMENT); + } err = CC13X2_26X2Config::ReadKVS(key, value, value_size, read_bytes_size, offset_bytes); @@ -58,8 +61,6 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t CHIP_ERROR KeyValueStoreManagerImpl::_Put(const char * key, const void * value, size_t value_size) { VerifyOrReturnError(key, CHIP_ERROR_INVALID_ARGUMENT); - VerifyOrReturnError(value, CHIP_ERROR_INVALID_ARGUMENT); - VerifyOrReturnError(value_size > 0, CHIP_ERROR_INVALID_ARGUMENT); return CC13X2_26X2Config::WriteKVS(key, value, value_size); } diff --git a/src/platform/cc32xx/KeyValueStoreManagerImpl.cpp b/src/platform/cc32xx/KeyValueStoreManagerImpl.cpp index 13c1a023443594..ea0f2e546ce6c4 100644 --- a/src/platform/cc32xx/KeyValueStoreManagerImpl.cpp +++ b/src/platform/cc32xx/KeyValueStoreManagerImpl.cpp @@ -42,7 +42,10 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t size_t offset_bytes) const { VerifyOrReturnError(key, CHIP_ERROR_INVALID_ARGUMENT); - VerifyOrReturnError(value, CHIP_ERROR_INVALID_ARGUMENT); + if (0U != value_size) + { + VerifyOrReturnError(value, CHIP_ERROR_INVALID_ARGUMENT); + } return CC32XXConfig::ReadKVS(key, value, value_size, read_bytes_size, offset_bytes); } @@ -50,8 +53,6 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t CHIP_ERROR KeyValueStoreManagerImpl::_Put(const char * key, const void * value, size_t value_size) { VerifyOrReturnError(key, CHIP_ERROR_INVALID_ARGUMENT); - VerifyOrReturnError(value, CHIP_ERROR_INVALID_ARGUMENT); - VerifyOrReturnError(value_size > 0, CHIP_ERROR_INVALID_ARGUMENT); return CC32XXConfig::WriteKVS(key, value, value_size); } From 8702d3ab976f06815e3f4d69d2f2a6bdda1852e4 Mon Sep 17 00:00:00 2001 From: Wang Qixiang <43193572+wqx6@users.noreply.github.com> Date: Tue, 23 Aug 2022 23:40:33 +0800 Subject: [PATCH 41/44] Support lighting-app on ESP32H2-beta2 with idf tag v5.0-beta1 (#22064) --- config/esp32/components/chip/CMakeLists.txt | 12 ++++++--- docs/guides/esp32/setup_idf_chip.md | 6 ++--- examples/lighting-app/esp32/main/Button.cpp | 18 +++++++++++++ .../lighting-app/esp32/main/CMakeLists.txt | 2 +- .../lighting-app/esp32/main/LEDWidget.cpp | 18 +++++++++++-- .../esp32/main/include/LEDWidget.h | 4 +++ .../esp32/sdkconfig.defaults.esp32h2 | 24 ++++++++---------- .../esp32/common/CommonDeviceCallbacks.cpp | 25 +++++++++++++++---- src/lib/shell/streamer_esp32.cpp | 6 ++++- src/platform/ESP32/ESP32Config.cpp | 6 +++++ src/platform/ESP32/OpenthreadLauncher.c | 2 +- src/platform/ESP32/nimble/BLEManagerImpl.cpp | 7 ++++-- 12 files changed, 98 insertions(+), 32 deletions(-) diff --git a/config/esp32/components/chip/CMakeLists.txt b/config/esp32/components/chip/CMakeLists.txt index 63dff3ee1f5589..74b79dffc93466 100644 --- a/config/esp32/components/chip/CMakeLists.txt +++ b/config/esp32/components/chip/CMakeLists.txt @@ -31,7 +31,11 @@ endif() include(${CMAKE_CURRENT_LIST_DIR}/ota-image.cmake) -set(CHIP_REQURIE_COMPONENTS freertos lwip bt mdns mbedtls fatfs app_update console openthread) +set(CHIP_REQURIE_COMPONENTS freertos lwip bt mbedtls fatfs app_update console openthread nvs_flash) + +if(NOT "${IDF_TARGET}" STREQUAL "esp32h2") + list(APPEND CHIP_REQURIE_COMPONENTS mdns) +endif() if (NOT CMAKE_BUILD_EARLY_EXPANSION) if (CONFIG_COMPILER_OPTIMIZATION_DEFAULT OR CONFIG_COMPILER_OPTIMIZATION_NONE) @@ -270,7 +274,9 @@ if(CONFIG_BT_ENABLED) idf_component_get_property(bt_lib bt COMPONENT_LIB) idf_component_get_property(bt_dir bt COMPONENT_DIR) list(APPEND chip_libraries $) - list(APPEND chip_libraries ${bt_dir}/controller/lib_esp32h2/esp32h2-bt-lib/libcontroller_5p0_seq.a) + if(CONFIG_IDF_TARGET_ESP32H2_BETA_VERSION_2) + list(APPEND chip_libraries ${bt_dir}/controller/lib_esp32h2/esp32h2-bt-lib/beta2/libble_app.a) + endif() else() idf_component_get_property(bt_lib bt COMPONENT_LIB) list(APPEND chip_libraries $ -lbtdm_app) @@ -287,7 +293,7 @@ if(CONFIG_OPENTHREAD_ENABLED) list(APPEND chip_libraries $) endif() -if(NOT CONFIG_USE_MINIMAL_MDNS) +if(NOT CONFIG_USE_MINIMAL_MDNS AND NOT CONFIG_IDF_TARGET_ESP32H2) idf_component_get_property(mdns_lib mdns COMPONENT_LIB) list(APPEND chip_libraries $) endif() diff --git a/docs/guides/esp32/setup_idf_chip.md b/docs/guides/esp32/setup_idf_chip.md index acc001e67a6874..f6c7f649834fd7 100644 --- a/docs/guides/esp32/setup_idf_chip.md +++ b/docs/guides/esp32/setup_idf_chip.md @@ -39,13 +39,13 @@ step. $ ./install.sh ``` -- For ESP32H2, please checkout commit id - [10f3aba770](https://github.com/espressif/esp-idf/tree/10f3aba770), +- For ESP32H2, please checkout tag + [v5.0-beta1](https://github.com/espressif/esp-idf/tree/v5.0-beta1), currently only lighting-app is supported on H2 ``` $ cd esp-idf - $ git checkout 10f3aba770 + $ git checkout v5.0-beta1 $ git submodule update --init $ ./install.sh ``` diff --git a/examples/lighting-app/esp32/main/Button.cpp b/examples/lighting-app/esp32/main/Button.cpp index 73a3758818070f..aadae002bc2d08 100644 --- a/examples/lighting-app/esp32/main/Button.cpp +++ b/examples/lighting-app/esp32/main/Button.cpp @@ -1,4 +1,22 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + #include "Button.h" +#include "esp_attr.h" #define GPIO_INPUT_IO_0 9 #define GPIO_INPUT_PIN_SEL (1ULL << GPIO_INPUT_IO_0) diff --git a/examples/lighting-app/esp32/main/CMakeLists.txt b/examples/lighting-app/esp32/main/CMakeLists.txt index 097f5ba8c41357..233b25d29ada1f 100644 --- a/examples/lighting-app/esp32/main/CMakeLists.txt +++ b/examples/lighting-app/esp32/main/CMakeLists.txt @@ -65,7 +65,7 @@ idf_component_register(PRIV_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ota-requestor" "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/groups-server" "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/group-key-mgmt-server" - PRIV_REQUIRES chip QRCode bt led_strip app_update openthread) + PRIV_REQUIRES chip QRCode bt led_strip app_update openthread driver nvs_flash) set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17) target_compile_options(${COMPONENT_LIB} PRIVATE "-DCHIP_HAVE_CONFIG_H") diff --git a/examples/lighting-app/esp32/main/LEDWidget.cpp b/examples/lighting-app/esp32/main/LEDWidget.cpp index 12cbf0f6d3295a..bf2221b26446c9 100644 --- a/examples/lighting-app/esp32/main/LEDWidget.cpp +++ b/examples/lighting-app/esp32/main/LEDWidget.cpp @@ -17,6 +17,7 @@ #include "LEDWidget.h" #include "ColorFormat.h" +#include "led_strip.h" static const char * TAG = "LEDWidget"; @@ -26,6 +27,14 @@ void LEDWidget::Init(void) mBrightness = UINT8_MAX; #if CONFIG_LED_TYPE_RMT +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) + led_strip_config_t strip_config = { + .strip_gpio_num = CONFIG_LED_GPIO, + .max_leds = 1, + }; + + led_strip_new_rmt_device(&strip_config, &mStrip); +#else rmt_config_t config = RMT_DEFAULT_CONFIG_TX((gpio_num_t) CONFIG_LED_GPIO, (rmt_channel_t) CONFIG_LED_RMT_CHANNEL); led_strip_config_t strip_config = LED_STRIP_DEFAULT_CONFIG(1, (led_strip_dev_t) config.channel); @@ -33,7 +42,8 @@ void LEDWidget::Init(void) rmt_config(&config); rmt_driver_install(config.channel, 0, 0); - mStrip = led_strip_new_rmt_ws2812(&strip_config); + mStrip = led_strip_new_rmt_ws2812(&strip_config); +#endif mHue = 0; mSaturation = 0; #else @@ -121,9 +131,13 @@ void LEDWidget::DoSet(void) { HsvColor_t hsv = { mHue, mSaturation, brightness }; RgbColor_t rgb = HsvToRgb(hsv); - +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) + led_strip_set_pixel(mStrip, 0, rgb.r, rgb.g, rgb.b); + led_strip_refresh(mStrip); +#else mStrip->set_pixel(mStrip, 0, rgb.r, rgb.g, rgb.b); mStrip->refresh(mStrip, 100); +#endif } #else ESP_LOGI(TAG, "DoSet to GPIO number %d", mGPIONum); diff --git a/examples/lighting-app/esp32/main/include/LEDWidget.h b/examples/lighting-app/esp32/main/include/LEDWidget.h index c390d63ac1024f..f9d00a2b6882a9 100644 --- a/examples/lighting-app/esp32/main/include/LEDWidget.h +++ b/examples/lighting-app/esp32/main/include/LEDWidget.h @@ -50,7 +50,11 @@ class LEDWidget #if CONFIG_LED_TYPE_RMT uint8_t mHue; uint8_t mSaturation; +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) + led_strip_handle_t mStrip; +#else led_strip_t * mStrip; +#endif #else gpio_num_t mGPIONum; #endif diff --git a/examples/lighting-app/esp32/sdkconfig.defaults.esp32h2 b/examples/lighting-app/esp32/sdkconfig.defaults.esp32h2 index 3a6d8da8ff4033..dc637d31dc7a2e 100644 --- a/examples/lighting-app/esp32/sdkconfig.defaults.esp32h2 +++ b/examples/lighting-app/esp32/sdkconfig.defaults.esp32h2 @@ -1,4 +1,5 @@ CONFIG_IDF_TARGET="esp32h2" +CONFIG_IDF_TARGET_ESP32H2_BETA_VERSION_2=y # Default to 921600 baud when flashing and monitoring device CONFIG_ESPTOOLPY_BAUD_921600B=y @@ -16,14 +17,9 @@ CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y # NIMBLE CONFIG_BT_ENABLED=y -CONFIG_BT_BLUEDROID_ENABLED=n CONFIG_BT_NIMBLE_ENABLED=y -CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT=y CONFIG_BT_NIMBLE_EXT_ADV=n -CONFIG_BT_NIMBLE_USE_ESP_TIMER=n -CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n -CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70 CONFIG_DEINIT_BLE_ON_COMMISSIONING_COMPLETE=n # Enable OpenThread @@ -45,22 +41,19 @@ CONFIG_LWIP_MULTICAST_PING=y CONFIG_MBEDTLS_HARDWARE_AES=n CONFIG_MBEDTLS_HARDWARE_MPI=n CONFIG_MBEDTLS_HARDWARE_SHA=n +CONFIG_MBEDTLS_HARDWARE_ECC=y CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN=n CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY=n CONFIG_MBEDTLS_CMAC_C=y CONFIG_MBEDTLS_SSL_PROTO_DTLS=y CONFIG_MBEDTLS_KEY_EXCHANGE_ECJPAKE=y +# rtc clk for ble +# CONFIG_ESP32H2_RTC_CLK_SRC_EXT_CRYS=y + # MDNS platform CONFIG_USE_MINIMAL_MDNS=n - -# Increase stacks size -CONFIG_NIMBLE_CONTROLLER_TASK_STACK_SIZE=5120 -CONFIG_NIMBLE_HOST_TASK_STACK_SIZE=5120 - -# ESP32H2 BLE using a ext 32k crystal -CONFIG_ESP32H2_RTC_CLK_SRC_EXT_CRYS=y -CONFIG_ESP32H2_RTC_CLK_CAL_CYCLES=576 +CONFIG_ENABLE_EXTENDED_DISCOVERY=y # FreeRTOS should use legacy API CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY=y @@ -71,3 +64,6 @@ CONFIG_ENABLE_WIFI_AP=n # Enable OTA Requestor CONFIG_ENABLE_OTA_REQUESTOR=y + +# Enable chip shell +CONFIG_ENABLE_CHIP_SHELL=y diff --git a/examples/platform/esp32/common/CommonDeviceCallbacks.cpp b/examples/platform/esp32/common/CommonDeviceCallbacks.cpp index e975dce62914f2..ba9eafc19c1397 100644 --- a/examples/platform/esp32/common/CommonDeviceCallbacks.cpp +++ b/examples/platform/esp32/common/CommonDeviceCallbacks.cpp @@ -20,7 +20,9 @@ #if CONFIG_BT_ENABLED #include "esp_bt.h" #if CONFIG_BT_NIMBLE_ENABLED +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "esp_nimble_hci.h" +#endif // ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "nimble/nimble_port.h" #endif // CONFIG_BT_NIMBLE_ENABLED #endif // CONFIG_BT_ENABLED @@ -45,6 +47,9 @@ using namespace chip::DeviceLayer; using namespace chip::System; DeviceCallbacksDelegate * appDelegate = nullptr; +#if CONFIG_ENABLE_OTA_REQUESTOR +static bool isOTAInitialized = false; +#endif void CommonDeviceCallbacks::DeviceEventCallback(const ChipDeviceEvent * event, intptr_t arg) { @@ -62,17 +67,30 @@ void CommonDeviceCallbacks::DeviceEventCallback(const ChipDeviceEvent * event, i ESP_LOGI(TAG, "CHIPoBLE disconnected"); break; + case DeviceEventType::kThreadConnectivityChange: +#if CONFIG_ENABLE_OTA_REQUESTOR + if (event->ThreadConnectivityChange.Result == kConnectivity_Established && !isOTAInitialized) + { + OTAHelpers::Instance().InitOTARequestor(); + isOTAInitialized = true; + } +#endif + break; + case DeviceEventType::kCommissioningComplete: { ESP_LOGI(TAG, "Commissioning complete"); #if CONFIG_BT_NIMBLE_ENABLED && CONFIG_DEINIT_BLE_ON_COMMISSIONING_COMPLETE if (ble_hs_is_enabled()) { - int ret = nimble_port_stop(); + int ret = nimble_port_stop(); + esp_err_t err = ESP_OK; if (ret == 0) { nimble_port_deinit(); - esp_err_t err = esp_nimble_hci_and_controller_deinit(); +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) + err = esp_nimble_hci_and_controller_deinit(); +#endif // ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) err += esp_bt_mem_release(ESP_BT_MODE_BLE); if (err == ESP_OK) { @@ -114,9 +132,6 @@ void CommonDeviceCallbacks::DeviceEventCallback(const ChipDeviceEvent * event, i void CommonDeviceCallbacks::OnInternetConnectivityChange(const ChipDeviceEvent * event) { -#if CONFIG_ENABLE_OTA_REQUESTOR - static bool isOTAInitialized = false; -#endif appDelegate = DeviceCallbacksDelegate::Instance().GetAppDelegate(); if (event->InternetConnectivityChange.IPv4 == kConnectivity_Established) { diff --git a/src/lib/shell/streamer_esp32.cpp b/src/lib/shell/streamer_esp32.cpp index c35abed55c5eb0..7d51afd7399cbe 100644 --- a/src/lib/shell/streamer_esp32.cpp +++ b/src/lib/shell/streamer_esp32.cpp @@ -62,7 +62,11 @@ int streamer_esp32_init(streamer_t * streamer) .stop_bits = UART_STOP_BITS_1, .flow_ctrl = UART_HW_FLOWCTRL_DISABLE, .rx_flow_ctrl_thresh = 0, - .source_clk = UART_SCLK_APB, +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) + .source_clk = UART_SCLK_DEFAULT, +#else + .source_clk = UART_SCLK_APB, +#endif }; ESP_ERROR_CHECK(uart_param_config(CONFIG_ESP_CONSOLE_UART_NUM, &uart_config)); esp_vfs_dev_uart_use_driver(0); diff --git a/src/platform/ESP32/ESP32Config.cpp b/src/platform/ESP32/ESP32Config.cpp index 537ec90375c754..dc65ab772d696d 100644 --- a/src/platform/ESP32/ESP32Config.cpp +++ b/src/platform/ESP32/ESP32Config.cpp @@ -353,8 +353,14 @@ CHIP_ERROR ESP32Config::ClearConfigValue(Key key) bool ESP32Config::ConfigValueExists(Key key) { +#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 0, 0) + nvs_iterator_t iterator = NULL; + esp_err_t err = nvs_entry_find(NVS_DEFAULT_PART_NAME, key.Namespace, NVS_TYPE_ANY, &iterator); + for (; iterator && err == ESP_OK; err = nvs_entry_next(&iterator)) +#else nvs_iterator_t iterator = nvs_entry_find(NVS_DEFAULT_PART_NAME, key.Namespace, NVS_TYPE_ANY); for (; iterator; iterator = nvs_entry_next(iterator)) +#endif { nvs_entry_info_t info; nvs_entry_info(iterator, &info); diff --git a/src/platform/ESP32/OpenthreadLauncher.c b/src/platform/ESP32/OpenthreadLauncher.c index c9ef95fb5cb4de..c1ad467e032174 100644 --- a/src/platform/ESP32/OpenthreadLauncher.c +++ b/src/platform/ESP32/OpenthreadLauncher.c @@ -53,7 +53,7 @@ static void ot_task_worker(void * context) // Initialize the OpenThread stack ESP_ERROR_CHECK(esp_openthread_init(&config)); // The OpenThread log level directly matches ESP log level - (void) otLoggingSetLevel(OT_LOG_LEVEL_INFO); + (void) otLoggingSetLevel(CONFIG_LOG_DEFAULT_LEVEL); // Initialize the esp_netif bindings openthread_netif = init_openthread_netif(&config); diff --git a/src/platform/ESP32/nimble/BLEManagerImpl.cpp b/src/platform/ESP32/nimble/BLEManagerImpl.cpp index 2cf626c1751c50..b4459196fd9baa 100644 --- a/src/platform/ESP32/nimble/BLEManagerImpl.cpp +++ b/src/platform/ESP32/nimble/BLEManagerImpl.cpp @@ -40,7 +40,9 @@ #include #include "esp_log.h" +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) #include "esp_nimble_hci.h" +#endif #include "host/ble_hs.h" #include "host/ble_hs_pvcy.h" #include "host/ble_uuid.h" @@ -152,7 +154,7 @@ CHIP_ERROR BLEManagerImpl::_Init() mFlags.ClearAll().Set(Flags::kAdvertisingEnabled, CHIP_DEVICE_CONFIG_CHIPOBLE_ENABLE_ADVERTISING_AUTOSTART); mFlags.Set(Flags::kFastAdvertisingEnabled, true); mNumGAPCons = 0; - memset(mCons, 0, sizeof(mCons)); + memset(reinterpret_cast(mCons), 0, sizeof(mCons)); mServiceMode = ConnectivityManager::kCHIPoBLEServiceMode_Enabled; memset(mDeviceName, 0, sizeof(mDeviceName)); @@ -613,9 +615,10 @@ CHIP_ERROR BLEManagerImpl::InitESPBleLayer(void) { mSubscribedConIds[i] = BLE_CONNECTION_UNINITIALIZED; } - +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) err = MapBLEError(esp_nimble_hci_and_controller_init()); SuccessOrExit(err); +#endif nimble_port_init(); From 27ca0452dd86d6b777e24ad90b9939e79ce2e9e8 Mon Sep 17 00:00:00 2001 From: pankore <86098180+pankore@users.noreply.github.com> Date: Wed, 24 Aug 2022 00:08:00 +0800 Subject: [PATCH 42/44] [KVS] Check NULL pointer for getPref_bin_new (#21854) * [KVS] Add NULL pointer check for getPref_bin_new Invalid read_bytes_size pointer could cause hard fault on getPref_bin_new function. * [KVS] Pass in dummy_read_bytes when read_bytes is nullptr * [Restyle] Fix styling * [KVS] Add nullptr check after pvPortMalloc * [Restyle] Fix style Co-authored-by: Andrei Litvin --- src/platform/Ameba/KeyValueStoreManagerImpl.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/platform/Ameba/KeyValueStoreManagerImpl.cpp b/src/platform/Ameba/KeyValueStoreManagerImpl.cpp index 74e8a2882f6cb7..93ec38b8611b58 100644 --- a/src/platform/Ameba/KeyValueStoreManagerImpl.cpp +++ b/src/platform/Ameba/KeyValueStoreManagerImpl.cpp @@ -49,7 +49,20 @@ CHIP_ERROR KeyValueStoreManagerImpl::_Get(const char * key, void * value, size_t return (err = CHIP_ERROR_NOT_IMPLEMENTED); } - ret = getPref_bin_new(key, key, (uint8_t *) value, value_size, read_bytes_size); + if (read_bytes_size) + { + ret = getPref_bin_new(key, key, (uint8_t *) value, value_size, read_bytes_size); + } + else + { + size_t * dummy_read_bytes_size = (size_t *) pvPortMalloc(sizeof(size_t)); + if (!dummy_read_bytes_size) + { + return CHIP_ERROR_INTERNAL; + } + ret = getPref_bin_new(key, key, (uint8_t *) value, value_size, dummy_read_bytes_size); + vPortFree(dummy_read_bytes_size); + } switch (ret) { case 0: From 1a1d887dfe015a4f85a98846d7a5eddcc1fa4b15 Mon Sep 17 00:00:00 2001 From: Sharad Binjola <31142146+sharadb-amazon@users.noreply.github.com> Date: Tue, 23 Aug 2022 10:13:00 -0700 Subject: [PATCH 43/44] Fixing typo in mapping mediaPlayback_stopPlayback correctly in CastingServerBridge.mm (#22087) --- .../MatterTvCastingBridge/CastingServerBridge.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm index e854db7092e9eb..2eccbf8242a0a9 100644 --- a/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm +++ b/examples/tv-casting-app/darwin/MatterTvCastingBridge/MatterTvCastingBridge/CastingServerBridge.mm @@ -309,7 +309,7 @@ - (void)mediaPlayback_stopPlayback:(void (^_Nonnull)(bool))responseCallback _mediaPlayback_pauseResponseCallback = responseCallback; dispatch_async(_chipWorkQueue, ^{ - CHIP_ERROR err = CastingServer::GetInstance()->MediaPlayback_Pause([](CHIP_ERROR err) { + CHIP_ERROR err = CastingServer::GetInstance()->MediaPlayback_StopPlayback([](CHIP_ERROR err) { [CastingServerBridge getSharedInstance].mediaPlayback_stopPlaybackResponseCallback(CHIP_NO_ERROR == err); }); dispatch_async(clientQueue, ^{ From c3fcbc1781c4c9e1e1dc8cf986b20837285c0edb Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Tue, 23 Aug 2022 13:33:40 -0400 Subject: [PATCH 44/44] Make StartUpColorTemperatureMireds nullable, per spec. (#21858) Fixes https://github.com/project-chip/connectedhomeip/issues/21855 --- .../all-clusters-app.matter | 2 +- ...tnode_extendedcolorlight_8lcaaYJVAa.matter | 2 +- .../light-switch-app.matter | 2 +- .../lighting-common/lighting-app.matter | 2 +- .../placeholder/linux/apps/app1/config.matter | 2 +- .../placeholder/linux/apps/app2/config.matter | 2 +- .../color-control-server.cpp | 16 ++--- .../zcl/data-model/silabs/ha.xml | 2 +- .../data_model/controller-clusters.matter | 2 +- .../CHIPAttributeTLVValueDecoder.cpp | 15 +++-- .../zap-generated/CHIPClustersWrite-JNI.cpp | 12 +++- .../java/zap-generated/CHIPReadCallbacks.cpp | 67 +++++++++++++++++++ .../java/zap-generated/CHIPReadCallbacks.h | 30 +++++++++ .../chip/devicecontroller/ChipClusters.java | 20 ++++-- .../devicecontroller/ClusterReadMapping.java | 4 +- .../python/chip/clusters/Objects.py | 8 +-- .../MTRAttributeTLVValueDecoder.mm | 8 ++- .../CHIP/zap-generated/MTRBaseClusters.h | 4 +- .../CHIP/zap-generated/MTRBaseClusters.mm | 27 +++++--- .../zap-generated/endpoint_config.h | 3 +- .../zap-generated/attributes/Accessors.cpp | 32 +++++++-- .../zap-generated/attributes/Accessors.h | 4 +- .../zap-generated/cluster-objects.h | 8 +-- .../zap-generated/endpoint_config.h | 3 +- .../zap-generated/cluster/Commands.h | 5 +- .../cluster/logging/DataModelLogger.cpp | 2 +- .../chip-tool/zap-generated/test/Commands.h | 2 +- .../zap-generated/cluster/Commands.h | 2 +- .../zap-generated/test/Commands.h | 10 ++- .../zap-generated/endpoint_config.h | 3 +- .../app1/zap-generated/endpoint_config.h | 3 +- .../app2/zap-generated/endpoint_config.h | 3 +- 32 files changed, 238 insertions(+), 69 deletions(-) diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index 18d7c48c099ad3..96c706ad0ed1fe 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -2851,7 +2851,7 @@ server cluster ColorControl = 768 { readonly attribute int16u colorTempPhysicalMinMireds = 16395; readonly attribute int16u colorTempPhysicalMaxMireds = 16396; readonly attribute int16u coupleColorTempToLevelMinMireds = 16397; - attribute access(write: manage) int16u startUpColorTemperatureMireds = 16400; + attribute access(write: manage) nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter index e9d7612115a077..7fa6bae61d59dc 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter @@ -1614,7 +1614,7 @@ server cluster ColorControl = 768 { readonly attribute int16u colorTempPhysicalMinMireds = 16395; readonly attribute int16u colorTempPhysicalMaxMireds = 16396; readonly attribute int16u coupleColorTempToLevelMinMireds = 16397; - attribute access(write: manage) int16u startUpColorTemperatureMireds = 16400; + attribute access(write: manage) nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute attrib_id attributeList[] = 65531; diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter index 0a6d27521c8a74..27a458acdc6195 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.matter +++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter @@ -1565,7 +1565,7 @@ client cluster ColorControl = 768 { readonly attribute int16u colorTempPhysicalMinMireds = 16395; readonly attribute int16u colorTempPhysicalMaxMireds = 16396; readonly attribute int16u coupleColorTempToLevelMinMireds = 16397; - attribute access(write: manage) int16u startUpColorTemperatureMireds = 16400; + attribute access(write: manage) nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute int16u clusterRevision = 65533; request struct MoveToHueRequest { diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index d538c8232f7bb0..43839293478d6d 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -1511,7 +1511,7 @@ server cluster ColorControl = 768 { readonly attribute int16u colorTempPhysicalMinMireds = 16395; readonly attribute int16u colorTempPhysicalMaxMireds = 16396; readonly attribute int16u coupleColorTempToLevelMinMireds = 16397; - attribute access(write: manage) int16u startUpColorTemperatureMireds = 16400; + attribute access(write: manage) nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index 48822ed58e83bf..eb235f5eaa24fa 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -1916,7 +1916,7 @@ server cluster ColorControl = 768 { readonly attribute int16u currentY = 4; attribute bitmap8 options = 15; readonly attribute int16u coupleColorTempToLevelMinMireds = 16397; - attribute access(write: manage) int16u startUpColorTemperatureMireds = 16400; + attribute access(write: manage) nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index 48822ed58e83bf..eb235f5eaa24fa 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -1916,7 +1916,7 @@ server cluster ColorControl = 768 { readonly attribute int16u currentY = 4; attribute bitmap8 options = 15; readonly attribute int16u coupleColorTempToLevelMinMireds = 16397; - attribute access(write: manage) int16u startUpColorTemperatureMireds = 16400; + attribute access(write: manage) nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; diff --git a/src/app/clusters/color-control-server/color-control-server.cpp b/src/app/clusters/color-control-server/color-control-server.cpp index ec61efd6ac2867..e523921bdaf9b3 100644 --- a/src/app/clusters/color-control-server/color-control-server.cpp +++ b/src/app/clusters/color-control-server/color-control-server.cpp @@ -2071,13 +2071,13 @@ void ColorControlServer::startUpColorTempCommand(EndpointId endpoint) // the StartUpColorTemperatureMireds attribute are listed in the table below. // Value Action on power up // 0x0000-0xffef Set the ColorTemperatureMireds attribute to this value. - // 0xffff Set the ColorTemperatureMireds attribute to its previous value. + // null Set the ColorTemperatureMireds attribute to its previous value. - // Initialize startUpColorTempMireds to "maintain previous value" value 0xFFFF - uint16_t startUpColorTemp = 0xFFFF; - EmberAfStatus status = Attributes::StartUpColorTemperatureMireds::Get(endpoint, &startUpColorTemp); + // Initialize startUpColorTempMireds to "maintain previous value" value null + app::DataModel::Nullable startUpColorTemp; + EmberAfStatus status = Attributes::StartUpColorTemperatureMireds::Get(endpoint, startUpColorTemp); - if (status == EMBER_ZCL_STATUS_SUCCESS) + if (status == EMBER_ZCL_STATUS_SUCCESS && !startUpColorTemp.IsNull()) { uint16_t updatedColorTemp = MAX_TEMPERATURE_VALUE; status = Attributes::ColorTemperature::Get(endpoint, &updatedColorTemp); @@ -2090,13 +2090,13 @@ void ColorControlServer::startUpColorTempCommand(EndpointId endpoint) uint16_t tempPhysicalMax = MAX_TEMPERATURE_VALUE; Attributes::ColorTempPhysicalMaxMireds::Get(endpoint, &tempPhysicalMax); - if (tempPhysicalMin <= startUpColorTemp && startUpColorTemp <= tempPhysicalMax) + if (tempPhysicalMin <= startUpColorTemp.Value() && startUpColorTemp.Value() <= tempPhysicalMax) { // Apply valid startup color temp value that is within physical limits of device. // Otherwise, the startup value is outside the device's supported range, and the // existing setting of ColorTemp attribute will be left unchanged (i.e., treated as - // if startup color temp was set to 0xFFFF). - updatedColorTemp = startUpColorTemp; + // if startup color temp was set to null). + updatedColorTemp = startUpColorTemp.Value(); status = Attributes::ColorTemperature::Set(endpoint, updatedColorTemp); if (status == EMBER_ZCL_STATUS_SUCCESS) diff --git a/src/app/zap-templates/zcl/data-model/silabs/ha.xml b/src/app/zap-templates/zcl/data-model/silabs/ha.xml index f9ea448209d444..b40807c1b39211 100644 --- a/src/app/zap-templates/zcl/data-model/silabs/ha.xml +++ b/src/app/zap-templates/zcl/data-model/silabs/ha.xml @@ -243,7 +243,7 @@ limitations under the License. CoupleColorTempToLevelMinMireds - + StartUpColorTemperatureMireds diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index f8a88c7b66bb5f..2d71e362638858 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -3178,7 +3178,7 @@ client cluster ColorControl = 768 { readonly attribute int16u colorTempPhysicalMinMireds = 16395; readonly attribute int16u colorTempPhysicalMaxMireds = 16396; readonly attribute int16u coupleColorTempToLevelMinMireds = 16397; - attribute access(write: manage) int16u startUpColorTemperatureMireds = 16400; + attribute access(write: manage) nullable int16u startUpColorTemperatureMireds = 16400; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute attrib_id attributeList[] = 65531; diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp index fe0eb5ce4cd193..d20ce4a2f36cf0 100644 --- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp +++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp @@ -12925,10 +12925,17 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR return nullptr; } jobject value; - std::string valueClassName = "java/lang/Integer"; - std::string valueCtorSignature = "(I)V"; - chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), - cppValue, value); + if (cppValue.IsNull()) + { + value = nullptr; + } + else + { + std::string valueClassName = "java/lang/Integer"; + std::string valueCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), + cppValue.Value(), value); + } return value; } case Attributes::GeneratedCommandList::Id: { diff --git a/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp b/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp index 4612f4b7b96bae..e453c781ffd1f4 100644 --- a/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp +++ b/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp @@ -4488,8 +4488,16 @@ JNI_METHOD(void, ColorControlCluster, writeStartUpColorTemperatureMiredsAttribut std::vector> cleanupByteArrays; std::vector> cleanupStrings; - cppValue = - static_cast>(chip::JniReferences::GetInstance().IntegerToPrimitive(value)); + if (value == nullptr) + { + cppValue.SetNull(); + } + else + { + auto & nonNullValue_0 = cppValue.SetNonNull(); + nonNullValue_0 = static_cast>( + chip::JniReferences::GetInstance().IntegerToPrimitive(value)); + } std::unique_ptr onSuccess( Platform::New(callback), Platform::Delete); diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp index 2dab6e13780b9d..d6c410be3f605e 100644 --- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp +++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp @@ -18957,6 +18957,73 @@ void CHIPColorControlColorPointBIntensityAttributeCallback::CallbackFn(void * co env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue); } +CHIPColorControlStartUpColorTemperatureMiredsAttributeCallback::CHIPColorControlStartUpColorTemperatureMiredsAttributeCallback( + jobject javaCallback, bool keepAlive) : + chip::Callback::Callback(CallbackFn, this), + keepAlive(keepAlive) +{ + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + if (env == nullptr) + { + ChipLogError(Zcl, "Could not create global reference for Java callback"); + return; + } + + javaCallbackRef = env->NewGlobalRef(javaCallback); + if (javaCallbackRef == nullptr) + { + ChipLogError(Zcl, "Could not create global reference for Java callback"); + } +} + +CHIPColorControlStartUpColorTemperatureMiredsAttributeCallback::~CHIPColorControlStartUpColorTemperatureMiredsAttributeCallback() +{ + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + if (env == nullptr) + { + ChipLogError(Zcl, "Could not delete global reference for Java callback"); + return; + } + env->DeleteGlobalRef(javaCallbackRef); +} + +void CHIPColorControlStartUpColorTemperatureMiredsAttributeCallback::CallbackFn( + void * context, const chip::app::DataModel::Nullable & value) +{ + chip::DeviceLayer::StackUnlock unlock; + CHIP_ERROR err = CHIP_NO_ERROR; + JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); + jobject javaCallbackRef; + + VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env")); + std::unique_ptr cppCallback( + reinterpret_cast(context), maybeDestroy); + + // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback. + javaCallbackRef = cppCallback.get()->javaCallbackRef; + VerifyOrReturn(javaCallbackRef != nullptr, + ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null")); + + jmethodID javaMethod; + err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/Integer;)V", &javaMethod); + VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method")); + + jobject javaValue; + if (value.IsNull()) + { + javaValue = nullptr; + } + else + { + std::string javaValueClassName = "java/lang/Integer"; + std::string javaValueCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject(javaValueClassName.c_str(), javaValueCtorSignature.c_str(), + value.Value(), javaValue); + } + + env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue); +} + CHIPColorControlGeneratedCommandListAttributeCallback::CHIPColorControlGeneratedCommandListAttributeCallback(jobject javaCallback, bool keepAlive) : chip::Callback::Callback(CallbackFn, this), diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.h b/src/controller/java/zap-generated/CHIPReadCallbacks.h index f5dc7866c0e0c9..d1a4b63b04c84e 100644 --- a/src/controller/java/zap-generated/CHIPReadCallbacks.h +++ b/src/controller/java/zap-generated/CHIPReadCallbacks.h @@ -7912,6 +7912,36 @@ class CHIPColorControlColorPointBIntensityAttributeCallback bool keepAlive; }; +class CHIPColorControlStartUpColorTemperatureMiredsAttributeCallback + : public chip::Callback::Callback +{ +public: + CHIPColorControlStartUpColorTemperatureMiredsAttributeCallback(jobject javaCallback, bool keepAlive = false); + + ~CHIPColorControlStartUpColorTemperatureMiredsAttributeCallback(); + + static void maybeDestroy(CHIPColorControlStartUpColorTemperatureMiredsAttributeCallback * callback) + { + if (!callback->keepAlive) + { + callback->Cancel(); + chip::Platform::Delete(callback); + } + } + + static void CallbackFn(void * context, const chip::app::DataModel::Nullable & value); + static void OnSubscriptionEstablished(void * context) + { + CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished( + reinterpret_cast(context)->javaCallbackRef); + VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err))); + }; + +private: + jobject javaCallbackRef; + bool keepAlive; +}; + class CHIPColorControlGeneratedCommandListAttributeCallback : public chip::Callback::Callback { diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java index 73c28214ab6173..bd9914f596dbab 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java @@ -16188,6 +16188,14 @@ public interface ColorPointBIntensityAttributeCallback { default void onSubscriptionEstablished() {} } + public interface StartUpColorTemperatureMiredsAttributeCallback { + void onSuccess(@Nullable Integer value); + + void onError(Exception ex); + + default void onSubscriptionEstablished() {} + } + public interface GeneratedCommandListAttributeCallback { void onSuccess(List valueList); @@ -16784,7 +16792,8 @@ public void subscribeCoupleColorTempToLevelMinMiredsAttribute( chipClusterPtr, callback, minInterval, maxInterval); } - public void readStartUpColorTemperatureMiredsAttribute(IntegerAttributeCallback callback) { + public void readStartUpColorTemperatureMiredsAttribute( + StartUpColorTemperatureMiredsAttributeCallback callback) { readStartUpColorTemperatureMiredsAttribute(chipClusterPtr, callback); } @@ -16800,7 +16809,7 @@ public void writeStartUpColorTemperatureMiredsAttribute( } public void subscribeStartUpColorTemperatureMiredsAttribute( - IntegerAttributeCallback callback, int minInterval, int maxInterval) { + StartUpColorTemperatureMiredsAttributeCallback callback, int minInterval, int maxInterval) { subscribeStartUpColorTemperatureMiredsAttribute( chipClusterPtr, callback, minInterval, maxInterval); } @@ -17262,7 +17271,7 @@ private native void subscribeCoupleColorTempToLevelMinMiredsAttribute( long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval); private native void readStartUpColorTemperatureMiredsAttribute( - long chipClusterPtr, IntegerAttributeCallback callback); + long chipClusterPtr, StartUpColorTemperatureMiredsAttributeCallback callback); private native void writeStartUpColorTemperatureMiredsAttribute( long chipClusterPtr, @@ -17271,7 +17280,10 @@ private native void writeStartUpColorTemperatureMiredsAttribute( @Nullable Integer timedWriteTimeoutMs); private native void subscribeStartUpColorTemperatureMiredsAttribute( - long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval); + long chipClusterPtr, + StartUpColorTemperatureMiredsAttributeCallback callback, + int minInterval, + int maxInterval); private native void readGeneratedCommandListAttribute( long chipClusterPtr, GeneratedCommandListAttributeCallback callback); diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java index bb881021b50feb..a059be7651a3a9 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java @@ -8715,7 +8715,9 @@ public Map> getReadAttributeMap() { (cluster, callback, commandArguments) -> { ((ChipClusters.ColorControlCluster) cluster) .readStartUpColorTemperatureMiredsAttribute( - (ChipClusters.IntegerAttributeCallback) callback); + (ChipClusters.ColorControlCluster + .StartUpColorTemperatureMiredsAttributeCallback) + callback); }, () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(), readColorControlStartUpColorTemperatureMiredsCommandParams); diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index d8032d8f508063..94dbba01c44523 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -18134,7 +18134,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="colorTempPhysicalMinMireds", Tag=0x0000400B, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="colorTempPhysicalMaxMireds", Tag=0x0000400C, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="coupleColorTempToLevelMinMireds", Tag=0x0000400D, Type=typing.Optional[uint]), - ClusterObjectFieldDescriptor(Label="startUpColorTemperatureMireds", Tag=0x00004010, Type=typing.Optional[uint]), + ClusterObjectFieldDescriptor(Label="startUpColorTemperatureMireds", Tag=0x00004010, Type=typing.Union[None, Nullable, uint]), ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]), @@ -18193,7 +18193,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: colorTempPhysicalMinMireds: 'typing.Optional[uint]' = None colorTempPhysicalMaxMireds: 'typing.Optional[uint]' = None coupleColorTempToLevelMinMireds: 'typing.Optional[uint]' = None - startUpColorTemperatureMireds: 'typing.Optional[uint]' = None + startUpColorTemperatureMireds: 'typing.Union[None, Nullable, uint]' = None generatedCommandList: 'typing.List[uint]' = None acceptedCommandList: 'typing.List[uint]' = None attributeList: 'typing.List[uint]' = None @@ -19501,9 +19501,9 @@ def attribute_id(cls) -> int: @ChipUtility.classproperty def attribute_type(cls) -> ClusterObjectFieldDescriptor: - return ClusterObjectFieldDescriptor(Type=typing.Optional[uint]) + return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint]) - value: 'typing.Optional[uint]' = None + value: 'typing.Union[None, Nullable, uint]' = None @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm index 671a368001c51d..4e215d6702d9b5 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm @@ -11155,8 +11155,12 @@ id MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader & if (*aError != CHIP_NO_ERROR) { return nil; } - NSNumber * _Nonnull value; - value = [NSNumber numberWithUnsignedShort:cppValue]; + NSNumber * _Nullable value; + if (cppValue.IsNull()) { + value = nil; + } else { + value = [NSNumber numberWithUnsignedShort:cppValue.Value()]; + } return value; } case Attributes::GeneratedCommandList::Id: { diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h index 201b0844d66305..90980c2f1a0f2c 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h @@ -13792,9 +13792,9 @@ NS_ASSUME_NONNULL_BEGIN - (void)readAttributeStartUpColorTemperatureMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler; -- (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nonnull)value +- (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nullable)value completionHandler:(StatusCompletion)completionHandler; -- (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nonnull)value +- (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nullable)value params:(MTRWriteParams * _Nullable)params completionHandler:(StatusCompletion)completionHandler; /** diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm index 1d1c90e8e4359c..7bc25323f1a8d8 100644 --- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm +++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm @@ -57847,24 +57847,24 @@ new MTRInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * su - (void)readAttributeStartUpColorTemperatureMiredsWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler { - new MTRInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completionHandler, + new MTRNullableInt16uAttributeCallbackBridge(self.callbackQueue, self.device, completionHandler, ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); + auto successFn = Callback::FromCancelable(success); auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); return cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); }); } -- (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nonnull)value +- (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nullable)value completionHandler:(StatusCompletion)completionHandler { - [self writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nonnull) value + [self writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nullable) value params:nil completionHandler:completionHandler]; } -- (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nonnull)value +- (void)writeAttributeStartUpColorTemperatureMiredsWithValue:(NSNumber * _Nullable)value params:(MTRWriteParams * _Nullable)params completionHandler:(StatusCompletion)completionHandler { @@ -57888,7 +57888,12 @@ new MTRDefaultSuccessCallbackBridge( ListFreer listFreer; using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo; TypeInfo::Type cppValue; - cppValue = value.unsignedShortValue; + if (value == nil) { + cppValue.SetNull(); + } else { + auto & nonNullValue_0 = cppValue.SetNonNull(); + nonNullValue_0 = value.unsignedShortValue; + } auto successFn = Callback::FromCancelable(success); auto failureFn = Callback::FromCancelable(failure); @@ -57910,7 +57915,7 @@ - (void)subscribeAttributeStartUpColorTemperatureMiredsWithMinInterval:(NSNumber minInterval = [minInterval copy]; maxInterval = [maxInterval copy]; params = [params copy]; - new MTRInt16uAttributeCallbackSubscriptionBridge( + new MTRNullableInt16uAttributeCallbackSubscriptionBridge( self.callbackQueue, self.device, reportHandler, ^(ExchangeManager & exchangeManager, const SessionHandle & session, Cancelable * success, Cancelable * failure) { if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) { @@ -57918,13 +57923,13 @@ new MTRInt16uAttributeCallbackSubscriptionBridge( return CHIP_ERROR_INVALID_ARGUMENT; } using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo; - auto successFn = Callback::FromCancelable(success); + auto successFn = Callback::FromCancelable(success); auto failureFn = Callback::FromCancelable(failure); chip::Controller::ColorControlCluster cppCluster(exchangeManager, session, self->_endpoint); return cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, [minInterval unsignedShortValue], [maxInterval unsignedShortValue], - MTRInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, + MTRNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, nil, params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue], params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]); }, @@ -57937,7 +57942,7 @@ + (void)readAttributeStartUpColorTemperatureMiredsWithAttributeCache:(MTRAttribu completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler { - new MTRInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + new MTRNullableInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) { if (attributeCacheContainer.cppAttributeCache) { chip::app::ConcreteAttributePath path; using TypeInfo = ColorControl::Attributes::StartUpColorTemperatureMireds::TypeInfo; @@ -57946,7 +57951,7 @@ new MTRInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * su path.mAttributeId = TypeInfo::GetAttributeId(); TypeInfo::DecodableType value; CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); - auto successFn = Callback::FromCancelable(success); + auto successFn = Callback::FromCancelable(success); if (err == CHIP_NO_ERROR) { successFn->mCall(successFn->mContext, value); } diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h index 64446dd4aec170..6a2279cb2179ca 100644 --- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h @@ -1153,7 +1153,8 @@ { 0x0000400B, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* ColorTempPhysicalMinMireds */ \ { 0x0000400C, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xFEFF) }, /* ColorTempPhysicalMaxMireds */ \ { 0x0000400D, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* CoupleColorTempToLevelMinMireds */ \ - { 0x00004010, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + { 0x00004010, ZAP_TYPE(INT16U), 2, \ + ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_MIN_MAX_DEFAULTS_INDEX(37) }, /* StartUpColorTemperatureMireds */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0x1F) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) }, /* ClusterRevision */ \ diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp index d1b8ec87b5220a..60f4de6eae617f 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp @@ -19517,24 +19517,27 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value) namespace StartUpColorTemperatureMireds { -EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value) +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value) { using Traits = NumericAttributeTraits; Traits::StorageType temp; uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp); EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::ColorControl::Id, Id, readable, sizeof(temp)); VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status); - if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) + if (Traits::IsNullValue(temp)) { - return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + value.SetNull(); + } + else + { + value.SetNonNull() = Traits::StorageToWorking(temp); } - *value = Traits::StorageToWorking(temp); return status; } EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value) { using Traits = NumericAttributeTraits; - if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) + if (!Traits::CanRepresentValue(/* isNullable = */ true, value)) { return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; } @@ -19544,6 +19547,25 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value) return emberAfWriteServerAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); } +EmberAfStatus SetNull(chip::EndpointId endpoint) +{ + using Traits = NumericAttributeTraits; + Traits::StorageType value; + Traits::SetNull(value); + uint8_t * writable = Traits::ToAttributeStoreRepresentation(value); + return emberAfWriteServerAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); +} + +EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value) +{ + if (value.IsNull()) + { + return SetNull(endpoint); + } + + return Set(endpoint, value.Value()); +} + } // namespace StartUpColorTemperatureMireds namespace FeatureMap { diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h index d26576e7723a10..73deb29ea144ab 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h @@ -3270,8 +3270,10 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value); } // namespace CoupleColorTempToLevelMinMireds namespace StartUpColorTemperatureMireds { -EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value); // int16u +EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable & value); // int16u EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value); +EmberAfStatus SetNull(chip::EndpointId endpoint); +EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable & value); } // namespace StartUpColorTemperatureMireds namespace FeatureMap { diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h index 5500c0d3c8ce28..924bfe735eef96 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h @@ -19205,9 +19205,9 @@ struct TypeInfo namespace StartUpColorTemperatureMireds { struct TypeInfo { - using Type = uint16_t; - using DecodableType = uint16_t; - using DecodableArgType = uint16_t; + using Type = chip::app::DataModel::Nullable; + using DecodableType = chip::app::DataModel::Nullable; + using DecodableArgType = const chip::app::DataModel::Nullable &; static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; } static constexpr AttributeId GetAttributeId() { return Attributes::StartUpColorTemperatureMireds::Id; } @@ -19305,7 +19305,7 @@ struct TypeInfo Attributes::ColorTempPhysicalMaxMireds::TypeInfo::DecodableType colorTempPhysicalMaxMireds = static_cast(0); Attributes::CoupleColorTempToLevelMinMireds::TypeInfo::DecodableType coupleColorTempToLevelMinMireds = static_cast(0); - Attributes::StartUpColorTemperatureMireds::TypeInfo::DecodableType startUpColorTemperatureMireds = static_cast(0); + Attributes::StartUpColorTemperatureMireds::TypeInfo::DecodableType startUpColorTemperatureMireds; Attributes::GeneratedCommandList::TypeInfo::DecodableType generatedCommandList; Attributes::AcceptedCommandList::TypeInfo::DecodableType acceptedCommandList; Attributes::AttributeList::TypeInfo::DecodableType attributeList; diff --git a/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/endpoint_config.h index 58cae4639d8ccf..e7f99834ec16d9 100644 --- a/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/endpoint_config.h +++ b/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/endpoint_config.h @@ -505,7 +505,8 @@ { 0x0000400B, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* ColorTempPhysicalMinMireds */ \ { 0x0000400C, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xFEFF) }, /* ColorTempPhysicalMaxMireds */ \ { 0x0000400D, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* CoupleColorTempToLevelMinMireds */ \ - { 0x00004010, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + { 0x00004010, ZAP_TYPE(INT16U), 2, \ + ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_MIN_MAX_DEFAULTS_INDEX(3) }, /* StartUpColorTemperatureMireds */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0x1f) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) }, /* ClusterRevision */ \ diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index 897d45dff7d486..a812e26aec450c 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -11499,8 +11499,9 @@ void registerClusterColorControl(Commands & commands, CredentialIssuerCommands * credsIssuerConfig), // make_unique>>( Id, "color-point-bintensity", 0, UINT8_MAX, Attributes::ColorPointBIntensity::Id, credsIssuerConfig), // - make_unique>(Id, "start-up-color-temperature-mireds", 0, UINT16_MAX, - Attributes::StartUpColorTemperatureMireds::Id, credsIssuerConfig), // + make_unique>>( + Id, "start-up-color-temperature-mireds", 0, UINT16_MAX, Attributes::StartUpColorTemperatureMireds::Id, + credsIssuerConfig), // make_unique(Id, credsIssuerConfig), // make_unique(Id, "current-hue", Attributes::CurrentHue::Id, credsIssuerConfig), // make_unique(Id, "current-saturation", Attributes::CurrentSaturation::Id, credsIssuerConfig), // diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp index 3c74e880afe835..d0e87f6efe4086 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp @@ -7866,7 +7866,7 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP return DataModelLogger::LogValue("CoupleColorTempToLevelMinMireds", 1, value); } case ColorControl::Attributes::StartUpColorTemperatureMireds::Id: { - uint16_t value; + chip::app::DataModel::Nullable value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("StartUpColorTemperatureMireds", 1, value); } diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index 1179318cf4ecb9..5a0c3c87c27d82 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -3751,7 +3751,7 @@ class Test_TC_CC_2_1Suite : public TestCommand case 23: VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); { - uint16_t value; + chip::app::DataModel::Nullable value; VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value))); VerifyOrReturn(CheckConstraintType("value", "int16u", "int16u")); VerifyOrReturn(CheckConstraintMinValue("value", value, 0U)); diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h index 59a1a11c980eb2..ec3f6fbaf1e027 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h @@ -57788,7 +57788,7 @@ class WriteColorControlStartUpColorTemperatureMireds : public WriteAttribute { params.timedWriteTimeout = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil; params.dataVersion = mDataVersion.HasValue() ? [NSNumber numberWithUnsignedInt:mDataVersion.Value()] : nil; - NSNumber * _Nonnull value = [NSNumber numberWithUnsignedShort:mValue]; + NSNumber * _Nullable value = [NSNumber numberWithUnsignedShort:mValue]; [cluster writeAttributeStartUpColorTemperatureMiredsWithValue: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 3e6b294d6b85c1..2d5a690968a3c5 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -6267,9 +6267,13 @@ class Test_TC_CC_2_1 : public TestCommandBridge { VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - VerifyOrReturn(CheckConstraintType("startUpColorTemperatureMireds", "int16u", "int16u")); - VerifyOrReturn(CheckConstraintMinValue("startUpColorTemperatureMireds", [value unsignedShortValue], 0U)); - VerifyOrReturn(CheckConstraintMaxValue("startUpColorTemperatureMireds", [value unsignedShortValue], 65279U)); + if (value != nil) { + + VerifyOrReturn(CheckConstraintType("startUpColorTemperatureMireds", "int16u", "int16u")); + VerifyOrReturn(CheckConstraintMinValue("startUpColorTemperatureMireds", [value unsignedShortValue], 0U)); + VerifyOrReturn( + CheckConstraintMaxValue("startUpColorTemperatureMireds", [value unsignedShortValue], 65279U)); + } NextTest(); }]; diff --git a/zzz_generated/lighting-app/zap-generated/endpoint_config.h b/zzz_generated/lighting-app/zap-generated/endpoint_config.h index 1361aff82ab860..4db663755aea03 100644 --- a/zzz_generated/lighting-app/zap-generated/endpoint_config.h +++ b/zzz_generated/lighting-app/zap-generated/endpoint_config.h @@ -532,7 +532,8 @@ { 0x0000400B, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* ColorTempPhysicalMinMireds */ \ { 0x0000400C, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0xFEFF) }, /* ColorTempPhysicalMaxMireds */ \ { 0x0000400D, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* CoupleColorTempToLevelMinMireds */ \ - { 0x00004010, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + { 0x00004010, ZAP_TYPE(INT16U), 2, \ + ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_MIN_MAX_DEFAULTS_INDEX(3) }, /* StartUpColorTemperatureMireds */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0x1F) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) }, /* ClusterRevision */ \ diff --git a/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h b/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h index 765846c3745642..9f3438484cfb72 100644 --- a/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h +++ b/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h @@ -626,7 +626,8 @@ { 0x00000004, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x607D) }, /* CurrentY */ \ { 0x0000000F, ZAP_TYPE(BITMAP8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0x00) }, /* Options */ \ { 0x0000400D, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* CoupleColorTempToLevelMinMireds */ \ - { 0x00004010, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + { 0x00004010, ZAP_TYPE(INT16U), 2, \ + ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_MIN_MAX_DEFAULTS_INDEX(16) }, /* StartUpColorTemperatureMireds */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) }, /* ClusterRevision */ \ diff --git a/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h b/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h index 765846c3745642..9f3438484cfb72 100644 --- a/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h +++ b/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h @@ -626,7 +626,8 @@ { 0x00000004, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x607D) }, /* CurrentY */ \ { 0x0000000F, ZAP_TYPE(BITMAP8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0x00) }, /* Options */ \ { 0x0000400D, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* CoupleColorTempToLevelMinMireds */ \ - { 0x00004010, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ + { 0x00004010, ZAP_TYPE(INT16U), 2, \ + ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_MIN_MAX_DEFAULTS_INDEX(16) }, /* StartUpColorTemperatureMireds */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) }, /* ClusterRevision */ \