From 04740706a3d3268563a26825f874a68300c48313 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Mon, 14 Oct 2024 17:15:49 +0200 Subject: [PATCH 1/8] [YAML] Add _ById commands support for darwin-framework-tool - Followup: Add comment explaining the use of isinstance for list detection (#36063) --- .../matter_chip_tool_adapter/decoder.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py b/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py index 73b451c826f06e..733672dc790b63 100644 --- a/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py +++ b/examples/chip-tool/py_matter_chip_tool_adapter/matter_chip_tool_adapter/decoder.py @@ -386,6 +386,13 @@ def run(self, specs, value, cluster_name: str, typename: str, array: bool): del value[key_name] elif isinstance(value, list) and array: + # Instead of using `False` for the last parameter (array), `isinstance(v, list)` is used. + # While the data model specification does not include lists of lists, the format returned + # by the Matter.framework for *ById APIs may contain them. + # For example, the command: + # darwin-framework-tool any read-by-id 29 0 0x12344321 65535 + # returns value such as: + # [[{'DeviceType': 17, 'Revision': 1}, {'DeviceType': 22, 'Revision': 1}], ...] value = [self.run(specs, v, cluster_name, typename, isinstance(v, list)) for v in value] From 650e69bf37853048858cd77bca21006df7ef244f Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Mon, 14 Oct 2024 17:30:12 +0200 Subject: [PATCH 2/8] [CI] Add a step in CI to ensure darwin-framework-tool can be built on iOS. (#36062) * [darwin-framework-tool] Add a step in CI to ensure darwin-framework-tool can be built on iOS * [darwin-framework-tool] Build fixes --- .github/workflows/darwin-tests.yaml | 4 ++++ .../darwin-framework-tool/commands/memory/LeaksTool.mm | 5 +++++ examples/darwin-framework-tool/debug/LeakChecker.mm | 4 ++++ src/darwin/Framework/Matter.xcodeproj/project.pbxproj | 10 ++++++++++ third_party/libwebsockets/BUILD.gn | 4 ++++ 5 files changed, 27 insertions(+) diff --git a/.github/workflows/darwin-tests.yaml b/.github/workflows/darwin-tests.yaml index 1ddc9e9fbc42a6..2d46de23cfa523 100644 --- a/.github/workflows/darwin-tests.yaml +++ b/.github/workflows/darwin-tests.yaml @@ -73,6 +73,10 @@ jobs: platform: darwin bootstrap-log-name: bootstrap-logs-darwin-${{ matrix.build_variant }} + - name: Build iOS Darwin Framework Tool Build Debug + working-directory: src/darwin/Framework + run: xcodebuild -target "darwin-framework-tool" -sdk iphoneos -configuration Debug AD_HOC_CODE_SIGNING_ALLOWED=YES + - name: Run macOS Darwin Framework Tool Build Debug working-directory: src/darwin/Framework run: xcodebuild -target "darwin-framework-tool" -sdk macosx -configuration Debug diff --git a/examples/darwin-framework-tool/commands/memory/LeaksTool.mm b/examples/darwin-framework-tool/commands/memory/LeaksTool.mm index 912134e163f956..394a9083f5b439 100644 --- a/examples/darwin-framework-tool/commands/memory/LeaksTool.mm +++ b/examples/darwin-framework-tool/commands/memory/LeaksTool.mm @@ -31,6 +31,7 @@ @implementation LeaksTool - (BOOL)runWithArguments:(NSArray * _Nullable)arguments { +#if TARGET_OS_OSX pid_t pid = getpid(); __auto_type * pidString = [NSString stringWithFormat:@"%d", pid]; @@ -59,6 +60,10 @@ - (BOOL)runWithArguments:(NSArray * _Nullable)arguments NSLog(@"%@", output); return YES; +#else + NSLog(@"Running leaks as a task is supported on this platform."); + return NO; +#endif // TARGET_OS_OSX } @end diff --git a/examples/darwin-framework-tool/debug/LeakChecker.mm b/examples/darwin-framework-tool/debug/LeakChecker.mm index 25f4f1eadcfd3e..e8d69739c57d4e 100644 --- a/examples/darwin-framework-tool/debug/LeakChecker.mm +++ b/examples/darwin-framework-tool/debug/LeakChecker.mm @@ -29,6 +29,7 @@ @implementation LeakChecker - (BOOL)hasMemoryLeaks { +#if TARGET_OS_OSX pid_t pid = getpid(); auto * pidString = [NSString stringWithFormat:@"%d", pid]; @@ -51,6 +52,9 @@ - (BOOL)hasMemoryLeaks NSLog(@"%@", output); return YES; } +#else + NSLog(@"Running leaks as a task is supported on this platform."); +#endif // TARGET_OS_OSX return NO; } diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj index 488bd32967453e..173fb7b004e17f 100644 --- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj +++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj @@ -2242,7 +2242,12 @@ "$(CONFIGURATION_TEMP_DIR)/Matter.build/out/obj/src/app/lib", ); OTHER_CFLAGS = "-DLWS_PLAT_UNIX"; + "OTHER_CFLAGS[sdk=iphoneos*]" = ( + "-DLWS_PLAT_UNIX", + "-DLWS_DETECTED_PLAT_IOS", + ); OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; + "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = "$(OTHER_CFLAGS)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; @@ -2315,7 +2320,12 @@ "$(CONFIGURATION_TEMP_DIR)/Matter.build/out/obj/src/app/lib", ); OTHER_CFLAGS = "-DLWS_PLAT_UNIX"; + "OTHER_CFLAGS[sdk=iphoneos*]" = ( + "-DLWS_PLAT_UNIX", + "-DLWS_DETECTED_PLAT_IOS", + ); OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; + "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = "$(OTHER_CFLAGS)"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = macosx; diff --git a/third_party/libwebsockets/BUILD.gn b/third_party/libwebsockets/BUILD.gn index 9b96fb734c402d..bfd57095497513 100644 --- a/third_party/libwebsockets/BUILD.gn +++ b/third_party/libwebsockets/BUILD.gn @@ -106,6 +106,10 @@ source_set("libwebsockets") { ] cflags = [ "-DLWS_PLAT_UNIX" ] + + if (target_os == "ios") { + cflags += [ "-DLWS_DETECTED_PLAT_IOS" ] + } } public_configs = [ ":libwebsockets_config" ] From b04ec4f76ed9a18aa1cd29dc75b46aeea17eb058 Mon Sep 17 00:00:00 2001 From: Justin Wood Date: Mon, 14 Oct 2024 08:30:28 -0700 Subject: [PATCH 3/8] Internal state is updated too often, removing this noise (#36056) --- src/darwin/Framework/CHIP/MTRDevice_Concrete.mm | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm index 539754d236e036..68b610cb25c7d7 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm @@ -772,8 +772,6 @@ - (void)_ensureSubscriptionForExistingDelegates:(NSString *)reason } errorHandler:nil]; } } - - [self _notifyDelegateOfPrivateInternalPropertiesChanges]; } - (void)invalidate @@ -1247,7 +1245,6 @@ - (void)_handleResubscriptionNeededWithDelayOnDeviceQueue:(NSNumber *)resubscrip std::lock_guard lock(_descriptionLock); _lastSubscriptionFailureTimeForDescription = _lastSubscriptionFailureTime; } - [self _notifyDelegateOfPrivateInternalPropertiesChanges]; BOOL deviceUsesThread = [self _deviceUsesThread]; // If a previous resubscription failed, remove the item from the subscription pool. @@ -1325,7 +1322,6 @@ - (void)_doHandleSubscriptionReset:(NSNumber * _Nullable)retryDelay std::lock_guard lock(_descriptionLock); _lastSubscriptionFailureTimeForDescription = _lastSubscriptionFailureTime; } - [self _notifyDelegateOfPrivateInternalPropertiesChanges]; // if there is no delegate then also do not retry if (![self _delegateExists]) { @@ -1700,8 +1696,6 @@ - (void)_scheduleClusterDataPersistence } } - [self _notifyDelegateOfPrivateInternalPropertiesChanges]; - // Do not schedule persistence if device is reporting excessively if ([self _deviceIsReportingExcessively]) { return; @@ -1767,6 +1761,7 @@ - (void)_handleReportEnd [delegate deviceConfigurationChanged:self]; } }]; + [self _notifyDelegateOfPrivateInternalPropertiesChanges]; _deviceConfigurationChanged = NO; } @@ -1781,6 +1776,7 @@ - (void)_handleReportEnd // all the data for the device now. _deviceCachePrimed = YES; [self _callDelegateDeviceCachePrimed]; + [self _notifyDelegateOfPrivateInternalPropertiesChanges]; } // For unit testing only @@ -1791,8 +1787,6 @@ - (void)_handleReportEnd } }]; #endif - - [self _notifyDelegateOfPrivateInternalPropertiesChanges]; } - (BOOL)_interestedPaths:(NSArray * _Nullable)interestedPaths includesAttributePath:(MTRAttributePath *)attributePath From d9a995ffcf2062b5993e8c4ad86611f067f70491 Mon Sep 17 00:00:00 2001 From: Arkadiusz Bokowy Date: Mon, 14 Oct 2024 18:02:52 +0200 Subject: [PATCH 4/8] MCORE-FS-1.4: Wait for dynamic endpoint to appear on TH_FSA (#36013) * MCORE-FS-1.4: Wait for dynamic endpoint to appear on TH_FSA Fixes #35348 * Timeout for getting dynamic endpoint --- src/python_testing/TC_MCORE_FS_1_4.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/python_testing/TC_MCORE_FS_1_4.py b/src/python_testing/TC_MCORE_FS_1_4.py index 795e81cf2f274d..c8f3e764d5ce72 100644 --- a/src/python_testing/TC_MCORE_FS_1_4.py +++ b/src/python_testing/TC_MCORE_FS_1_4.py @@ -94,9 +94,7 @@ def start(self): super().start(expected_output="Successfully opened pairing window on the device") def commission_on_network(self, node_id: int, setup_pin_code: int, filter_type=None, filter=None): - self.send( - f"pairing onnetwork {node_id} {setup_pin_code}", - expected_output=f"Commissioning complete for node ID {node_id:#018x}: success") + self.send(f"pairing onnetwork {node_id} {setup_pin_code}") class TC_MCORE_FS_1_4(MatterBaseTest): @@ -266,16 +264,19 @@ async def test_TC_MCORE_FS_1_4(self): filter=discriminator, ) - # Wait some time, so the dynamic endpoint will appear on the TH_FSA_BRIDGE. - await asyncio.sleep(5) - - # Get the list of endpoints on the TH_FSA_BRIDGE after adding the TH_SERVER_NO_UID. - th_fsa_bridge_endpoints_new = set(await self.read_single_attribute_check_success( - cluster=Clusters.Descriptor, - attribute=Clusters.Descriptor.Attributes.PartsList, - node_id=th_fsa_bridge_th_node_id, - endpoint=0, - )) + get_dynamic_endpoint_retries = 60 + th_fsa_bridge_endpoints_new = set(th_fsa_bridge_endpoints) + # Try to get the dynamic endpoint number for the TH_SERVER_NO_UID on the TH_FSA_BRIDGE. + while th_fsa_bridge_endpoints_new == th_fsa_bridge_endpoints and get_dynamic_endpoint_retries > 0: + await asyncio.sleep(0.5) + get_dynamic_endpoint_retries -= 1 + # Get the list of endpoints on the TH_FSA_BRIDGE. + th_fsa_bridge_endpoints_new.update(await self.read_single_attribute_check_success( + cluster=Clusters.Descriptor, + attribute=Clusters.Descriptor.Attributes.PartsList, + node_id=th_fsa_bridge_th_node_id, + endpoint=0, + )) # Get the endpoint number for just added TH_SERVER_NO_UID. logging.info("Endpoints on TH_FSA_BRIDGE: old=%s, new=%s", th_fsa_bridge_endpoints, th_fsa_bridge_endpoints_new) From ac9537dce72539a8f217f2f7b67c0a319caf0144 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Mon, 14 Oct 2024 18:57:28 +0200 Subject: [PATCH 5/8] [Matter.framework] Follow-up to address remaining issues from #36015 (#36064) * [Matter.framework] Follow-up to address remaining issues from #36015 * Update src/darwin/Framework/CHIP/MTRBaseDevice.mm Co-authored-by: Boris Zbarsky --------- Co-authored-by: Boris Zbarsky --- src/darwin/Framework/CHIP/MTRBaseDevice.mm | 2 +- src/darwin/Framework/CHIP/MTRConversion.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/darwin/Framework/CHIP/MTRBaseDevice.mm b/src/darwin/Framework/CHIP/MTRBaseDevice.mm index f21fc5bb8dd8b7..a298b296849d51 100644 --- a/src/darwin/Framework/CHIP/MTRBaseDevice.mm +++ b/src/darwin/Framework/CHIP/MTRBaseDevice.mm @@ -1894,7 +1894,7 @@ NSTimeInterval MTRTimeIntervalForEventTimestampValue(uint64_t timeValue) uint64_t eventTimestampValueSeconds = timeValue / chip::kMillisecondsPerSecond; uint64_t eventTimestampValueRemainderMilliseconds = timeValue % chip::kMillisecondsPerSecond; NSTimeInterval eventTimestampValueRemainder - = NSTimeInterval(eventTimestampValueRemainderMilliseconds / static_cast(chip::kMillisecondsPerSecond)); + = NSTimeInterval(eventTimestampValueRemainderMilliseconds) / static_cast(chip::kMillisecondsPerSecond); NSTimeInterval eventTimestampValue = eventTimestampValueSeconds + eventTimestampValueRemainder; return eventTimestampValue; diff --git a/src/darwin/Framework/CHIP/MTRConversion.h b/src/darwin/Framework/CHIP/MTRConversion.h index 6f722d04d5a1bb..e576b4f53e1db0 100644 --- a/src/darwin/Framework/CHIP/MTRConversion.h +++ b/src/darwin/Framework/CHIP/MTRConversion.h @@ -38,7 +38,7 @@ AsNumber(chip::Optional optional) inline NSDate * MatterEpochSecondsAsDate(uint32_t matterEpochSeconds) { - const uint64_t interval = static_cast(chip::kChipEpochSecondsSinceUnixEpoch) + matterEpochSeconds; + const auto interval = static_cast(chip::kChipEpochSecondsSinceUnixEpoch) + static_cast(matterEpochSeconds); return [NSDate dateWithTimeIntervalSince1970:(NSTimeInterval) interval]; } From 03d6fbb529d82282860f2b2ad48213d5746ac5ea Mon Sep 17 00:00:00 2001 From: Pradip De Date: Mon, 14 Oct 2024 16:03:17 -0700 Subject: [PATCH 6/8] Fix xml field generation errors for CamerAVStreamManagement cluster. (#36069) There were some errors in the xml generation for some of the later spec changes in PR#35841. Note: The auto-generated code merged in is correct and reflect the latest spec changes to the cluster. --- .../camera-av-stream-management-cluster.xml | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/src/app/zap-templates/zcl/data-model/chip/camera-av-stream-management-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/camera-av-stream-management-cluster.xml index c64342b551ad79..463aa6af03f865 100644 --- a/src/app/zap-templates/zcl/data-model/chip/camera-av-stream-management-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/camera-av-stream-management-cluster.xml @@ -192,122 +192,122 @@ Git: 0.9-fall2024-387-gfd3062545 SpeakerCapabilities TwoWayTalkSupport SupportedSnapshotParams - MaxNetworkBandwidth - CurrentFrameRate - + MaxNetworkBandwidth + CurrentFrameRate + HDRModeEnabled - CurrentVideoCodecs - CurrentSnapshotConfig - FabricsUsingCamera - AllocatedVideoStreams - AllocatedAudioStreams - AllocatedSnapshotStreams - + CurrentVideoCodecs + CurrentSnapshotConfig + FabricsUsingCamera + AllocatedVideoStreams + AllocatedAudioStreams + AllocatedSnapshotStreams + RankedVideoStreamPrioritiesList - SoftRecordingPrivacyModeEnabled - SoftLivestreamPrivacyModeEnabled - HardPrivacyModeOn - + SoftRecordingPrivacyModeEnabled + SoftLivestreamPrivacyModeEnabled + HardPrivacyModeOn + NightVision - + NightVisionIllum - + AWBEnabled - + AutoShutterSpeedEnabled - + AutoISOEnabled - Viewport - + Viewport + SpeakerMuted - + SpeakerVolumeLevel - + SpeakerMaxLevel - + SpeakerMinLevel - + MicrophoneMuted - + MicrophoneVolumeLevel - + MicrophoneMaxLevel - + MicrophoneMinLevel - + MicrophoneAGCEnabled - ImageRotation - ImageFlipHorizontal - ImageFlipVertical - + ImageRotation + ImageFlipHorizontal + ImageFlipVertical + LocalVideoRecordingEnabled - + LocalSnapshotRecordingEnabled - + StatusLightEnabled - + StatusLightBrightness - + DepthSensorStatus From 0c59ebf6b37cd16f196db42e43f5f6269727db6c Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Tue, 15 Oct 2024 02:01:39 +0200 Subject: [PATCH 7/8] [darwin-framework-tool] Add an option to use per-controller storage instead of a global shared storage (#36044) --- examples/darwin-framework-tool/BUILD.gn | 6 + .../commands/common/CHIPCommandBridge.h | 9 + .../commands/common/CHIPCommandBridge.mm | 173 +++++++++++++----- .../common/CHIPCommandStorageDelegate.h | 20 ++ .../common/CHIPCommandStorageDelegate.mm | 91 ++++----- .../commands/common/CHIPToolKeypair.h | 21 ++- .../commands/common/CHIPToolKeypair.mm | 54 +++++- .../commands/common/CertificateIssuer.h | 51 ++++++ .../commands/common/CertificateIssuer.mm | 158 ++++++++++++++++ .../commands/common/ControllerStorage.h | 49 +++++ .../commands/common/ControllerStorage.mm | 160 ++++++++++++++++ .../commands/common/PreferencesStorage.h | 32 ++++ .../commands/common/PreferencesStorage.mm | 110 +++++++++++ .../commands/pairing/PairingCommandBridge.mm | 7 + .../commands/storage/Commands.h | 5 +- .../storage/StorageManagementCommand.h | 8 + .../storage/StorageManagementCommand.mm | 33 +++- .../Matter.xcodeproj/project.pbxproj | 24 +++ 18 files changed, 896 insertions(+), 115 deletions(-) create mode 100644 examples/darwin-framework-tool/commands/common/CertificateIssuer.h create mode 100644 examples/darwin-framework-tool/commands/common/CertificateIssuer.mm create mode 100644 examples/darwin-framework-tool/commands/common/ControllerStorage.h create mode 100644 examples/darwin-framework-tool/commands/common/ControllerStorage.mm create mode 100644 examples/darwin-framework-tool/commands/common/PreferencesStorage.h create mode 100644 examples/darwin-framework-tool/commands/common/PreferencesStorage.mm diff --git a/examples/darwin-framework-tool/BUILD.gn b/examples/darwin-framework-tool/BUILD.gn index 5e7b7d641030b8..0d1e142f1074df 100644 --- a/examples/darwin-framework-tool/BUILD.gn +++ b/examples/darwin-framework-tool/BUILD.gn @@ -190,10 +190,16 @@ executable("darwin-framework-tool") { "commands/common/CHIPCommandBridge.mm", "commands/common/CHIPCommandStorageDelegate.mm", "commands/common/CHIPToolKeypair.mm", + "commands/common/CertificateIssuer.h", + "commands/common/CertificateIssuer.mm", + "commands/common/ControllerStorage.h", + "commands/common/ControllerStorage.mm", "commands/common/MTRDevice_Externs.h", "commands/common/MTRError.mm", "commands/common/MTRError_Utils.h", "commands/common/MTRLogging.h", + "commands/common/PreferencesStorage.h", + "commands/common/PreferencesStorage.mm", "commands/common/RemoteDataModelLogger.h", "commands/common/RemoteDataModelLogger.mm", "commands/configuration/Commands.h", diff --git a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h index 9458d304dbebb2..f58251bff48dd0 100644 --- a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h +++ b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h @@ -41,6 +41,8 @@ class CHIPCommandBridge : public Command { "Sets the commissioner node ID of the given " "commissioner-name. Interactive mode will only set a single commissioner on the inital command. " "The commissioner node ID will be persisted until a different one is specified."); + AddArgument("commissioner-shared-storage", 0, 1, &mCommissionerSharedStorage, + "Use a shared storage instance instead of individual storage for each commissioner. Default is true."); AddArgument("paa-trust-store-path", &mPaaTrustStorePath, "Path to directory holding PAA certificate information. Can be absolute or relative to the current working " "directory."); @@ -87,6 +89,7 @@ class CHIPCommandBridge : public Command { // This method returns the commissioner instance to be used for running the command. MTRDeviceController * CurrentCommissioner(); + NSNumber * CurrentCommissionerFabricId(); MTRDeviceController * GetCommissioner(const char * identity); @@ -130,6 +133,8 @@ class CHIPCommandBridge : public Command { void StopWaiting(); CHIP_ERROR MaybeSetUpStack(); + CHIP_ERROR SetUpStackWithSharedStorage(NSArray * productAttestationAuthorityCertificates); + CHIP_ERROR SetUpStackWithPerControllerStorage(NSArray * productAttestationAuthorityCertificates); void MaybeTearDownStack(); CHIP_ERROR GetPAACertsFromFolder(NSArray * __autoreleasing * paaCertsResult); @@ -140,6 +145,9 @@ class CHIPCommandBridge : public Command { // The current controller; the one the current command should be using. MTRDeviceController * mCurrentController; + static bool sUseSharedStorage; + chip::Optional mCommissionerSharedStorage; + std::condition_variable cvWaitingForResponse; std::mutex cvWaitingForResponseMutex; chip::Optional mCommissionerName; @@ -148,4 +156,5 @@ class CHIPCommandBridge : public Command { static dispatch_queue_t mOTAProviderCallbackQueue; chip::Optional mPaaTrustStorePath; chip::Optional mCommissionerVendorId; + std::string mCurrentIdentity; }; diff --git a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm index d52c29a5b04c8a..724a9a20c3a571 100644 --- a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm +++ b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm @@ -23,7 +23,11 @@ #include #include +#include // for chip::kTestControllerNodeId +#import "CHIPCommandStorageDelegate.h" +#import "CertificateIssuer.h" +#import "ControllerStorage.h" #include "MTRError_Utils.h" #include @@ -34,10 +38,9 @@ std::map CHIPCommandBridge::mControllers; dispatch_queue_t CHIPCommandBridge::mOTAProviderCallbackQueue; OTAProviderDelegate * CHIPCommandBridge::mOTADelegate; +bool CHIPCommandBridge::sUseSharedStorage = true; constexpr char kTrustStorePathVariable[] = "PAA_TRUST_STORE_PATH"; -CHIPToolKeypair * gNocSigner = [[CHIPToolKeypair alloc] init]; - CHIP_ERROR CHIPCommandBridge::Run() { // In interactive mode, we want to avoid memory accumulating in the main autorelease pool, @@ -120,61 +123,113 @@ CHIP_ERROR CHIPCommandBridge::MaybeSetUpStack() { - if (IsInteractive()) { - return CHIP_NO_ERROR; - } - NSData * ipk; - gNocSigner = [[CHIPToolKeypair alloc] init]; - storage = [[CHIPToolPersistentStorageDelegate alloc] init]; + VerifyOrReturnError(!IsInteractive(), CHIP_NO_ERROR); mOTADelegate = [[OTAProviderDelegate alloc] init]; + storage = [[CHIPToolPersistentStorageDelegate alloc] init]; - auto factory = [MTRDeviceControllerFactory sharedInstance]; - if (factory == nil) { - ChipLogError(chipTool, "Controller factory is nil"); - return CHIP_ERROR_INTERNAL; + NSError * error; + __auto_type * certificateIssuer = [CertificateIssuer sharedInstance]; + [certificateIssuer startWithStorage:storage error:&error]; + VerifyOrReturnError(nil == error, MTRErrorToCHIPErrorCode(error), ChipLogError(chipTool, "Can not start the certificate issuer: %@", error)); + + NSArray * productAttestationAuthorityCertificates = nil; + ReturnLogErrorOnFailure(GetPAACertsFromFolder(&productAttestationAuthorityCertificates)); + if ([productAttestationAuthorityCertificates count] == 0) { + productAttestationAuthorityCertificates = nil; } - auto params = [[MTRDeviceControllerFactoryParams alloc] initWithStorage:storage]; - params.shouldStartServer = YES; - params.otaProviderDelegate = mOTADelegate; - NSArray * paaCertResults; - ReturnLogErrorOnFailure(GetPAACertsFromFolder(&paaCertResults)); - if ([paaCertResults count] > 0) { - params.productAttestationAuthorityCertificates = paaCertResults; + sUseSharedStorage = mCommissionerSharedStorage.ValueOr(true); + if (sUseSharedStorage) { + return SetUpStackWithSharedStorage(productAttestationAuthorityCertificates); } - NSError * error; - if ([factory startControllerFactory:params error:&error] == NO) { - ChipLogError(chipTool, "Controller factory startup failed"); - return MTRErrorToCHIPErrorCode(error); + return SetUpStackWithPerControllerStorage(productAttestationAuthorityCertificates); +} + +CHIP_ERROR CHIPCommandBridge::SetUpStackWithPerControllerStorage(NSArray * productAttestationAuthorityCertificates) +{ + __auto_type * certificateIssuer = [CertificateIssuer sharedInstance]; + + constexpr const char * identities[] = { kIdentityAlpha, kIdentityBeta, kIdentityGamma }; + std::string commissionerName = mCommissionerName.HasValue() ? mCommissionerName.Value() : kIdentityAlpha; + for (size_t i = 0; i < ArraySize(identities); ++i) { + __auto_type * uuidString = [NSString stringWithFormat:@"%@%@", @"8DCADB14-AF1F-45D0-B084-00000000000", @(i)]; + __auto_type * controllerId = [[NSUUID alloc] initWithUUIDString:uuidString]; + __auto_type * vendorId = @(mCommissionerVendorId.ValueOr(chip::VendorId::TestVendor1)); + __auto_type * fabricId = @(i + 1); + __auto_type * nodeId = @(chip::kTestControllerNodeId); + + if (commissionerName.compare(identities[i]) == 0 && mCommissionerNodeId.HasValue()) { + nodeId = @(mCommissionerNodeId.Value()); + } + + __auto_type * controllerStorage = [[ControllerStorage alloc] initWithControllerID:controllerId]; + + NSError * error; + __auto_type * operationalKeypair = [certificateIssuer issueOperationalKeypairWithControllerStorage:controllerStorage error:&error]; + __auto_type * operational = [certificateIssuer issueOperationalCertificateForNodeID:nodeId + fabricID:fabricId + publicKey:operationalKeypair.publicKey + error:&error]; + VerifyOrReturnError(nil == error, MTRErrorToCHIPErrorCode(error), ChipLogError(chipTool, "Can not issue an operational certificate: %@", error)); + + __auto_type * controllerStorageQueue = dispatch_queue_create("com.chip.storage", DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL); + __auto_type * params = [[MTRDeviceControllerExternalCertificateParameters alloc] initWithStorageDelegate:controllerStorage + storageDelegateQueue:controllerStorageQueue + uniqueIdentifier:controllerId + ipk:certificateIssuer.ipk + vendorID:vendorId + operationalKeypair:operationalKeypair + operationalCertificate:operational + intermediateCertificate:nil + rootCertificate:certificateIssuer.rootCertificate]; + [params setOperationalCertificateIssuer:certificateIssuer queue:controllerStorageQueue]; + params.productAttestationAuthorityCertificates = productAttestationAuthorityCertificates; + + __auto_type * controller = [[MTRDeviceController alloc] initWithParameters:params error:&error]; + VerifyOrReturnError(nil != controller, MTRErrorToCHIPErrorCode(error), ChipLogError(chipTool, "Controller startup failure: %@", error)); + mControllers[identities[i]] = controller; } - ReturnLogErrorOnFailure([gNocSigner createOrLoadKeys:storage]); + return CHIP_NO_ERROR; +} + +CHIP_ERROR CHIPCommandBridge::SetUpStackWithSharedStorage(NSArray * productAttestationAuthorityCertificates) +{ + __auto_type * factory = [MTRDeviceControllerFactory sharedInstance]; + VerifyOrReturnError(nil != factory, CHIP_ERROR_INTERNAL, ChipLogError(chipTool, "Controller factory is nil")); + + auto factoryParams = [[MTRDeviceControllerFactoryParams alloc] initWithStorage:storage]; + factoryParams.shouldStartServer = YES; + factoryParams.otaProviderDelegate = mOTADelegate; + factoryParams.productAttestationAuthorityCertificates = productAttestationAuthorityCertificates; - ipk = [gNocSigner getIPK]; + NSError * error; + auto started = [factory startControllerFactory:factoryParams error:&error]; + VerifyOrReturnError(started, MTRErrorToCHIPErrorCode(error), ChipLogError(chipTool, "Controller factory startup failed")); + + __auto_type * certificateIssuer = [CertificateIssuer sharedInstance]; constexpr const char * identities[] = { kIdentityAlpha, kIdentityBeta, kIdentityGamma }; std::string commissionerName = mCommissionerName.HasValue() ? mCommissionerName.Value() : kIdentityAlpha; for (size_t i = 0; i < ArraySize(identities); ++i) { - auto controllerParams = [[MTRDeviceControllerStartupParams alloc] initWithIPK:ipk fabricID:@(i + 1) nocSigner:gNocSigner]; - + __auto_type * fabricId = @(i + 1); + __auto_type * params = [[MTRDeviceControllerStartupParams alloc] initWithIPK:certificateIssuer.ipk + fabricID:fabricId + nocSigner:certificateIssuer.signingKey]; if (commissionerName.compare(identities[i]) == 0 && mCommissionerNodeId.HasValue()) { - controllerParams.nodeId = @(mCommissionerNodeId.Value()); + params.nodeId = @(mCommissionerNodeId.Value()); } - // We're not sure whether we're creating a new fabric or using an - // existing one, so just try both. - auto controller = [factory createControllerOnExistingFabric:controllerParams error:&error]; + + // We're not sure whether we're creating a new fabric or using an existing one, so just try both. + auto controller = [factory createControllerOnExistingFabric:params error:&error]; if (controller == nil) { // Maybe we didn't have this fabric yet. - controllerParams.vendorID = @(mCommissionerVendorId.ValueOr(chip::VendorId::TestVendor1)); - controller = [factory createControllerOnNewFabric:controllerParams error:&error]; + params.vendorID = @(mCommissionerVendorId.ValueOr(chip::VendorId::TestVendor1)); + controller = [factory createControllerOnNewFabric:params error:&error]; } - if (controller == nil) { - ChipLogError(chipTool, "Controller startup failure."); - return MTRErrorToCHIPErrorCode(error); - } - + VerifyOrReturnError(nil != controller, MTRErrorToCHIPErrorCode(error), ChipLogError(chipTool, "Controller startup failure: %@", error)); mControllers[identities[i]] = controller; } @@ -197,11 +252,29 @@ kIdentityBeta, kIdentityGamma); chipDie(); } + mCurrentIdentity = name; mCurrentController = mControllers[name]; } MTRDeviceController * CHIPCommandBridge::CurrentCommissioner() { return mCurrentController; } +NSNumber * CHIPCommandBridge::CurrentCommissionerFabricId() +{ + if (mCurrentIdentity.compare(kIdentityAlpha) == 0) { + return @(1); + } else if (mCurrentIdentity.compare(kIdentityBeta) == 0) { + return @(2); + } else if (mCurrentIdentity.compare(kIdentityGamma) == 0) { + return @(3); + } else { + ChipLogError(chipTool, "Unknown commissioner name: %s. Supported names are [%s, %s, %s]", mCurrentIdentity.c_str(), kIdentityAlpha, + kIdentityBeta, kIdentityGamma); + chipDie(); + } + + return @(0); // This should never happens. +} + MTRDeviceController * CHIPCommandBridge::GetCommissioner(const char * identity) { return mControllers[identity]; } MTRBaseDevice * CHIPCommandBridge::BaseDeviceWithNodeId(chip::NodeId nodeId) @@ -223,15 +296,25 @@ { StopCommissioners(); - auto factory = [MTRDeviceControllerFactory sharedInstance]; - NSData * ipk = [gNocSigner getIPK]; + if (sUseSharedStorage) { + auto factory = [MTRDeviceControllerFactory sharedInstance]; - constexpr const char * identities[] = { kIdentityAlpha, kIdentityBeta, kIdentityGamma }; - for (size_t i = 0; i < ArraySize(identities); ++i) { - auto controllerParams = [[MTRDeviceControllerStartupParams alloc] initWithIPK:ipk fabricID:@(i + 1) nocSigner:gNocSigner]; + constexpr const char * identities[] = { kIdentityAlpha, kIdentityBeta, kIdentityGamma }; + for (size_t i = 0; i < ArraySize(identities); ++i) { + __auto_type * certificateIssuer = [CertificateIssuer sharedInstance]; + auto controllerParams = [[MTRDeviceControllerStartupParams alloc] initWithIPK:certificateIssuer.ipk fabricID:@(i + 1) nocSigner:certificateIssuer.signingKey]; - auto controller = [factory createControllerOnExistingFabric:controllerParams error:nil]; - mControllers[identities[i]] = controller; + auto controller = [factory createControllerOnExistingFabric:controllerParams error:nil]; + mControllers[identities[i]] = controller; + } + } else { + NSArray * productAttestationAuthorityCertificates = nil; + ReturnOnFailure(GetPAACertsFromFolder(&productAttestationAuthorityCertificates)); + if ([productAttestationAuthorityCertificates count] == 0) { + productAttestationAuthorityCertificates = nil; + } + + ReturnOnFailure(SetUpStackWithPerControllerStorage(productAttestationAuthorityCertificates)); } } diff --git a/examples/darwin-framework-tool/commands/common/CHIPCommandStorageDelegate.h b/examples/darwin-framework-tool/commands/common/CHIPCommandStorageDelegate.h index d5f743d57673c5..1da1b6b105f917 100644 --- a/examples/darwin-framework-tool/commands/common/CHIPCommandStorageDelegate.h +++ b/examples/darwin-framework-tool/commands/common/CHIPCommandStorageDelegate.h @@ -1,8 +1,28 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + #import #import NS_ASSUME_NONNULL_BEGIN +extern NSString * const kDarwinFrameworkToolCertificatesDomain; + @interface CHIPToolPersistentStorageDelegate : NSObject - (nullable NSData *)storageDataForKey:(NSString *)key; - (BOOL)setStorageData:(NSData *)value forKey:(NSString *)key; diff --git a/examples/darwin-framework-tool/commands/common/CHIPCommandStorageDelegate.mm b/examples/darwin-framework-tool/commands/common/CHIPCommandStorageDelegate.mm index 7cbdce85006375..3ec3dda55e1b05 100644 --- a/examples/darwin-framework-tool/commands/common/CHIPCommandStorageDelegate.mm +++ b/examples/darwin-framework-tool/commands/common/CHIPCommandStorageDelegate.mm @@ -1,89 +1,70 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + #include "CHIPCommandStorageDelegate.h" #import -#define LOG_DEBUG_PERSISTENT_STORAGE_DELEGATE 0 - -NSString * const kCHIPToolDefaultsDomain = @"com.apple.chiptool"; +#import "PreferencesStorage.h" -id MTRGetDomainValueForKey(NSString * domain, NSString * key) -{ - id value = (id) CFBridgingRelease(CFPreferencesCopyAppValue((CFStringRef) key, (CFStringRef) domain)); - if (value) { - return value; - } - return nil; -} +NSString * const kDarwinFrameworkToolCertificatesDomain = @"com.apple.chiptool"; -BOOL MTRSetDomainValueForKey(NSString * domain, NSString * key, id value) -{ - CFPreferencesSetAppValue((CFStringRef) key, (__bridge CFPropertyListRef _Nullable)(value), (CFStringRef) domain); - return CFPreferencesAppSynchronize((CFStringRef) domain) == true; -} +@interface CHIPToolPersistentStorageDelegate () +@property (nonatomic, readonly) PreferencesStorage * storage; +@end -BOOL MTRRemoveDomainValueForKey(NSString * domain, NSString * key) -{ - CFPreferencesSetAppValue((CFStringRef) key, nullptr, (CFStringRef) domain); - return CFPreferencesAppSynchronize((CFStringRef) domain) == true; -} +@implementation CHIPToolPersistentStorageDelegate -id CHIPGetDomainKeyList(NSString * domain) +- (instancetype)init { - id value - = (id) CFBridgingRelease(CFPreferencesCopyKeyList((CFStringRef) domain, kCFPreferencesCurrentUser, kCFPreferencesAnyHost)); - if (value) { - return value; + if (!(self = [super init])) { + return nil; } - return nil; -} -BOOL CHIPClearAllDomain(NSString * domain) -{ - - NSArray * allKeys = CHIPGetDomainKeyList(domain); -#if LOG_DEBUG_PERSISTENT_STORAGE_DELEGATE - NSLog(@"Removing keys: %@ %@", allKeys, domain); -#endif - for (id key in allKeys) { -#if LOG_DEBUG_PERSISTENT_STORAGE_DELEGATE - NSLog(@"Removing key: %@", key); -#endif - if (!MTRRemoveDomainValueForKey(domain, (NSString *) key)) { - return NO; - } - } - return YES; + _storage = [[PreferencesStorage alloc] initWithDomain:kDarwinFrameworkToolCertificatesDomain]; + return self; } -@implementation CHIPToolPersistentStorageDelegate - - (BOOL)deleteAllStorage { - return CHIPClearAllDomain(kCHIPToolDefaultsDomain); + return [_storage reset]; } // MARK: CHIPPersistentStorageDelegate - (nullable NSData *)storageDataForKey:(NSString *)key { - NSData * value = MTRGetDomainValueForKey(kCHIPToolDefaultsDomain, key); -#if LOG_DEBUG_PERSISTENT_STORAGE_DELEGATE - NSLog(@"CHIPPersistentStorageDelegate Get Value for Key: %@, value %@", key, value); -#endif - return value; + return _storage[key]; } - (BOOL)setStorageData:(NSData *)value forKey:(NSString *)key { - return MTRSetDomainValueForKey(kCHIPToolDefaultsDomain, key, value); + _storage[key] = value; + return YES; } - (BOOL)removeStorageDataForKey:(NSString *)key { - if (MTRGetDomainValueForKey(kCHIPToolDefaultsDomain, key) == nil) { + if (_storage[key] == nil) { return NO; } - return MTRRemoveDomainValueForKey(kCHIPToolDefaultsDomain, key); + _storage[key] = nil; + return YES; } @end diff --git a/examples/darwin-framework-tool/commands/common/CHIPToolKeypair.h b/examples/darwin-framework-tool/commands/common/CHIPToolKeypair.h index a58d2e8e703042..f0ee3f8db6092b 100644 --- a/examples/darwin-framework-tool/commands/common/CHIPToolKeypair.h +++ b/examples/darwin-framework-tool/commands/common/CHIPToolKeypair.h @@ -1,4 +1,21 @@ -#include "CHIPCommandStorageDelegate.h" +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + #import #include @@ -8,7 +25,7 @@ - (SecKeyRef)publicKey; - (CHIP_ERROR)Serialize:(chip::Crypto::P256SerializedKeypair &)output; - (CHIP_ERROR)Deserialize:(chip::Crypto::P256SerializedKeypair &)input; -- (CHIP_ERROR)createOrLoadKeys:(CHIPToolPersistentStorageDelegate *)storage; +- (CHIP_ERROR)createOrLoadKeys:(id)storage; - (NSData *)getIPK; @end diff --git a/examples/darwin-framework-tool/commands/common/CHIPToolKeypair.mm b/examples/darwin-framework-tool/commands/common/CHIPToolKeypair.mm index 4d6f53de9aa08f..ce0ef5819b6ac1 100644 --- a/examples/darwin-framework-tool/commands/common/CHIPToolKeypair.mm +++ b/examples/darwin-framework-tool/commands/common/CHIPToolKeypair.mm @@ -1,3 +1,21 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + #import "CHIPToolKeypair.h" #import #include @@ -5,6 +23,9 @@ #include #include +#import "CHIPCommandStorageDelegate.h" +#import "ControllerStorage.h" + #define CHIPPlugin_CAKeyTag "com.apple.matter.commissioner.ca.issuer.id" #define Public_KeySize "256" @@ -76,12 +97,10 @@ - (NSData *)getIPK return _ipk; } -- (CHIP_ERROR)createOrLoadKeys:(CHIPToolPersistentStorageDelegate *)storage +- (CHIP_ERROR)createOrLoadKeys:(id)storage { chip::ASN1::ASN1UniversalTime effectiveTime; chip::Crypto::P256SerializedKeypair serializedKey; - NSData * value; - CHIP_ERROR err = CHIP_NO_ERROR; // Initializing the default start validity to start of 2021. The default validity duration is 10 years. CHIP_ZERO_AT(effectiveTime); @@ -90,8 +109,8 @@ - (CHIP_ERROR)createOrLoadKeys:(CHIPToolPersistentStorageDelegate *)storage effectiveTime.Day = 1; ReturnErrorOnFailure(chip::Credentials::ASN1ToChipEpochTime(effectiveTime, _mNow)); - value = [storage storageDataForKey:kOperationalCredentialsIssuerKeypairStorage]; - err = [self initSerializedKeyFromValue:value serializedKey:serializedKey]; + __auto_type * value = [self _getValueForKeyWithStorage:storage key:kOperationalCredentialsIssuerKeypairStorage]; + __auto_type err = [self initSerializedKeyFromValue:value serializedKey:serializedKey]; if (err != CHIP_NO_ERROR) { // Storage doesn't have an existing keypair. Let's create one and add it to the storage. @@ -101,12 +120,12 @@ - (CHIP_ERROR)createOrLoadKeys:(CHIPToolPersistentStorageDelegate *)storage ReturnErrorOnFailure([self Serialize:serializedKey]); NSData * valueData = [NSData dataWithBytes:serializedKey.Bytes() length:serializedKey.Length()]; - [storage setStorageData:valueData forKey:kOperationalCredentialsIssuerKeypairStorage]; + [self _setValueForKeyWithStorage:storage key:kOperationalCredentialsIssuerKeypairStorage value:valueData]; } else { ReturnErrorOnFailure([self Deserialize:serializedKey]); } - NSData * ipk = [storage storageDataForKey:kOperationalCredentialsIPK]; + NSData * ipk = [self _getValueForKeyWithStorage:storage key:kOperationalCredentialsIPK]; if (ipk == nil) { err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND; } @@ -116,7 +135,7 @@ - (CHIP_ERROR)createOrLoadKeys:(CHIPToolPersistentStorageDelegate *)storage ReturnLogErrorOnFailure(chip::Crypto::DRBG_get_bytes(tempIPK, sizeof(tempIPK))); _ipk = [NSData dataWithBytes:tempIPK length:sizeof(tempIPK)]; - [storage setStorageData:_ipk forKey:kOperationalCredentialsIPK]; + [self _setValueForKeyWithStorage:storage key:kOperationalCredentialsIPK value:_ipk]; } else { _ipk = ipk; } @@ -124,6 +143,25 @@ - (CHIP_ERROR)createOrLoadKeys:(CHIPToolPersistentStorageDelegate *)storage return CHIP_NO_ERROR; } +- (NSData *)_getValueForKeyWithStorage:(id)storage key:(NSString *)key +{ + if ([storage isKindOfClass:[CHIPToolPersistentStorageDelegate class]]) { + return [storage storageDataForKey:key]; + } else if ([storage isKindOfClass:[ControllerStorage class]]) { + return [storage valueForKey:key]; + } + return nil; +} + +- (void)_setValueForKeyWithStorage:(id)storage key:(NSString *)key value:(NSData *)value +{ + if ([storage isKindOfClass:[CHIPToolPersistentStorageDelegate class]]) { + [storage setStorageData:value forKey:key]; + } else if ([storage isKindOfClass:[ControllerStorage class]]) { + [storage storeValue:value forKey:key]; + } +} + - (CHIP_ERROR)initSerializedKeyFromValue:(NSData *)value serializedKey:(chip::Crypto::P256SerializedKeypair &)serializedKey { if (value == nil) { diff --git a/examples/darwin-framework-tool/commands/common/CertificateIssuer.h b/examples/darwin-framework-tool/commands/common/CertificateIssuer.h new file mode 100644 index 00000000000000..0034f28be2bb7c --- /dev/null +++ b/examples/darwin-framework-tool/commands/common/CertificateIssuer.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#import + +#import "ControllerStorage.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface CertificateIssuer : NSObject +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)new NS_UNAVAILABLE; + ++ (CertificateIssuer *)sharedInstance; + +- (void)startWithStorage:(id)storage + error:(NSError * _Nullable __autoreleasing * _Nonnull)error; + +- (id)issueOperationalKeypairWithControllerStorage:(ControllerStorage *)storage error:(NSError * _Nullable __autoreleasing * _Nonnull)error; + +- (MTRCertificateDERBytes _Nullable)issueOperationalCertificateForNodeID:(NSNumber *)nodeID + fabricID:(NSNumber *)fabricID + publicKey:(SecKeyRef)publicKey + error:(NSError * _Nullable __autoreleasing * _Nonnull)error; + +@property (nonatomic, readonly) MTRCertificateDERBytes rootCertificate; +@property (nonatomic, readonly) id signingKey; +@property (nonatomic, readonly) NSData * ipk; + +@property (nonatomic, nullable) NSNumber * fabricID; +@property (nonatomic, nullable) NSNumber * nextNodeID; +@property (nonatomic, readonly) BOOL shouldSkipAttestationCertificateValidation; + +@end + +NS_ASSUME_NONNULL_END diff --git a/examples/darwin-framework-tool/commands/common/CertificateIssuer.mm b/examples/darwin-framework-tool/commands/common/CertificateIssuer.mm new file mode 100644 index 00000000000000..bd12878c6addd7 --- /dev/null +++ b/examples/darwin-framework-tool/commands/common/CertificateIssuer.mm @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#import "CertificateIssuer.h" +#import "CHIPToolKeypair.h" + +#include + +@interface CertificateIssuer () +- (MTRCertificateDERBytes _Nullable)issueOperationalCertificateForNodeID:(NSNumber *)nodeID + fabricID:(NSNumber *)fabricID + publicKey:(SecKeyRef)publicKey + error:(NSError * _Nullable __autoreleasing * _Nonnull)error; +@end + +@implementation CertificateIssuer + ++ (CertificateIssuer *)sharedInstance +{ + static CertificateIssuer * certificateIssuer = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + certificateIssuer = [[CertificateIssuer alloc] init]; + }); + return certificateIssuer; +} + +- (instancetype)init +{ + if (!(self = [super init])) { + return nil; + } + + _rootCertificate = nil; + _ipk = nil; + _signingKey = nil; + _fabricID = nil; + _nextNodeID = nil; + _shouldSkipAttestationCertificateValidation = NO; + + return self; +} + +- (void)startWithStorage:(id)storage + error:(NSError * _Nullable __autoreleasing * _Nonnull)error +{ + __auto_type * signingKey = [[CHIPToolKeypair alloc] init]; + + __auto_type err = [signingKey createOrLoadKeys:storage]; + if (CHIP_NO_ERROR != err) { + *error = [NSError errorWithDomain:@"Error" code:0 userInfo:@{ @"reason" : @"Error creating or loading keys" }]; + return; + } + + __auto_type * rootCertificate = [MTRCertificates createRootCertificate:signingKey issuerID:nil fabricID:nil error:error]; + if (nil == rootCertificate) { + *error = [NSError errorWithDomain:@"Error" code:0 userInfo:@{ @"reason" : @"Error creating root certificate" }]; + return; + } + + _rootCertificate = rootCertificate; + _signingKey = signingKey; + _ipk = [signingKey getIPK]; +} + +- (id)issueOperationalKeypairWithControllerStorage:(ControllerStorage *)storage error:(NSError * _Nullable __autoreleasing * _Nonnull)error +{ + __auto_type * keypair = [[CHIPToolKeypair alloc] init]; + + __auto_type err = [keypair createOrLoadKeys:storage]; + if (CHIP_NO_ERROR != err) { + *error = [NSError errorWithDomain:@"Error" code:0 userInfo:@{ @"reason" : @"Error creating or loading keys" }]; + return nil; + } + + return keypair; +} + +- (void)issueOperationalCertificateForRequest:(MTROperationalCSRInfo *)csrInfo + attestationInfo:(MTRDeviceAttestationInfo *)attestationInfo + controller:(MTRDeviceController *)controller + completion:(void (^)(MTROperationalCertificateChain * _Nullable info, + NSError * _Nullable error))completion +{ + NSError * error = nil; + + if (self.nextNodeID == nil) { + error = [NSError errorWithDomain:@"Error" code:0 userInfo:@{ @"reason" : @"nextNodeID is nil" }]; + completion(nil, error); + return; + } + + __auto_type * csr = csrInfo.csr; + __auto_type * rawPublicKey = [MTRCertificates publicKeyFromCSR:csr error:&error]; + if (error != nil) { + completion(nil, error); + return; + } + + NSDictionary * attributes = @{ + (__bridge NSString *) kSecAttrKeyType : (__bridge NSString *) kSecAttrKeyTypeECSECPrimeRandom, + (__bridge NSString *) kSecAttrKeyClass : (__bridge NSString *) kSecAttrKeyClassPublic + }; + CFErrorRef keyCreationError = NULL; + SecKeyRef publicKey + = SecKeyCreateWithData((__bridge CFDataRef) rawPublicKey, (__bridge CFDictionaryRef) attributes, &keyCreationError); + + __auto_type * operationalCert = [self issueOperationalCertificateForNodeID:self.nextNodeID + fabricID:self.fabricID + publicKey:publicKey + error:&error]; + + // Release no-longer-needed key before we do anything else. + CFRelease(publicKey); + + if (error != nil) { + completion(nil, error); + return; + } + + __auto_type * certChain = [[MTROperationalCertificateChain alloc] initWithOperationalCertificate:operationalCert + intermediateCertificate:nil + rootCertificate:self.rootCertificate + adminSubject:nil]; + completion(certChain, nil); +} + +- (MTRCertificateDERBytes _Nullable)issueOperationalCertificateForNodeID:(NSNumber *)nodeID + fabricID:(NSNumber *)fabricID + publicKey:(SecKeyRef)publicKey + error:(NSError * _Nullable __autoreleasing * _Nonnull)error +{ + __auto_type * operationalCert = [MTRCertificates createOperationalCertificate:self.signingKey + signingCertificate:self.rootCertificate + operationalPublicKey:publicKey + fabricID:fabricID + nodeID:nodeID + caseAuthenticatedTags:nil + error:error]; + return operationalCert; +} + +@end diff --git a/examples/darwin-framework-tool/commands/common/ControllerStorage.h b/examples/darwin-framework-tool/commands/common/ControllerStorage.h new file mode 100644 index 00000000000000..f70081fee095a7 --- /dev/null +++ b/examples/darwin-framework-tool/commands/common/ControllerStorage.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +extern NSString * const kDarwinFrameworkToolControllerDomain; + +@interface ControllerStorage : NSObject +- (instancetype)initWithControllerID:(NSUUID *)controllerID; +@property (nonatomic, readonly) NSUUID * controllerID; + +- (nullable id)controller:(MTRDeviceController *)controller + valueForKey:(NSString *)key + securityLevel:(MTRStorageSecurityLevel)securityLevel + sharingType:(MTRStorageSharingType)sharingType; +- (BOOL)controller:(MTRDeviceController *)controller + storeValue:(id)value + forKey:(NSString *)key + securityLevel:(MTRStorageSecurityLevel)securityLevel + sharingType:(MTRStorageSharingType)sharingType; +- (BOOL)controller:(MTRDeviceController *)controller + removeValueForKey:(NSString *)key + securityLevel:(MTRStorageSecurityLevel)securityLevel + sharingType:(MTRStorageSharingType)sharingType; +- (NSDictionary> *)valuesForController:(MTRDeviceController *)controller securityLevel:(MTRStorageSecurityLevel)securityLevel sharingType:(MTRStorageSharingType)sharingType; +- (BOOL)controller:(MTRDeviceController *)controller storeValues:(NSDictionary> *)values securityLevel:(MTRStorageSecurityLevel)securityLevel sharingType:(MTRStorageSharingType)sharingType; + +- (NSData *)valueForKey:(NSString *)key; +- (void)storeValue:(NSData *)value forKey:key; +@end + +NS_ASSUME_NONNULL_END diff --git a/examples/darwin-framework-tool/commands/common/ControllerStorage.mm b/examples/darwin-framework-tool/commands/common/ControllerStorage.mm new file mode 100644 index 00000000000000..058f00a6b302ae --- /dev/null +++ b/examples/darwin-framework-tool/commands/common/ControllerStorage.mm @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#import "ControllerStorage.h" +#import "PreferencesStorage.h" + +#include + +NSString * const kDarwinFrameworkToolControllerDomain = @"com.apple.darwin-framework-tool.controller"; + +@interface ControllerStorage () +@property (nonatomic, readonly) PreferencesStorage * storage; +@property (nonatomic, readonly) NSString * keyScopingPrefix; + +- (NSString *)_keyToControllerScopedKey:(NSString *)key; +- (NSString *)_controllerScopedKeyToKey:(NSString *)controllerKey; +- (BOOL)_isControllerScopedKey:(NSString *)controllerKey; +@end + +@implementation ControllerStorage +- (instancetype)initWithControllerID:(NSUUID *)controllerID +{ + if (!(self = [super init])) { + return nil; + } + + _storage = [[PreferencesStorage alloc] initWithDomain:kDarwinFrameworkToolControllerDomain]; + _controllerID = controllerID; + _keyScopingPrefix = [NSString stringWithFormat:@"%@/", [_controllerID UUIDString]]; + return self; +} + +- (nullable id)controller:(MTRDeviceController *)controller + valueForKey:(NSString *)key + securityLevel:(MTRStorageSecurityLevel)securityLevel + sharingType:(MTRStorageSharingType)sharingType +{ +#ifdef LOG_DEBUG_CONTROLLER_STORAGE + ChipLogError(chipTool, "Controller(%@) Storage - Get value for %@", controller, key); +#endif // LOG_DEBUG_CONTROLLER_STORAGE + + __auto_type * controllerKey = [self _keyToControllerScopedKey:key]; + __auto_type * data = self.storage[controllerKey]; + if (data == nil) { + return data; + } + + NSError * error; + id value = [NSKeyedUnarchiver unarchivedObjectOfClasses:MTRDeviceControllerStorageClasses() fromData:data error:&error]; + return value; +} + +- (BOOL)controller:(MTRDeviceController *)controller + storeValue:(id)value + forKey:(NSString *)key + securityLevel:(MTRStorageSecurityLevel)securityLevel + sharingType:(MTRStorageSharingType)sharingType +{ +#ifdef LOG_DEBUG_CONTROLLER_STORAGE + ChipLogError(chipTool, "Controller(%@) Storage - Set value for %@", controller, key); +#endif // LOG_DEBUG_CONTROLLER_STORAGE + NSError * error; + NSData * data = [NSKeyedArchiver archivedDataWithRootObject:value requiringSecureCoding:YES error:&error]; + + __auto_type * controllerKey = [self _keyToControllerScopedKey:key]; + self.storage[controllerKey] = data; + return YES; +} + +- (BOOL)controller:(MTRDeviceController *)controller + removeValueForKey:(NSString *)key + securityLevel:(MTRStorageSecurityLevel)securityLevel + sharingType:(MTRStorageSharingType)sharingType +{ +#ifdef LOG_DEBUG_CONTROLLER_STORAGE + ChipLogError(chipTool, "Controller(%@) Storage - Remove value for %@", controller, key); +#endif // LOG_DEBUG_CONTROLLER_STORAGE + + __auto_type * controllerKey = [self _keyToControllerScopedKey:key]; + self.storage[controllerKey] = nil; + return YES; +} + +- (NSDictionary> *)valuesForController:(MTRDeviceController *)controller securityLevel:(MTRStorageSecurityLevel)securityLevel sharingType:(MTRStorageSharingType)sharingType +{ +#ifdef LOG_DEBUG_CONTROLLER_STORAGE + ChipLogError(chipTool, "Controller(%@) Storage - Get all values", controller); +#endif // LOG_DEBUG_CONTROLLER_STORAGE + + NSMutableDictionary * valuesToReturn = [NSMutableDictionary dictionary]; + for (NSString * controllerKey in self.storage) { + if (![self _isControllerScopedKey:controllerKey]) { + continue; + } + __auto_type * key = [self _controllerScopedKeyToKey:controllerKey]; + valuesToReturn[key] = [self controller:controller valueForKey:key securityLevel:securityLevel sharingType:sharingType]; + } + + if (!valuesToReturn.count) { + return nil; + } + + return valuesToReturn; +} + +- (BOOL)controller:(MTRDeviceController *)controller storeValues:(NSDictionary> *)values securityLevel:(MTRStorageSecurityLevel)securityLevel sharingType:(MTRStorageSharingType)sharingType +{ +#ifdef LOG_DEBUG_CONTROLLER_STORAGE + ChipLogError(chipTool, "Controller(%@) Storage - store values", controller); +#endif // LOG_DEBUG_CONTROLLER_STORAGE + + for (NSString * key in values) { + [self controller:controller storeValue:values[key] forKey:key securityLevel:securityLevel sharingType:sharingType]; + } + + return YES; +} + +- (NSData *)valueForKey:(NSString *)key +{ + __auto_type * controllerKey = [self _keyToControllerScopedKey:key]; + return self.storage[controllerKey]; +} + +- (void)storeValue:(NSData *)value forKey:key +{ + __auto_type * controllerKey = [self _keyToControllerScopedKey:key]; + self.storage[controllerKey] = value; +} + +- (NSString *)_keyToControllerScopedKey:(NSString *)key +{ + return [NSString stringWithFormat:@"%@%@", _keyScopingPrefix, key]; +} + +- (NSString *)_controllerScopedKeyToKey:(NSString *)controllerKey +{ + return [controllerKey substringFromIndex:_keyScopingPrefix.length]; +} + +- (BOOL)_isControllerScopedKey:(NSString *)controllerKey +{ + return [controllerKey hasPrefix:_keyScopingPrefix]; +} +@end diff --git a/examples/darwin-framework-tool/commands/common/PreferencesStorage.h b/examples/darwin-framework-tool/commands/common/PreferencesStorage.h new file mode 100644 index 00000000000000..85c12032766f42 --- /dev/null +++ b/examples/darwin-framework-tool/commands/common/PreferencesStorage.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#import + +@interface PreferencesStorage : NSObject + +@property (nonatomic, strong) NSString * domain; + +- (instancetype)initWithDomain:(NSString *)domain; +- (NSData *)objectForKeyedSubscript:(NSString *)key; +- (void)setObject:(id)obj forKeyedSubscript:(NSString *)key; +- (NSArray *)allKeys; +- (bool)reset; +- (void)print; + +@end diff --git a/examples/darwin-framework-tool/commands/common/PreferencesStorage.mm b/examples/darwin-framework-tool/commands/common/PreferencesStorage.mm new file mode 100644 index 00000000000000..e7ddba1313d450 --- /dev/null +++ b/examples/darwin-framework-tool/commands/common/PreferencesStorage.mm @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#import "PreferencesStorage.h" + +@implementation PreferencesStorage +- (instancetype)initWithDomain:(NSString *)domain +{ + self = [super init]; + if (self) { + _domain = domain; + } + + return self; +} + +- (NSData *)objectForKeyedSubscript:(NSString *)key +{ + __auto_type domainRef = (__bridge CFStringRef) self.domain; + __auto_type keyRef = (__bridge CFStringRef) key; + __auto_type value = CFPreferencesCopyAppValue(keyRef, domainRef); + if (value) { + id obj = (__bridge_transfer id) value; + return obj; + } + return nil; +} + +- (void)setObject:(id)obj forKeyedSubscript:(NSString *)key +{ + __auto_type domainRef = (__bridge CFStringRef) self.domain; + __auto_type keyRef = (__bridge CFStringRef) key; + __auto_type value = (__bridge CFPropertyListRef) obj; + + CFPreferencesSetAppValue(keyRef, value, domainRef); + CFPreferencesAppSynchronize(domainRef); +} + +- (NSArray *)allKeys +{ + __auto_type domainRef = (__bridge CFStringRef) self.domain; + __auto_type keys = CFPreferencesCopyKeyList(domainRef, kCFPreferencesCurrentUser, kCFPreferencesAnyHost); + + if (!keys) { + return @[]; + } + + return (__bridge_transfer NSArray *) keys; +} + +- (bool)reset +{ + __auto_type * keys = [self allKeys]; + __auto_type domainRef = (__bridge CFStringRef) self.domain; + + for (NSString * key in keys) { + __auto_type keyRef = (__bridge CFStringRef) key; + CFPreferencesSetAppValue(keyRef, NULL, domainRef); + } + + return CFPreferencesAppSynchronize(domainRef); +} + +- (void)print +{ + NSLog(@"%@:", self.domain); + NSArray * keys = [self allKeys]; + for (NSString * key in keys) { + __auto_type * data = [self objectForKeyedSubscript:key]; + NSLog(@" * %@: %@", key, data); + } +} + +#pragma mark - NSFastEnumeration + +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id _Nullable __unsafe_unretained[])buffer count:(NSUInteger)len +{ + __auto_type * keys = [self allKeys]; + if (state->state >= keys.count) { + return 0; + } + + state->itemsPtr = buffer; + state->mutationsPtr = &state->extra[0]; + + NSUInteger count = 0; + while (state->state < keys.count && count < len) { + buffer[count] = keys[state->state]; + state->state++; + count++; + } + return count; +} + +@end diff --git a/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.mm b/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.mm index 1a060819b5700e..3ec4aee9e2e1e2 100644 --- a/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.mm +++ b/examples/darwin-framework-tool/commands/pairing/PairingCommandBridge.mm @@ -19,6 +19,7 @@ #import #include "../common/CHIPCommandBridge.h" +#include "../common/CertificateIssuer.h" #include "DeviceControllerDelegateBridge.h" #include "PairingCommandBridge.h" #include @@ -52,6 +53,12 @@ - (void)deviceAttestationCompletedForController:(MTRDeviceController *)controlle [deviceControllerDelegate setCommandBridge:this]; [deviceControllerDelegate setDeviceID:mNodeId]; + // With per-controller storage, the certificate issuer creates the operational certificate. + // When using shared storage, this step is a no-op. + auto * certificateIssuer = [CertificateIssuer sharedInstance]; + certificateIssuer.nextNodeID = @(mNodeId); + certificateIssuer.fabricID = CurrentCommissionerFabricId(); + if (mCommissioningType != CommissioningType::None) { MTRCommissioningParameters * params = [[MTRCommissioningParameters alloc] init]; switch (mCommissioningType) { diff --git a/examples/darwin-framework-tool/commands/storage/Commands.h b/examples/darwin-framework-tool/commands/storage/Commands.h index 65534272b81ca5..983fb22f4604b6 100644 --- a/examples/darwin-framework-tool/commands/storage/Commands.h +++ b/examples/darwin-framework-tool/commands/storage/Commands.h @@ -25,7 +25,10 @@ void registerCommandsStorage(Commands & commands) { const char * clusterName = "storage"; - commands_list clusterCommands = { make_unique() }; + commands_list clusterCommands = { + make_unique(), // + make_unique(), // + }; commands.RegisterCommandSet(clusterName, clusterCommands, "Commands for managing persistent data stored by darwin-framework-tool."); diff --git a/examples/darwin-framework-tool/commands/storage/StorageManagementCommand.h b/examples/darwin-framework-tool/commands/storage/StorageManagementCommand.h index c2abddf18d0498..8c3ed69184d742 100644 --- a/examples/darwin-framework-tool/commands/storage/StorageManagementCommand.h +++ b/examples/darwin-framework-tool/commands/storage/StorageManagementCommand.h @@ -29,3 +29,11 @@ class StorageClearAll : public Command CHIP_ERROR Run() override; }; + +class StorageViewAll : public Command +{ +public: + StorageViewAll() : Command("view-all") {} + + CHIP_ERROR Run() override; +}; diff --git a/examples/darwin-framework-tool/commands/storage/StorageManagementCommand.mm b/examples/darwin-framework-tool/commands/storage/StorageManagementCommand.mm index e0c1b18ec890dc..007d2821bda5a3 100644 --- a/examples/darwin-framework-tool/commands/storage/StorageManagementCommand.mm +++ b/examples/darwin-framework-tool/commands/storage/StorageManagementCommand.mm @@ -17,18 +17,43 @@ */ #include "../common/CHIPCommandStorageDelegate.h" +#include "../common/ControllerStorage.h" +#include "../common/PreferencesStorage.h" #include "StorageManagementCommand.h" #import -static CHIPToolPersistentStorageDelegate * storage = nil; +namespace { +NSArray * GetDomains() +{ + __auto_type * domains = @[ + kDarwinFrameworkToolCertificatesDomain, + kDarwinFrameworkToolControllerDomain + ]; + + return domains; +} +} CHIP_ERROR StorageClearAll::Run() { - storage = [[CHIPToolPersistentStorageDelegate alloc] init]; - if (![storage deleteAllStorage]) { - return CHIP_ERROR_INTERNAL; + __auto_type * domains = GetDomains(); + for (NSString * domain in domains) { + __auto_type * storage = [[PreferencesStorage alloc] initWithDomain:domain]; + VerifyOrReturnError([storage reset], CHIP_ERROR_INTERNAL); } + + return CHIP_NO_ERROR; +} + +CHIP_ERROR StorageViewAll::Run() +{ + __auto_type * domains = GetDomains(); + for (NSString * domain in domains) { + __auto_type * storage = [[PreferencesStorage alloc] initWithDomain:domain]; + [storage print]; + } + return CHIP_NO_ERROR; } diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj index 173fb7b004e17f..e19178531cf914 100644 --- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj +++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj @@ -334,6 +334,12 @@ B43B39EC2CB859A5006AA284 /* DumpMemoryGraphCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B43B39E52CB859A5006AA284 /* DumpMemoryGraphCommand.h */; }; B43B39ED2CB859A5006AA284 /* Commands.h in Headers */ = {isa = PBXBuildFile; fileRef = B43B39E42CB859A5006AA284 /* Commands.h */; }; B43B39EE2CB859A5006AA284 /* LeaksTool.h in Headers */ = {isa = PBXBuildFile; fileRef = B43B39E72CB859A5006AA284 /* LeaksTool.h */; }; + B43B39F52CB99090006AA284 /* ControllerStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = B43B39F22CB99090006AA284 /* ControllerStorage.mm */; }; + B43B39F62CB99090006AA284 /* CertificateIssuer.mm in Sources */ = {isa = PBXBuildFile; fileRef = B43B39F02CB99090006AA284 /* CertificateIssuer.mm */; }; + B43B39F72CB99090006AA284 /* PreferencesStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = B43B39F42CB99090006AA284 /* PreferencesStorage.mm */; }; + B43B39F82CB99090006AA284 /* CertificateIssuer.h in Headers */ = {isa = PBXBuildFile; fileRef = B43B39EF2CB99090006AA284 /* CertificateIssuer.h */; }; + B43B39F92CB99090006AA284 /* PreferencesStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = B43B39F32CB99090006AA284 /* PreferencesStorage.h */; }; + B43B39FA2CB99090006AA284 /* ControllerStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = B43B39F12CB99090006AA284 /* ControllerStorage.h */; }; B45373AA2A9FE73400807602 /* WebSocketServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B45373A92A9FE73400807602 /* WebSocketServer.cpp */; }; B45373BD2A9FEA9100807602 /* service.c in Sources */ = {isa = PBXBuildFile; fileRef = B45373B22A9FEA9000807602 /* service.c */; settings = {COMPILER_FLAGS = "-Wno-error -Wno-unreachable-code -Wno-conversion -Wno-format-nonliteral"; }; }; B45373BE2A9FEA9100807602 /* network.c in Sources */ = {isa = PBXBuildFile; fileRef = B45373B32A9FEA9000807602 /* network.c */; settings = {COMPILER_FLAGS = "-Wno-error -Wno-unreachable-code -Wno-conversion -Wno-format-nonliteral"; }; }; @@ -785,6 +791,12 @@ B43B39E62CB859A5006AA284 /* DumpMemoryGraphCommand.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = DumpMemoryGraphCommand.mm; sourceTree = ""; }; B43B39E72CB859A5006AA284 /* LeaksTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LeaksTool.h; sourceTree = ""; }; B43B39E82CB859A5006AA284 /* LeaksTool.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = LeaksTool.mm; sourceTree = ""; }; + B43B39EF2CB99090006AA284 /* CertificateIssuer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CertificateIssuer.h; sourceTree = ""; }; + B43B39F02CB99090006AA284 /* CertificateIssuer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = CertificateIssuer.mm; sourceTree = ""; }; + B43B39F12CB99090006AA284 /* ControllerStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ControllerStorage.h; sourceTree = ""; }; + B43B39F22CB99090006AA284 /* ControllerStorage.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ControllerStorage.mm; sourceTree = ""; }; + B43B39F32CB99090006AA284 /* PreferencesStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PreferencesStorage.h; sourceTree = ""; }; + B43B39F42CB99090006AA284 /* PreferencesStorage.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PreferencesStorage.mm; sourceTree = ""; }; B45373A92A9FE73400807602 /* WebSocketServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSocketServer.cpp; sourceTree = ""; }; B45373B22A9FEA9000807602 /* service.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = service.c; path = "repo/lib/core-net/service.c"; sourceTree = ""; }; B45373B32A9FEA9000807602 /* network.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = network.c; path = "repo/lib/core-net/network.c"; sourceTree = ""; }; @@ -987,6 +999,12 @@ 037C3D9B2991BD4F00B7EEE2 /* common */ = { isa = PBXGroup; children = ( + B43B39EF2CB99090006AA284 /* CertificateIssuer.h */, + B43B39F02CB99090006AA284 /* CertificateIssuer.mm */, + B43B39F12CB99090006AA284 /* ControllerStorage.h */, + B43B39F22CB99090006AA284 /* ControllerStorage.mm */, + B43B39F32CB99090006AA284 /* PreferencesStorage.h */, + B43B39F42CB99090006AA284 /* PreferencesStorage.mm */, B4E262132AA0C7A300DBA5BC /* RemoteDataModelLogger.h */, B4E262122AA0C7A300DBA5BC /* RemoteDataModelLogger.mm */, 037C3D9C2991BD4F00B7EEE2 /* CHIPCommandBridge.mm */, @@ -1632,6 +1650,9 @@ B4FCD5712B603A6300832859 /* DownloadLogCommand.h in Headers */, 037C3DC32991BD5100B7EEE2 /* Commands.h in Headers */, B4F773CA2CB54B61008C6B23 /* LeakChecker.h in Headers */, + B43B39F82CB99090006AA284 /* CertificateIssuer.h in Headers */, + B43B39F92CB99090006AA284 /* PreferencesStorage.h in Headers */, + B43B39FA2CB99090006AA284 /* ControllerStorage.h in Headers */, 037C3DB82991BD5000B7EEE2 /* ClusterCommandBridge.h in Headers */, 037C3DC82991BD5100B7EEE2 /* CHIPToolKeypair.h in Headers */, 037C3DB52991BD5000B7EEE2 /* WriteAttributeCommandBridge.h in Headers */, @@ -1971,6 +1992,9 @@ B45373DF2A9FEB6F00807602 /* system.c in Sources */, B45373FC2A9FEC4F00807602 /* unix-caps.c in Sources */, B45373FE2A9FEC4F00807602 /* unix-fds.c in Sources */, + B43B39F52CB99090006AA284 /* ControllerStorage.mm in Sources */, + B43B39F62CB99090006AA284 /* CertificateIssuer.mm in Sources */, + B43B39F72CB99090006AA284 /* PreferencesStorage.mm in Sources */, B43B39EA2CB859A5006AA284 /* DumpMemoryGraphCommand.mm in Sources */, B43B39EB2CB859A5006AA284 /* LeaksTool.mm in Sources */, B45374002A9FEC4F00807602 /* unix-init.c in Sources */, From 32a375c6ac7b18d3b4231d3d81a3a090e05f96fe Mon Sep 17 00:00:00 2001 From: C Freeman Date: Mon, 14 Oct 2024 23:05:15 -0400 Subject: [PATCH 8/8] Docs: Move platform docs into their own directory and separate into subfolders (#34233) * Move files and add indexes * Fix references for new paths * Fix references * Fix up some new references * move darwin back into guides * remove darwin from platforms * Restyled by prettier-markdown * whoops, didn't save * Restyled by prettier-markdown * fix dishwasher readme * fix boufallolabs readme * fix links --------- Co-authored-by: Restyled.io --- .../chip-repl}/Matter_Access_Control.ipynb | 0 .../Matter_Basic_Interactions.ipynb | 0 .../Matter_Multi_Fabric_Commissioning.ipynb | 0 .../chip-repl}/Matter_REPL_Intro.ipynb | 0 .../chip-repl/index.md | 15 ++++++ .../chip-repl}/matter-repl.md | 0 .../python_chip_controller_advanced_usage.md | 0 .../python_chip_controller_building.md | 2 +- .../chip-tool}/chip_tool_guide.md | 3 +- .../chip-tool/index.md | 11 +++++ docs/development_controllers/index.md | 13 ++++++ docs/getting_started/first_example.md | 2 +- docs/guides/darwin.md | 8 ++-- docs/guides/index.md | 43 ------------------ docs/index.md | 2 + .../android}/android_building.md | 0 docs/platforms/android/index.md | 11 +++++ .../asr}/asr_getting_started_guide.md | 4 +- docs/platforms/asr/index.md | 11 +++++ docs/platforms/bouffalolab/index.md | 11 +++++ .../bouffalolab/matter_factory_data.md | 0 .../esp32/ble_settings.md | 0 .../esp32/build_app_and_commission.md | 2 +- .../esp32/config_options.md | 0 .../esp32/factory_data.md | 0 .../esp32/flash_nvs_encryption.md | 0 .../README.md => platforms/esp32/index.md} | 0 docs/{guides => platforms}/esp32/ota.md | 0 docs/{guides => platforms}/esp32/providers.md | 0 .../esp32/rpc_console.md | 0 .../esp32/secure_cert_partition.md | 0 .../esp32/setup_idf_chip.md | 0 .../esp32/vs_code_development.md | 0 docs/platforms/index.md | 35 ++++++++++++++ docs/platforms/infineon/index.md | 12 +++++ .../infineon_psoc6_software_update.md | 0 .../infineon}/infineon_trustm_provisioning.md | 0 .../matter_mbedos_overview_simplified.png | Bin docs/platforms/mbedos/index.md | 13 ++++++ .../mbedos}/mbedos_add_new_target.md | 0 .../mbedos}/mbedos_commissioning.md | 10 ++-- .../mbedos}/mbedos_platform_overview.md | 10 ++-- .../images/CHIPTool_device_commissioned.png | Bin ...ter_nrfconnect_overview_simplified_ncs.svg | 0 .../nrfconnect_android_connectivity.png | Bin docs/platforms/nrf/index.md | 16 +++++++ .../nrf}/nrfconnect_android_commissioning.md | 13 +++--- .../nrf}/nrfconnect_examples_cli.md | 0 .../nrf}/nrfconnect_examples_configuration.md | 0 .../nrfconnect_examples_software_update.md | 3 +- .../nrfconnect_factory_data_configuration.md | 4 +- .../nrf}/nrfconnect_platform_overview.md | 0 .../nxp/README.md => platforms/nxp/index.md} | 0 .../nxp/nxp_imx8m_linux_examples.md | 0 .../nxp/nxp_k32w0_ota_guide.md | 0 .../nxp/nxp_k32w_android_commissioning.md | 0 .../nxp/nxp_manufacturing_flow.md | 0 .../nxp/nxp_mcxw71_ota_guide.md | 0 .../nxp/nxp_otbr_guide.md | 0 .../nxp/nxp_rw61x_ota_software_update.md | 0 .../nxp/nxp_zephyr_ota_software_update.md | 0 docs/platforms/openiotsdk/index.md | 15 ++++++ .../openiotsdk}/openiotsdk_commissioning.md | 8 ++-- .../openiotsdk}/openiotsdk_examples.md | 8 ++-- .../openiotsdk_examples_software_update.md | 12 ++--- .../openiotsdk_platform_overview.md | 0 .../openiotsdk}/openiotsdk_unit_tests.md | 0 docs/platforms/openthread/index.md | 12 +++++ .../openthread_border_router_pi.md | 0 .../openthread}/openthread_rcp_nrf_dongle.md | 0 .../silabs}/images/silabs_logo.png | Bin docs/platforms/silabs/index.md | 14 ++++++ .../silabs}/silabs_cli_guide.md | 0 .../silabs}/silabs_common_app_behavior.md | 0 .../silabs}/silabs_efr32_software_update.md | 2 +- .../silabs}/silabs_getting_started.md | 0 docs/platforms/stm32/index.md | 11 +++++ .../stm32}/stm32_getting_started_guide.md | 2 +- .../images/matter_ti_overview_simplified.png | Bin .../ti}/images/matter_ti_overview_wifi.png | Bin docs/platforms/ti/index.md | 17 +++++++ .../matter_cc2674_migration.md | 0 .../ti/matter-syscfg/getting-started.md | 0 .../ti/matter-syscfg/images/board_view.png | Bin .../images/generated_files_ble.png | Bin .../ti/matter-syscfg/images/hardware_view.png | Bin .../ti/matter-syscfg/images/reserve-gpio.png | Bin .../images/reserve-peripheral-panel.png | Bin .../images/show_generated_files_tab.png | Bin .../ti/matter-syscfg/sysconfig-board.md | 0 .../enabling_icd_on_ti_devices.md | 0 .../images/cc13x4_memmap.png | Bin .../images/factory_data_overview.png | Bin .../ti_factory_data_user_guide.md | 0 .../ti_openthread_library_usage.md | 0 .../ti/ti_matter_overview.md | 2 +- examples/air-purifier-app/linux/README.md | 2 +- .../air-quality-sensor-app/linux/README.md | 2 +- .../air-quality-sensor-app/silabs/README.md | 2 +- examples/all-clusters-app/asr/README.md | 2 +- examples/all-clusters-app/esp32/README.md | 8 ++-- .../all-clusters-app/infineon/psoc6/README.md | 2 +- examples/all-clusters-app/mbed/README.md | 5 +- .../all-clusters-app/nrfconnect/README.md | 17 +++---- .../nxp/linux-imx/imx8m/README.md | 2 +- .../all-clusters-app/nxp/rt/rw61x/README.md | 16 +++---- .../all-clusters-app/nxp/zephyr/README.md | 4 +- .../all-clusters-app/openiotsdk/README.md | 4 +- .../all-clusters-minimal-app/asr/README.md | 2 +- .../all-clusters-minimal-app/esp32/README.md | 8 ++-- .../infineon/psoc6/README.md | 2 +- .../all-clusters-minimal-app/mbed/README.md | 5 +- .../nrfconnect/README.md | 17 +++---- .../nxp/linux-imx/imx8m/README.md | 2 +- examples/android/CHIPTool/README.md | 3 +- examples/bridge-app/asr/README.md | 2 +- examples/bridge-app/esp32/README.md | 4 +- examples/chip-tool/README.md | 2 +- examples/contact-sensor-app/linux/README.md | 2 +- examples/contact-sensor-app/nxp/README.md | 2 +- .../contact-sensor-app/nxp/k32w0/README.md | 4 +- .../contact-sensor-app/nxp/k32w1/README.md | 2 +- .../contact-sensor-app/nxp/mcxw71/README.md | 2 +- examples/dishwasher-app/linux/README.md | 2 +- examples/dishwasher-app/silabs/README.md | 2 +- .../energy-management-app/esp32/README.md | 6 +-- .../energy-management-app/linux/README.md | 2 +- .../energy-management-app/silabs/README.md | 2 +- examples/light-switch-app/asr/README.md | 2 +- examples/light-switch-app/esp32/README.md | 4 +- examples/light-switch-app/genio/README.md | 2 +- .../infineon/cyw30739/README.md | 2 +- .../light-switch-app/nrfconnect/README.md | 29 ++++++------ examples/light-switch-app/silabs/README.md | 4 +- .../linux/README.md | 12 +++-- examples/lighting-app/asr/README.md | 2 +- examples/lighting-app/bouffalolab/README.md | 26 +++++------ examples/lighting-app/esp32/README.md | 6 +-- examples/lighting-app/genio/README.md | 2 +- .../lighting-app/infineon/cyw30739/README.md | 2 +- .../lighting-app/infineon/psoc6/README.md | 2 +- examples/lighting-app/linux/README.md | 2 +- examples/lighting-app/mbed/README.md | 5 +- examples/lighting-app/nrfconnect/README.md | 21 +++++---- examples/lighting-app/nxp/README.md | 2 +- examples/lighting-app/nxp/k32w0/README.md | 4 +- examples/lighting-app/nxp/k32w1/README.md | 4 +- .../nxp/linux-imx/imx8m/README.md | 2 +- examples/lighting-app/nxp/mcxw71/README.md | 4 +- examples/lighting-app/silabs/README.md | 4 +- examples/lighting-app/stm32/README.md | 2 +- examples/lit-icd-app/esp32/README.md | 4 +- examples/lit-icd-app/nrfconnect/README.md | 19 ++++---- examples/lit-icd-app/silabs/README.md | 4 +- examples/lock-app/asr/README.md | 2 +- examples/lock-app/esp32/README.md | 6 +-- examples/lock-app/genio/README.md | 2 +- examples/lock-app/infineon/cyw30739/README.md | 2 +- examples/lock-app/infineon/psoc6/README.md | 4 +- examples/lock-app/mbed/README.md | 5 +- examples/lock-app/nrfconnect/README.md | 21 +++++---- examples/lock-app/nxp/README.md | 2 +- examples/lock-app/nxp/k32w1/README.md | 2 +- examples/lock-app/nxp/mcxw71/README.md | 2 +- examples/lock-app/openiotsdk/README.md | 4 +- examples/lock-app/silabs/README.md | 4 +- examples/ota-provider-app/esp32/README.md | 6 +-- examples/ota-requestor-app/asr/README.md | 2 +- examples/ota-requestor-app/esp32/README.md | 6 +-- examples/ota-requestor-app/genio/README.md | 2 +- examples/ota-requestor-app/mbed/README.md | 5 +- .../ota-requestor-app/openiotsdk/README.md | 12 ++--- examples/persistent-storage/esp32/README.md | 4 +- examples/pigweed-app/esp32/README.md | 4 +- examples/pigweed-app/mbed/README.md | 2 +- examples/pump-app/nrfconnect/README.md | 17 +++---- examples/pump-app/silabs/README.md | 4 +- .../pump-controller-app/nrfconnect/README.md | 17 +++---- examples/refrigerator-app/linux/README.md | 2 +- examples/refrigerator-app/silabs/README.md | 4 +- examples/shell/mbed/README.md | 2 +- examples/shell/openiotsdk/README.md | 2 +- examples/smoke-co-alarm-app/silabs/README.md | 4 +- .../temperature-measurement-app/asr/README.md | 2 +- .../esp32/README.md | 4 +- examples/thermostat/asr/README.md | 2 +- examples/thermostat/genio/README.md | 2 +- .../thermostat/infineon/cyw30739/README.md | 2 +- .../thermostat/nxp/linux-imx/imx8m/README.md | 2 +- examples/thermostat/nxp/linux-se05x/README.md | 2 +- examples/thermostat/silabs/README.md | 4 +- examples/thread-br-app/esp32/README.md | 4 +- examples/tv-app/openiotsdk/README.md | 4 +- examples/tv-casting-app/android/README.md | 2 +- examples/virtual-device-app/android/README.md | 2 +- examples/window-app/nrfconnect/README.md | 21 +++++---- examples/window-app/silabs/README.md | 4 +- .../nxp/factory_data_generator/README.md | 2 +- src/controller/java/tests/README.md | 5 +- 199 files changed, 541 insertions(+), 342 deletions(-) rename docs/{guides/repl => development_controllers/chip-repl}/Matter_Access_Control.ipynb (100%) rename docs/{guides/repl => development_controllers/chip-repl}/Matter_Basic_Interactions.ipynb (100%) rename docs/{guides/repl => development_controllers/chip-repl}/Matter_Multi_Fabric_Commissioning.ipynb (100%) rename docs/{guides/repl => development_controllers/chip-repl}/Matter_REPL_Intro.ipynb (100%) create mode 100644 docs/development_controllers/chip-repl/index.md rename docs/{guides => development_controllers/chip-repl}/matter-repl.md (100%) rename docs/{guides => development_controllers/chip-repl}/python_chip_controller_advanced_usage.md (100%) rename docs/{guides => development_controllers/chip-repl}/python_chip_controller_building.md (99%) rename docs/{guides => development_controllers/chip-tool}/chip_tool_guide.md (99%) create mode 100644 docs/development_controllers/chip-tool/index.md create mode 100644 docs/development_controllers/index.md rename docs/{guides => platforms/android}/android_building.md (100%) create mode 100644 docs/platforms/android/index.md rename docs/{guides => platforms/asr}/asr_getting_started_guide.md (97%) create mode 100644 docs/platforms/asr/index.md create mode 100644 docs/platforms/bouffalolab/index.md rename docs/{guides => platforms}/bouffalolab/matter_factory_data.md (100%) rename docs/{guides => platforms}/esp32/ble_settings.md (100%) rename docs/{guides => platforms}/esp32/build_app_and_commission.md (98%) rename docs/{guides => platforms}/esp32/config_options.md (100%) rename docs/{guides => platforms}/esp32/factory_data.md (100%) rename docs/{guides => platforms}/esp32/flash_nvs_encryption.md (100%) rename docs/{guides/esp32/README.md => platforms/esp32/index.md} (100%) rename docs/{guides => platforms}/esp32/ota.md (100%) rename docs/{guides => platforms}/esp32/providers.md (100%) rename docs/{guides => platforms}/esp32/rpc_console.md (100%) rename docs/{guides => platforms}/esp32/secure_cert_partition.md (100%) rename docs/{guides => platforms}/esp32/setup_idf_chip.md (100%) rename docs/{guides => platforms}/esp32/vs_code_development.md (100%) create mode 100644 docs/platforms/index.md create mode 100644 docs/platforms/infineon/index.md rename docs/{guides => platforms/infineon}/infineon_psoc6_software_update.md (100%) rename docs/{guides => platforms/infineon}/infineon_trustm_provisioning.md (100%) rename docs/{guides => platforms/mbedos}/images/matter_mbedos_overview_simplified.png (100%) create mode 100644 docs/platforms/mbedos/index.md rename docs/{guides => platforms/mbedos}/mbedos_add_new_target.md (100%) rename docs/{guides => platforms/mbedos}/mbedos_commissioning.md (96%) rename docs/{guides => platforms/mbedos}/mbedos_platform_overview.md (95%) rename docs/{guides => platforms/nrf}/images/CHIPTool_device_commissioned.png (100%) rename docs/{guides => platforms/nrf}/images/matter_nrfconnect_overview_simplified_ncs.svg (100%) rename docs/{guides => platforms/nrf}/images/nrfconnect_android_connectivity.png (100%) create mode 100644 docs/platforms/nrf/index.md rename docs/{guides => platforms/nrf}/nrfconnect_android_commissioning.md (94%) rename docs/{guides => platforms/nrf}/nrfconnect_examples_cli.md (100%) rename docs/{guides => platforms/nrf}/nrfconnect_examples_configuration.md (100%) rename docs/{guides => platforms/nrf}/nrfconnect_examples_software_update.md (99%) rename docs/{guides => platforms/nrf}/nrfconnect_factory_data_configuration.md (99%) rename docs/{guides => platforms/nrf}/nrfconnect_platform_overview.md (100%) rename docs/{guides/nxp/README.md => platforms/nxp/index.md} (100%) rename docs/{guides => platforms}/nxp/nxp_imx8m_linux_examples.md (100%) rename docs/{guides => platforms}/nxp/nxp_k32w0_ota_guide.md (100%) rename docs/{guides => platforms}/nxp/nxp_k32w_android_commissioning.md (100%) rename docs/{guides => platforms}/nxp/nxp_manufacturing_flow.md (100%) rename docs/{guides => platforms}/nxp/nxp_mcxw71_ota_guide.md (100%) rename docs/{guides => platforms}/nxp/nxp_otbr_guide.md (100%) rename docs/{guides => platforms}/nxp/nxp_rw61x_ota_software_update.md (100%) rename docs/{guides => platforms}/nxp/nxp_zephyr_ota_software_update.md (100%) create mode 100644 docs/platforms/openiotsdk/index.md rename docs/{guides => platforms/openiotsdk}/openiotsdk_commissioning.md (90%) rename docs/{guides => platforms/openiotsdk}/openiotsdk_examples.md (98%) rename docs/{guides => platforms/openiotsdk}/openiotsdk_examples_software_update.md (95%) rename docs/{guides => platforms/openiotsdk}/openiotsdk_platform_overview.md (100%) rename docs/{guides => platforms/openiotsdk}/openiotsdk_unit_tests.md (100%) create mode 100644 docs/platforms/openthread/index.md rename docs/{guides => platforms/openthread}/openthread_border_router_pi.md (100%) rename docs/{guides => platforms/openthread}/openthread_rcp_nrf_dongle.md (100%) rename docs/{guides => platforms/silabs}/images/silabs_logo.png (100%) create mode 100644 docs/platforms/silabs/index.md rename docs/{guides => platforms/silabs}/silabs_cli_guide.md (100%) rename docs/{guides => platforms/silabs}/silabs_common_app_behavior.md (100%) rename docs/{guides => platforms/silabs}/silabs_efr32_software_update.md (98%) rename docs/{guides => platforms/silabs}/silabs_getting_started.md (100%) create mode 100644 docs/platforms/stm32/index.md rename docs/{guides => platforms/stm32}/stm32_getting_started_guide.md (98%) rename docs/{guides => platforms/ti}/images/matter_ti_overview_simplified.png (100%) rename docs/{guides => platforms/ti}/images/matter_ti_overview_wifi.png (100%) create mode 100644 docs/platforms/ti/index.md rename docs/{guides => platforms}/ti/matter-migration-guide/matter_cc2674_migration.md (100%) rename docs/{guides => platforms}/ti/matter-syscfg/getting-started.md (100%) rename docs/{guides => platforms}/ti/matter-syscfg/images/board_view.png (100%) rename docs/{guides => platforms}/ti/matter-syscfg/images/generated_files_ble.png (100%) rename docs/{guides => platforms}/ti/matter-syscfg/images/hardware_view.png (100%) rename docs/{guides => platforms}/ti/matter-syscfg/images/reserve-gpio.png (100%) rename docs/{guides => platforms}/ti/matter-syscfg/images/reserve-peripheral-panel.png (100%) rename docs/{guides => platforms}/ti/matter-syscfg/images/show_generated_files_tab.png (100%) rename docs/{guides => platforms}/ti/matter-syscfg/sysconfig-board.md (100%) rename docs/{guides => platforms}/ti/matter-users-guide/enabling_icd_on_ti_devices.md (100%) rename docs/{guides => platforms}/ti/matter-users-guide/images/cc13x4_memmap.png (100%) rename docs/{guides => platforms}/ti/matter-users-guide/images/factory_data_overview.png (100%) rename docs/{guides => platforms}/ti/matter-users-guide/ti_factory_data_user_guide.md (100%) rename docs/{guides => platforms}/ti/matter-users-guide/ti_openthread_library_usage.md (100%) rename docs/{guides => platforms}/ti/ti_matter_overview.md (99%) diff --git a/docs/guides/repl/Matter_Access_Control.ipynb b/docs/development_controllers/chip-repl/Matter_Access_Control.ipynb similarity index 100% rename from docs/guides/repl/Matter_Access_Control.ipynb rename to docs/development_controllers/chip-repl/Matter_Access_Control.ipynb diff --git a/docs/guides/repl/Matter_Basic_Interactions.ipynb b/docs/development_controllers/chip-repl/Matter_Basic_Interactions.ipynb similarity index 100% rename from docs/guides/repl/Matter_Basic_Interactions.ipynb rename to docs/development_controllers/chip-repl/Matter_Basic_Interactions.ipynb diff --git a/docs/guides/repl/Matter_Multi_Fabric_Commissioning.ipynb b/docs/development_controllers/chip-repl/Matter_Multi_Fabric_Commissioning.ipynb similarity index 100% rename from docs/guides/repl/Matter_Multi_Fabric_Commissioning.ipynb rename to docs/development_controllers/chip-repl/Matter_Multi_Fabric_Commissioning.ipynb diff --git a/docs/guides/repl/Matter_REPL_Intro.ipynb b/docs/development_controllers/chip-repl/Matter_REPL_Intro.ipynb similarity index 100% rename from docs/guides/repl/Matter_REPL_Intro.ipynb rename to docs/development_controllers/chip-repl/Matter_REPL_Intro.ipynb diff --git a/docs/development_controllers/chip-repl/index.md b/docs/development_controllers/chip-repl/index.md new file mode 100644 index 00000000000000..b17962ab667446 --- /dev/null +++ b/docs/development_controllers/chip-repl/index.md @@ -0,0 +1,15 @@ +# chip-repl + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +- [Matter REPL](./matter-repl.md) +- [Intro](./Matter_REPL_Intro.ipynb) +- [Access Control](./Matter_Access_Control.ipynb) +- [Basic interactions](./Matter_Basic_Interactions.ipynb) +- [Fabric Commissioning](./Matter_Multi_Fabric_Commissioning.ipynb) diff --git a/docs/guides/matter-repl.md b/docs/development_controllers/chip-repl/matter-repl.md similarity index 100% rename from docs/guides/matter-repl.md rename to docs/development_controllers/chip-repl/matter-repl.md diff --git a/docs/guides/python_chip_controller_advanced_usage.md b/docs/development_controllers/chip-repl/python_chip_controller_advanced_usage.md similarity index 100% rename from docs/guides/python_chip_controller_advanced_usage.md rename to docs/development_controllers/chip-repl/python_chip_controller_advanced_usage.md diff --git a/docs/guides/python_chip_controller_building.md b/docs/development_controllers/chip-repl/python_chip_controller_building.md similarity index 99% rename from docs/guides/python_chip_controller_building.md rename to docs/development_controllers/chip-repl/python_chip_controller_building.md index 62e60b819b7db2..aa49adad246f5e 100644 --- a/docs/guides/python_chip_controller_building.md +++ b/docs/development_controllers/chip-repl/python_chip_controller_building.md @@ -39,7 +39,7 @@ Linux (amd64 / aarch64) or macOS. To build and run the Python CHIP controller: 1. Install all necessary packages and prepare the build system. For more - details, see the [Building Matter](BUILDING.md) documentation: + details, see the [Building Matter](../../guides/BUILDING.md) documentation: ``` sudo apt-get update diff --git a/docs/guides/chip_tool_guide.md b/docs/development_controllers/chip-tool/chip_tool_guide.md similarity index 99% rename from docs/guides/chip_tool_guide.md rename to docs/development_controllers/chip-tool/chip_tool_guide.md index 31aa29353c91ab..8aac8daa121812 100644 --- a/docs/guides/chip_tool_guide.md +++ b/docs/development_controllers/chip-tool/chip_tool_guide.md @@ -38,7 +38,8 @@ Before you can use the CHIP Tool, you must compile it from source on Linux To build and run the CHIP Tool: 1. Install all required packages for Matter and prepare the source code and the - build system. Read the [Building Matter](BUILDING.md) guide for instructions. + build system. Read the [Building Matter](../../guides/BUILDING.md) guide for + instructions. 2. Open a command prompt in the `connectedhomeip` directory. 3. Run the following command: diff --git a/docs/development_controllers/chip-tool/index.md b/docs/development_controllers/chip-tool/index.md new file mode 100644 index 00000000000000..69dc7dcd68b131 --- /dev/null +++ b/docs/development_controllers/chip-tool/index.md @@ -0,0 +1,11 @@ +# chip-tool + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +- [chip-tool guide](./chip_tool_guide.md) diff --git a/docs/development_controllers/index.md b/docs/development_controllers/index.md new file mode 100644 index 00000000000000..dfc6b330b1753f --- /dev/null +++ b/docs/development_controllers/index.md @@ -0,0 +1,13 @@ +# Development Controllers + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +chip-repl/index +chip-tool/index +``` + +- [chip-tool](./chip-tool) +- [chip-repl](./chip-repl) diff --git a/docs/getting_started/first_example.md b/docs/getting_started/first_example.md index 89ab7d493d6aa8..14fe239749ab17 100644 --- a/docs/getting_started/first_example.md +++ b/docs/getting_started/first_example.md @@ -26,7 +26,7 @@ for testing. [chip-tool](../../examples/chip-tool/) is a C++ command line controller with an interactive shell. More information on chip-tool can be found in the -[chip-tool guide](../guides/chip_tool_guide.md). +[chip-tool guide](../development_controllers/chip-tool/chip_tool_guide.md). [chip-repl](../../src/controller/python/chip-repl.py) is a shell for the python controller. The chip-repl is part of the python controller framework, often used diff --git a/docs/guides/darwin.md b/docs/guides/darwin.md index 00165e6fcac14f..4692c0b065dc02 100644 --- a/docs/guides/darwin.md +++ b/docs/guides/darwin.md @@ -292,17 +292,17 @@ Example: - [ESP32 Lighting](/examples/lighting-app/esp32/README.md) - [ESP32 Temperature Sensor](/examples/temperature-measurement-app/esp32/README.md) - [mbedOS](/examples/all-clusters-app/mbed/README.md) -- [nRF Connect All Clusters](./nrfconnect_examples_configuration.md) +- [nRF Connect All Clusters](../platforms/nrf/nrfconnect_examples_configuration.md) - [nRF Connect Pump](/examples/pump-app/nrfconnect/README.md) -- [NXP Examples](./nxp/nxp_imx8m_linux_examples.md) +- [NXP Examples](../platforms/nxp/nxp_imx8m_linux_examples.md) - [NXP](/examples/all-clusters-app/nxp/mw320/README.md) - [Infineon CYW30739 Lighting](/examples/lighting-app/infineon/cyw30739/README.md) - [Infineon PSoC6](/examples/all-clusters-app/infineon/psoc6/README.md) - [Qorvo](/examples/lighting-app/qpg/README.md) -- [Silicon Labs](./silabs_getting_started.md) +- [Silicon Labs](../platforms/silabs/silabs_getting_started.md) - [Simulated Linux](./simulated_device_linux.md) - [Telink](/examples/lighting-app/telink/README.md) -- [TI Platform](./ti/ti_matter_overview.md) +- [TI Platform](../platforms/ti/ti_matter_overview.md) - [Tizen](/examples/lighting-app/tizen/README.md) ## Providing Feedback to Apple diff --git a/docs/guides/index.md b/docs/guides/index.md index c1a879277865ed..97167c84ae0b4b 100644 --- a/docs/guides/index.md +++ b/docs/guides/index.md @@ -9,56 +9,13 @@ and features. :hidden: * -bouffalolab/matter_factory_data -esp32/README -nxp/README -ti/ti_matter_overview ``` ## Build Guides - [Building](./BUILDING.md) -## Platform Guides - -- [Android - Building](./android_building.md) -- [Apple - Testing with iPhone, iPad, macOS, Apple TV, HomePod, Watch, etc](./darwin.md) -- [ASR - Getting Started Guide](./asr_getting_started_guide.md) -- [Bouffalo Lab - Matter factory data generation](./bouffalolab/matter_factory_data.md) -- [Espressif (ESP32) - Getting Started Guide](./esp32/README.md) -- [Infineon PSoC6 - Software Update](./infineon_psoc6_software_update.md) -- [Linux - Simulated Devices](./simulated_device_linux.md) -- [mbedOS - Adding a new target](./mbedos_add_new_target.md) -- [mbedOS - Commissioning](./mbedos_commissioning.md) -- [mbedOS - Platform Overview](./mbedos_platform_overview.md) -- [nRF Connect - Android Commissioning](./nrfconnect_android_commissioning.md) -- [nRF Connect - CLI Guide](./nrfconnect_examples_cli.md) -- [nRF Connect - Configuration](./nrfconnect_examples_configuration.md) -- [nRF Connect - Factory Data Configuration](./nrfconnect_factory_data_configuration.md) -- [nRF Connect - Platform Overview](./nrfconnect_platform_overview.md) -- [nRF Connect - Software Update](./nrfconnect_examples_software_update.md) -- [NXP - Getting Started Guide](./nxp/README.md) -- [Silicon Labs - Documentation](https://siliconlabs.github.io/matter/latest/index.html) -- [Silicon Labs - Getting Started](./silabs_getting_started.md) -- [Silicon Labs - Software Update](./silabs_efr32_software_update.md) -- [Silicon Labs - CLI Guide](./silabs_cli_guide.md) -- [TI - Platform Overview](./ti/ti_matter_overview.md) - -## Tool Guides - -- [CHIP Tool](./chip_tool_guide.md) -- [Python Matter-Repl](./matter-repl.md) -- [python-chip-controller - Advanced](./python_chip_controller_advanced_usage.md) -- [python-chip-controller - Building](./python_chip_controller_building.md) -- [CHEF test devices](../../examples/chef/README.md) - - [New device type adding](../../examples/chef/NEW_CHEF_DEVICES.md) - ## Development Guides - [Access Control](./access-control-guide.md) - [Matter IDL tooling and validation](./matter_idl_tooling.md) - -## Setup Guides - -- [Open Thread - Hardware suggestions](./openthread_rcp_nrf_dongle.md) -- [Open Thread - Setting up a Raspberry Pi as a Border Router](./openthread_border_router_pi.md) diff --git a/docs/index.md b/docs/index.md index f4b40622714eae..6b7553f205ae1f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,9 +8,11 @@ PROJECT_FLOW VSCODE_DEVELOPMENT ci-cd/index +development_controllers/index getting_started/index cluster_and_device_type_dev/index guides/index +platforms/index style/index examples/index product_considerations/index diff --git a/docs/guides/android_building.md b/docs/platforms/android/android_building.md similarity index 100% rename from docs/guides/android_building.md rename to docs/platforms/android/android_building.md diff --git a/docs/platforms/android/index.md b/docs/platforms/android/index.md new file mode 100644 index 00000000000000..a8bdd37290997a --- /dev/null +++ b/docs/platforms/android/index.md @@ -0,0 +1,11 @@ +# Android + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +[Android - Building](./android_building.md) diff --git a/docs/guides/asr_getting_started_guide.md b/docs/platforms/asr/asr_getting_started_guide.md similarity index 97% rename from docs/guides/asr_getting_started_guide.md rename to docs/platforms/asr/asr_getting_started_guide.md index e47cc554ef2158..e5a4bac6e2eb21 100644 --- a/docs/guides/asr_getting_started_guide.md +++ b/docs/platforms/asr/asr_getting_started_guide.md @@ -33,7 +33,7 @@ to speed up development. You can find them in the samples with `/asr` subfolder. ## Building the Example Application -- [Setup Matter Environment](./BUILDING.md) +- [Setup Matter Environment](../../guides/BUILDING.md) - Setup toolchain - for ASR582X and ASR550X @@ -140,7 +140,7 @@ There are two commissioning modes supported by ASR platform: `build_examples.py` script. For example: `./scripts/build/build_examples.py --target asr-$ASR_BOARD-lighting-ota build` 2. For more usage details, please refer to the - [OTA example](../../examples/ota-requestor-app/asr/README.md) + [OTA example](../../../examples/ota-requestor-app/asr/README.md) ## Factory diff --git a/docs/platforms/asr/index.md b/docs/platforms/asr/index.md new file mode 100644 index 00000000000000..f4748a4c704511 --- /dev/null +++ b/docs/platforms/asr/index.md @@ -0,0 +1,11 @@ +# ASR + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +[ASR - Getting Started Guide](./asr_getting_started_guide.md) diff --git a/docs/platforms/bouffalolab/index.md b/docs/platforms/bouffalolab/index.md new file mode 100644 index 00000000000000..bacc0e63ca1d25 --- /dev/null +++ b/docs/platforms/bouffalolab/index.md @@ -0,0 +1,11 @@ +# Bouffalolab + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +[Bouffalo Lab - Matter factory data generation](./matter_factory_data.md) diff --git a/docs/guides/bouffalolab/matter_factory_data.md b/docs/platforms/bouffalolab/matter_factory_data.md similarity index 100% rename from docs/guides/bouffalolab/matter_factory_data.md rename to docs/platforms/bouffalolab/matter_factory_data.md diff --git a/docs/guides/esp32/ble_settings.md b/docs/platforms/esp32/ble_settings.md similarity index 100% rename from docs/guides/esp32/ble_settings.md rename to docs/platforms/esp32/ble_settings.md diff --git a/docs/guides/esp32/build_app_and_commission.md b/docs/platforms/esp32/build_app_and_commission.md similarity index 98% rename from docs/guides/esp32/build_app_and_commission.md rename to docs/platforms/esp32/build_app_and_commission.md index 942cb6add83bdc..df295cc49373c9 100644 --- a/docs/guides/esp32/build_app_and_commission.md +++ b/docs/platforms/esp32/build_app_and_commission.md @@ -168,7 +168,7 @@ $ out/debug/chip-tool pairing ble-wifi 12345 MY_SSID MY_PASSWORD 20202021 3840 #### Commissioning the Thread device (ESP32H2) - For ESP32-H2, firstly start OpenThread Border Router, you can either use - [Raspberry Pi OpenThread Border Router](../openthread_border_router_pi.md) + [Raspberry Pi OpenThread Border Router](../openthread/openthread_border_router_pi.md) OR [ESP32 OpenThread Border Router](../../../examples/thread-br-app/esp32/README.md) diff --git a/docs/guides/esp32/config_options.md b/docs/platforms/esp32/config_options.md similarity index 100% rename from docs/guides/esp32/config_options.md rename to docs/platforms/esp32/config_options.md diff --git a/docs/guides/esp32/factory_data.md b/docs/platforms/esp32/factory_data.md similarity index 100% rename from docs/guides/esp32/factory_data.md rename to docs/platforms/esp32/factory_data.md diff --git a/docs/guides/esp32/flash_nvs_encryption.md b/docs/platforms/esp32/flash_nvs_encryption.md similarity index 100% rename from docs/guides/esp32/flash_nvs_encryption.md rename to docs/platforms/esp32/flash_nvs_encryption.md diff --git a/docs/guides/esp32/README.md b/docs/platforms/esp32/index.md similarity index 100% rename from docs/guides/esp32/README.md rename to docs/platforms/esp32/index.md diff --git a/docs/guides/esp32/ota.md b/docs/platforms/esp32/ota.md similarity index 100% rename from docs/guides/esp32/ota.md rename to docs/platforms/esp32/ota.md diff --git a/docs/guides/esp32/providers.md b/docs/platforms/esp32/providers.md similarity index 100% rename from docs/guides/esp32/providers.md rename to docs/platforms/esp32/providers.md diff --git a/docs/guides/esp32/rpc_console.md b/docs/platforms/esp32/rpc_console.md similarity index 100% rename from docs/guides/esp32/rpc_console.md rename to docs/platforms/esp32/rpc_console.md diff --git a/docs/guides/esp32/secure_cert_partition.md b/docs/platforms/esp32/secure_cert_partition.md similarity index 100% rename from docs/guides/esp32/secure_cert_partition.md rename to docs/platforms/esp32/secure_cert_partition.md diff --git a/docs/guides/esp32/setup_idf_chip.md b/docs/platforms/esp32/setup_idf_chip.md similarity index 100% rename from docs/guides/esp32/setup_idf_chip.md rename to docs/platforms/esp32/setup_idf_chip.md diff --git a/docs/guides/esp32/vs_code_development.md b/docs/platforms/esp32/vs_code_development.md similarity index 100% rename from docs/guides/esp32/vs_code_development.md rename to docs/platforms/esp32/vs_code_development.md diff --git a/docs/platforms/index.md b/docs/platforms/index.md new file mode 100644 index 00000000000000..4011f2e4c266b8 --- /dev/null +++ b/docs/platforms/index.md @@ -0,0 +1,35 @@ +# Platform Guides + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +android/index +asr/index +bouffalolab/index +esp32/index +infineon/index +mbedos/index +nrf/index +nxp/index +openiotsdk/index +openthread/index +silabs/index +stm32/index +ti/index +``` + +- [Android](./android/) +- [ASR](./asr/) +- [Bouffalo Lab](./bouffalolab) +- [ESP32](./esp32/) +- [Infineon](./infineon/) +- [MbedOS](./mbedos/) +- [NRF](./nrf/) +- [NXP](./nxp/) +- [OpenIoTSDK](./openiotsdk/) +- [OpenThread](./openthread/) +- [Silabs](./silabs/) +- [STM32](./stm32/) +- [TI](./ti/) diff --git a/docs/platforms/infineon/index.md b/docs/platforms/infineon/index.md new file mode 100644 index 00000000000000..7784db777f1f20 --- /dev/null +++ b/docs/platforms/infineon/index.md @@ -0,0 +1,12 @@ +# Infineon + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +[Provisioning](./infineon_psoc6_software_update.md) +[Software update](./infineon_psoc6_software_update.md) diff --git a/docs/guides/infineon_psoc6_software_update.md b/docs/platforms/infineon/infineon_psoc6_software_update.md similarity index 100% rename from docs/guides/infineon_psoc6_software_update.md rename to docs/platforms/infineon/infineon_psoc6_software_update.md diff --git a/docs/guides/infineon_trustm_provisioning.md b/docs/platforms/infineon/infineon_trustm_provisioning.md similarity index 100% rename from docs/guides/infineon_trustm_provisioning.md rename to docs/platforms/infineon/infineon_trustm_provisioning.md diff --git a/docs/guides/images/matter_mbedos_overview_simplified.png b/docs/platforms/mbedos/images/matter_mbedos_overview_simplified.png similarity index 100% rename from docs/guides/images/matter_mbedos_overview_simplified.png rename to docs/platforms/mbedos/images/matter_mbedos_overview_simplified.png diff --git a/docs/platforms/mbedos/index.md b/docs/platforms/mbedos/index.md new file mode 100644 index 00000000000000..5c29ab774de2bc --- /dev/null +++ b/docs/platforms/mbedos/index.md @@ -0,0 +1,13 @@ +# MbedOS + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +[Add new target](./mbedos_add_new_target.md) +[Commissioning](./mbedos_commissioning.md) +[Platform overview](./mbedos_platform_overview.md) diff --git a/docs/guides/mbedos_add_new_target.md b/docs/platforms/mbedos/mbedos_add_new_target.md similarity index 100% rename from docs/guides/mbedos_add_new_target.md rename to docs/platforms/mbedos/mbedos_add_new_target.md diff --git a/docs/guides/mbedos_commissioning.md b/docs/platforms/mbedos/mbedos_commissioning.md similarity index 96% rename from docs/guides/mbedos_commissioning.md rename to docs/platforms/mbedos/mbedos_commissioning.md index 8b6987878aacb8..1d6dc7243c053e 100644 --- a/docs/guides/mbedos_commissioning.md +++ b/docs/platforms/mbedos/mbedos_commissioning.md @@ -58,7 +58,7 @@ To make provisioning possible and to control the Matter device from your Android based smartphone, you must first build and install the CHIPTool application. To build the CHIPTool application for your smartphone, read -[Android building guide](android_building.md). +[Android building guide](../android/android_building.md). After building, install the application by completing the following steps: @@ -154,7 +154,7 @@ brightness between 0-255. If **Lighting LED** is available then brightness change can be observed. > For more details about Android CHIPTool please visit -> [CHIPTool](../../examples/android/CHIPTool/README.md) +> [CHIPTool](../../../examples/android/CHIPTool/README.md) ## POSIX CLI CHIPTool @@ -164,7 +164,7 @@ To make provisioning possible and to control the Matter device from Linux-based device, you can build and run the Matter Client example application on it. To build the POSIX CLI CHIPTool application check the guide -[POSIX CLI guide](../../examples/chip-tool/README.md). +[POSIX CLI guide](../../../examples/chip-tool/README.md). ### Device commissioning for CLI @@ -196,7 +196,7 @@ For example: The client will send a single command packet and then exit. > For more details about POSIX CLI CHIPTool please visit -> [POSIX CLI CHIPTool](../../examples/chip-tool/README.md) +> [POSIX CLI CHIPTool](../../../examples/chip-tool/README.md) ## Python Device Controller @@ -206,7 +206,7 @@ To make provisioning possible and to control the Matter device with Python application, you can build and run the Python CHIP controller. To build and install the Python Device Controller application check the guide -[Python Device Controller guide](python_chip_controller_building.md). +[Python Device Controller guide](../../development_controllers/chip-repl/python_chip_controller_building.md). ### Device commissioning for Python Device Controller diff --git a/docs/guides/mbedos_platform_overview.md b/docs/platforms/mbedos/mbedos_platform_overview.md similarity index 95% rename from docs/guides/mbedos_platform_overview.md rename to docs/platforms/mbedos/mbedos_platform_overview.md index b70d5ed89cc1ba..8cdce2c20c253e 100644 --- a/docs/guides/mbedos_platform_overview.md +++ b/docs/platforms/mbedos/mbedos_platform_overview.md @@ -85,11 +85,11 @@ needed to perform communication through the Matter stack. Sample Matter applications are provided for the Mbed OS platform. They can be used to speed up development: -- [shell](../../examples/shell/mbed/README.md) -- [all-clusters-app](../../examples/all-clusters-app/mbed/README.md) -- [lock-app](../../examples/lock-app/mbed/README.md) -- [lighting-app](../../examples/lighting-app/mbed/README.md) -- [pigweed-app](../../examples/pigweed-app/mbed/README.md) +- [shell](../../../examples/shell/mbed/README.md) +- [all-clusters-app](../../../examples/all-clusters-app/mbed/README.md) +- [lock-app](../../../examples/lock-app/mbed/README.md) +- [lighting-app](../../../examples/lighting-app/mbed/README.md) +- [pigweed-app](../../../examples/pigweed-app/mbed/README.md) ### Example configuration diff --git a/docs/guides/images/CHIPTool_device_commissioned.png b/docs/platforms/nrf/images/CHIPTool_device_commissioned.png similarity index 100% rename from docs/guides/images/CHIPTool_device_commissioned.png rename to docs/platforms/nrf/images/CHIPTool_device_commissioned.png diff --git a/docs/guides/images/matter_nrfconnect_overview_simplified_ncs.svg b/docs/platforms/nrf/images/matter_nrfconnect_overview_simplified_ncs.svg similarity index 100% rename from docs/guides/images/matter_nrfconnect_overview_simplified_ncs.svg rename to docs/platforms/nrf/images/matter_nrfconnect_overview_simplified_ncs.svg diff --git a/docs/guides/images/nrfconnect_android_connectivity.png b/docs/platforms/nrf/images/nrfconnect_android_connectivity.png similarity index 100% rename from docs/guides/images/nrfconnect_android_connectivity.png rename to docs/platforms/nrf/images/nrfconnect_android_connectivity.png diff --git a/docs/platforms/nrf/index.md b/docs/platforms/nrf/index.md new file mode 100644 index 00000000000000..bf74c43fcc9722 --- /dev/null +++ b/docs/platforms/nrf/index.md @@ -0,0 +1,16 @@ +# NRF + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +[Android Commissioning](./nrfconnect_android_commissioning.md) +[Examples CLI](./nrfconnect_examples_cli.md) +[Examples configuration](./nrfconnect_examples_configuration.md) +[Examples Software update](./nrfconnect_examples_software_update.md) +[Factory data](./nrfconnect_factory_data_configuration.md) +[Platform overview](./nrfconnect_platform_overview.md) diff --git a/docs/guides/nrfconnect_android_commissioning.md b/docs/platforms/nrf/nrfconnect_android_commissioning.md similarity index 94% rename from docs/guides/nrfconnect_android_commissioning.md rename to docs/platforms/nrf/nrfconnect_android_commissioning.md index 0c93f4579298e5..9c6358d501adbd 100644 --- a/docs/guides/nrfconnect_android_commissioning.md +++ b/docs/platforms/nrf/nrfconnect_android_commissioning.md @@ -1,7 +1,7 @@ # Commissioning nRF Connect Accessory using Android CHIPTool -You can use [CHIPTool](android_building.md) for Android smartphones to -commission a Nordic Semiconductor's development kit programmed with a Matter +You can use [CHIPTool](../android/android_building.md) for Android smartphones +to commission a Nordic Semiconductor's development kit programmed with a Matter example for the nRF Connect platform into a Matter fabric. This guide references the nRF52840 DK and Matter nRF Connect Lighting Example @@ -86,9 +86,10 @@ accessory using Android CHIPTool: > _Note:_ This step is only needed if you're testing a Thread device. Skip it if > the tested device operates in a Wi-Fi network. -Follow the [OpenThread Border Router](openthread_border_router_pi.md) article to -set up OpenThread Border Router on the Raspberry Pi, with either the nRF52840 DK -or the nRF52840 Dongle acting as the +Follow the +[OpenThread Border Router](../openthread/openthread_border_router_pi.md) article +to set up OpenThread Border Router on the Raspberry Pi, with either the nRF52840 +DK or the nRF52840 Dongle acting as the [OpenThread Radio Co-Processor](https://openthread.io/platforms/co-processor). During the setup, make sure that the Raspberry Pi is connected to your Wi-Fi Access Point. @@ -107,7 +108,7 @@ Application to learn how to build and program the example onto an nRF52840 DK. ## Building and installing Android CHIPTool To build the CHIPTool application for your smartphone, read the -[Building Android](android_building.md) guide. +[Building Android](../android/android_building.md) guide. After building, install the application by completing the following steps: diff --git a/docs/guides/nrfconnect_examples_cli.md b/docs/platforms/nrf/nrfconnect_examples_cli.md similarity index 100% rename from docs/guides/nrfconnect_examples_cli.md rename to docs/platforms/nrf/nrfconnect_examples_cli.md diff --git a/docs/guides/nrfconnect_examples_configuration.md b/docs/platforms/nrf/nrfconnect_examples_configuration.md similarity index 100% rename from docs/guides/nrfconnect_examples_configuration.md rename to docs/platforms/nrf/nrfconnect_examples_configuration.md diff --git a/docs/guides/nrfconnect_examples_software_update.md b/docs/platforms/nrf/nrfconnect_examples_software_update.md similarity index 99% rename from docs/guides/nrfconnect_examples_software_update.md rename to docs/platforms/nrf/nrfconnect_examples_software_update.md index d295bae47667a3..5f3ab2055d702c 100644 --- a/docs/guides/nrfconnect_examples_software_update.md +++ b/docs/platforms/nrf/nrfconnect_examples_software_update.md @@ -17,7 +17,7 @@ protocols: > **_NOTE:_** The procedure presented below requires that you have OpenThread > Border Router (OTBR) set up either in Docker or on a Raspberry Pi. Read -> [Setup OpenThread Border Router on Raspberry Pi](openthread_border_router_pi.md) +> [Setup OpenThread Border Router on Raspberry Pi](../openthread/openthread_border_router_pi.md) > to learn how to install the OTBR on a Raspberry Pi. The DFU over Matter involves two kinds of nodes: @@ -94,7 +94,6 @@ To test the DFU over Matter, you need to complete the following steps: 10. Initiate the DFU procedure in one of the following ways: - - If you have built the device firmware with `-DCONFIG_CHIP_LIB_SHELL=y` option, which enables Matter shell commands, run the following command on the device shell: diff --git a/docs/guides/nrfconnect_factory_data_configuration.md b/docs/platforms/nrf/nrfconnect_factory_data_configuration.md similarity index 99% rename from docs/guides/nrfconnect_factory_data_configuration.md rename to docs/platforms/nrf/nrfconnect_factory_data_configuration.md index 886acc9b3049d3..0c3f6c1d47ce92 100644 --- a/docs/guides/nrfconnect_factory_data_configuration.md +++ b/docs/platforms/nrf/nrfconnect_factory_data_configuration.md @@ -813,8 +813,8 @@ Alternatively, you can add the relevant Kconfig option lines to the example's You can edit all configuration options using the interactive Kconfig interface. See the -[Configuring nRF Connect examples](../guides/nrfconnect_examples_configuration.md) -page for information about how to configure Kconfig options. +[Configuring nRF Connect examples](./nrfconnect_examples_configuration.md) page +for information about how to configure Kconfig options. In the configuration window, expand the items `Modules -> connectedhomeip (/home/arbl/matter/connectedhomeip/config/nrfconnect/chip-module) -> Connected Home over IP protocol stack`. diff --git a/docs/guides/nrfconnect_platform_overview.md b/docs/platforms/nrf/nrfconnect_platform_overview.md similarity index 100% rename from docs/guides/nrfconnect_platform_overview.md rename to docs/platforms/nrf/nrfconnect_platform_overview.md diff --git a/docs/guides/nxp/README.md b/docs/platforms/nxp/index.md similarity index 100% rename from docs/guides/nxp/README.md rename to docs/platforms/nxp/index.md diff --git a/docs/guides/nxp/nxp_imx8m_linux_examples.md b/docs/platforms/nxp/nxp_imx8m_linux_examples.md similarity index 100% rename from docs/guides/nxp/nxp_imx8m_linux_examples.md rename to docs/platforms/nxp/nxp_imx8m_linux_examples.md diff --git a/docs/guides/nxp/nxp_k32w0_ota_guide.md b/docs/platforms/nxp/nxp_k32w0_ota_guide.md similarity index 100% rename from docs/guides/nxp/nxp_k32w0_ota_guide.md rename to docs/platforms/nxp/nxp_k32w0_ota_guide.md diff --git a/docs/guides/nxp/nxp_k32w_android_commissioning.md b/docs/platforms/nxp/nxp_k32w_android_commissioning.md similarity index 100% rename from docs/guides/nxp/nxp_k32w_android_commissioning.md rename to docs/platforms/nxp/nxp_k32w_android_commissioning.md diff --git a/docs/guides/nxp/nxp_manufacturing_flow.md b/docs/platforms/nxp/nxp_manufacturing_flow.md similarity index 100% rename from docs/guides/nxp/nxp_manufacturing_flow.md rename to docs/platforms/nxp/nxp_manufacturing_flow.md diff --git a/docs/guides/nxp/nxp_mcxw71_ota_guide.md b/docs/platforms/nxp/nxp_mcxw71_ota_guide.md similarity index 100% rename from docs/guides/nxp/nxp_mcxw71_ota_guide.md rename to docs/platforms/nxp/nxp_mcxw71_ota_guide.md diff --git a/docs/guides/nxp/nxp_otbr_guide.md b/docs/platforms/nxp/nxp_otbr_guide.md similarity index 100% rename from docs/guides/nxp/nxp_otbr_guide.md rename to docs/platforms/nxp/nxp_otbr_guide.md diff --git a/docs/guides/nxp/nxp_rw61x_ota_software_update.md b/docs/platforms/nxp/nxp_rw61x_ota_software_update.md similarity index 100% rename from docs/guides/nxp/nxp_rw61x_ota_software_update.md rename to docs/platforms/nxp/nxp_rw61x_ota_software_update.md diff --git a/docs/guides/nxp/nxp_zephyr_ota_software_update.md b/docs/platforms/nxp/nxp_zephyr_ota_software_update.md similarity index 100% rename from docs/guides/nxp/nxp_zephyr_ota_software_update.md rename to docs/platforms/nxp/nxp_zephyr_ota_software_update.md diff --git a/docs/platforms/openiotsdk/index.md b/docs/platforms/openiotsdk/index.md new file mode 100644 index 00000000000000..8bd73c46e193c9 --- /dev/null +++ b/docs/platforms/openiotsdk/index.md @@ -0,0 +1,15 @@ +# OpenIoTSDK + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +[Commissioning](./openiotsdk_commissioning.md) +[Examples software update](./openiotsdk_examples_software_update.md) +[Examples](./openiotsdk_examples.md) +[Platform overview](./openiotsdk_platform_overview.md) +[Unit tests](./openiotsdk_unit_tests.md) diff --git a/docs/guides/openiotsdk_commissioning.md b/docs/platforms/openiotsdk/openiotsdk_commissioning.md similarity index 90% rename from docs/guides/openiotsdk_commissioning.md rename to docs/platforms/openiotsdk/openiotsdk_commissioning.md index 520cff033d611d..969b304228bf56 100644 --- a/docs/guides/openiotsdk_commissioning.md +++ b/docs/platforms/openiotsdk/openiotsdk_commissioning.md @@ -9,11 +9,11 @@ connected to the IP network and do not require credentials provisioning. ## Building Matter controller -The [Matter controller](../../src/controller/README.md) is a client application -that allows commission and control of the Matter node. +The [Matter controller](../../../src/controller/README.md) is a client +application that allows commission and control of the Matter node. -The [POSIX CLI chip-tool](../../examples/chip-tool/README.md) is the recommended -Matter controller to use with Open IoT SDK devices. +The [POSIX CLI chip-tool](../../../examples/chip-tool/README.md) is the +recommended Matter controller to use with Open IoT SDK devices. To build `chip-tool` execute command: diff --git a/docs/guides/openiotsdk_examples.md b/docs/platforms/openiotsdk/openiotsdk_examples.md similarity index 98% rename from docs/guides/openiotsdk_examples.md rename to docs/platforms/openiotsdk/openiotsdk_examples.md index b80ce6304f9ba0..c91863a1b7658c 100644 --- a/docs/guides/openiotsdk_examples.md +++ b/docs/platforms/openiotsdk/openiotsdk_examples.md @@ -22,7 +22,7 @@ You can use these examples as a reference for creating your own applications. The VSCode devcontainer has all the dependencies pre-installed. It is the recommended way to build, run and develop with the Open IoT SDK port of the Matter Project. Please read this -[VSCode development guide](../VSCODE_DEVELOPMENT.md) for more information. +[VSCode development guide](../../VSCODE_DEVELOPMENT.md) for more information. Before building the examples, check out the Matter repository and sync Open IoT SDK submodules using the following command: @@ -347,11 +347,11 @@ provides the `-K,--kvsfile` option to use the persistence options listed above. Open IoT SDK port supports two crypto backend implementations: -- [Mbed TLS](../guides/openiotsdk_platform_overview.md#mbed-tls) - it's the - default option +- [Mbed TLS](./openiotsdk_platform_overview.md#mbed-tls) - it's the default + option - [PSA crypto service](https://tf-m-user-guide.trustedfirmware.org/integration_guide/services/tfm_crypto_integration_guide.html) from the - [TrustedFirmware-M (TF-M)](../guides/openiotsdk_platform_overview.md#trusted-firmware-m) + [TrustedFirmware-M (TF-M)](./openiotsdk_platform_overview.md#trusted-firmware-m) component The CMake variable `CONFIG_CHIP_CRYPTO` controls how cryptographic operations diff --git a/docs/guides/openiotsdk_examples_software_update.md b/docs/platforms/openiotsdk/openiotsdk_examples_software_update.md similarity index 95% rename from docs/guides/openiotsdk_examples_software_update.md rename to docs/platforms/openiotsdk/openiotsdk_examples_software_update.md index 73129b84e50966..686d95b8b7a058 100644 --- a/docs/guides/openiotsdk_examples_software_update.md +++ b/docs/platforms/openiotsdk/openiotsdk_examples_software_update.md @@ -19,12 +19,12 @@ The last required element is a Matter controller. This application controls both nodes and manages the entire software update process. In the procedure described below, the `OTA Provider` will be a -[Linux application](../../examples/ota-provider-app/linux/README.md) and the +[Linux application](../../../examples/ota-provider-app/linux/README.md) and the Open IoT SDK example with [DFU support](./openiotsdk_examples.md#device-firmware-update) will work as the -OTA Requestor. The [chip-tool](../../examples/chip-tool/README.md) application -used as the Matter controller. Each application should be launched in a separate -terminal. +OTA Requestor. The [chip-tool](../../../examples/chip-tool/README.md) +application used as the Matter controller. Each application should be launched +in a separate terminal. List of `OIS` examples that currently support the `DFU` over Matter: @@ -41,7 +41,7 @@ List of `OIS` examples that currently support the `DFU` over Matter: ``` More details about the `OTA provider` application can be found - [here](../../examples/ota-provider-app/linux/README.md). + [here](../../../examples/ota-provider-app/linux/README.md). 3. Build `chip-tool`: @@ -50,7 +50,7 @@ List of `OIS` examples that currently support the `DFU` over Matter: ``` More details about the `chip-tool` application can be found - [here](../../examples/chip-tool/README.md). + [here](../../../examples/chip-tool/README.md). 4. Build `OIS` example application diff --git a/docs/guides/openiotsdk_platform_overview.md b/docs/platforms/openiotsdk/openiotsdk_platform_overview.md similarity index 100% rename from docs/guides/openiotsdk_platform_overview.md rename to docs/platforms/openiotsdk/openiotsdk_platform_overview.md diff --git a/docs/guides/openiotsdk_unit_tests.md b/docs/platforms/openiotsdk/openiotsdk_unit_tests.md similarity index 100% rename from docs/guides/openiotsdk_unit_tests.md rename to docs/platforms/openiotsdk/openiotsdk_unit_tests.md diff --git a/docs/platforms/openthread/index.md b/docs/platforms/openthread/index.md new file mode 100644 index 00000000000000..a4926817e2ffc7 --- /dev/null +++ b/docs/platforms/openthread/index.md @@ -0,0 +1,12 @@ +# OpenThread + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +[Border Router](./openthread_border_router_pi.md) +[NRF dongle](./openthread_rcp_nrf_dongle.md) diff --git a/docs/guides/openthread_border_router_pi.md b/docs/platforms/openthread/openthread_border_router_pi.md similarity index 100% rename from docs/guides/openthread_border_router_pi.md rename to docs/platforms/openthread/openthread_border_router_pi.md diff --git a/docs/guides/openthread_rcp_nrf_dongle.md b/docs/platforms/openthread/openthread_rcp_nrf_dongle.md similarity index 100% rename from docs/guides/openthread_rcp_nrf_dongle.md rename to docs/platforms/openthread/openthread_rcp_nrf_dongle.md diff --git a/docs/guides/images/silabs_logo.png b/docs/platforms/silabs/images/silabs_logo.png similarity index 100% rename from docs/guides/images/silabs_logo.png rename to docs/platforms/silabs/images/silabs_logo.png diff --git a/docs/platforms/silabs/index.md b/docs/platforms/silabs/index.md new file mode 100644 index 00000000000000..3e743df0cbb552 --- /dev/null +++ b/docs/platforms/silabs/index.md @@ -0,0 +1,14 @@ +# Silabs + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +[CLI guide](./silabs_cli_guide.md) +[Common app behavior](./silabs_common_app_behavior.md) +[EFR32 software update](./silabs_efr32_software_update.md) +[Getting Started](./silabs_getting_started.md) diff --git a/docs/guides/silabs_cli_guide.md b/docs/platforms/silabs/silabs_cli_guide.md similarity index 100% rename from docs/guides/silabs_cli_guide.md rename to docs/platforms/silabs/silabs_cli_guide.md diff --git a/docs/guides/silabs_common_app_behavior.md b/docs/platforms/silabs/silabs_common_app_behavior.md similarity index 100% rename from docs/guides/silabs_common_app_behavior.md rename to docs/platforms/silabs/silabs_common_app_behavior.md diff --git a/docs/guides/silabs_efr32_software_update.md b/docs/platforms/silabs/silabs_efr32_software_update.md similarity index 98% rename from docs/guides/silabs_efr32_software_update.md rename to docs/platforms/silabs/silabs_efr32_software_update.md index 9f94753aa7d29f..6bdce3d40d2f96 100644 --- a/docs/guides/silabs_efr32_software_update.md +++ b/docs/platforms/silabs/silabs_efr32_software_update.md @@ -118,7 +118,7 @@ to 2). Starting the ota-provider-app with the --otaImageList command line option allows the user to supply a JSON file specifying the Software Version, Vendor and Product ID that identify the image served by the Provider, see -[ota-provider-app](../../examples/ota-provider-app/linux/README.md) +[ota-provider-app](../../../examples/ota-provider-app/linux/README.md) Example provider configuration file: diff --git a/docs/guides/silabs_getting_started.md b/docs/platforms/silabs/silabs_getting_started.md similarity index 100% rename from docs/guides/silabs_getting_started.md rename to docs/platforms/silabs/silabs_getting_started.md diff --git a/docs/platforms/stm32/index.md b/docs/platforms/stm32/index.md new file mode 100644 index 00000000000000..7b0d56ce3e6004 --- /dev/null +++ b/docs/platforms/stm32/index.md @@ -0,0 +1,11 @@ +# ESP32 + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +``` + +[Getting Started Guide](./stm32_getting_started_guide.md) diff --git a/docs/guides/stm32_getting_started_guide.md b/docs/platforms/stm32/stm32_getting_started_guide.md similarity index 98% rename from docs/guides/stm32_getting_started_guide.md rename to docs/platforms/stm32/stm32_getting_started_guide.md index 55f856cbc0e872..954dde35c009db 100644 --- a/docs/guides/stm32_getting_started_guide.md +++ b/docs/platforms/stm32/stm32_getting_started_guide.md @@ -28,7 +28,7 @@ subfolder. ## Building the Example Application -- [Set Up Matter Environment](./BUILDING.md) +- [Set Up Matter Environment](../../guides/BUILDING.md) - Set up STLINK tools diff --git a/docs/guides/images/matter_ti_overview_simplified.png b/docs/platforms/ti/images/matter_ti_overview_simplified.png similarity index 100% rename from docs/guides/images/matter_ti_overview_simplified.png rename to docs/platforms/ti/images/matter_ti_overview_simplified.png diff --git a/docs/guides/images/matter_ti_overview_wifi.png b/docs/platforms/ti/images/matter_ti_overview_wifi.png similarity index 100% rename from docs/guides/images/matter_ti_overview_wifi.png rename to docs/platforms/ti/images/matter_ti_overview_wifi.png diff --git a/docs/platforms/ti/index.md b/docs/platforms/ti/index.md new file mode 100644 index 00000000000000..aa49ab94d1c994 --- /dev/null +++ b/docs/platforms/ti/index.md @@ -0,0 +1,17 @@ +# TI + +```{toctree} +:glob: +:maxdepth: 1 +:hidden: + +* +matter-migration-guide/* +matter-syscfg/* +matter-users-guide/* +``` + +- [Overview](./ti_matter_overview.md) +- [Matter migration guide](./matter-migration-guide/) +- [Syscfg](./matter-syscfg/) +- [User guide](./matter-users-guide/) diff --git a/docs/guides/ti/matter-migration-guide/matter_cc2674_migration.md b/docs/platforms/ti/matter-migration-guide/matter_cc2674_migration.md similarity index 100% rename from docs/guides/ti/matter-migration-guide/matter_cc2674_migration.md rename to docs/platforms/ti/matter-migration-guide/matter_cc2674_migration.md diff --git a/docs/guides/ti/matter-syscfg/getting-started.md b/docs/platforms/ti/matter-syscfg/getting-started.md similarity index 100% rename from docs/guides/ti/matter-syscfg/getting-started.md rename to docs/platforms/ti/matter-syscfg/getting-started.md diff --git a/docs/guides/ti/matter-syscfg/images/board_view.png b/docs/platforms/ti/matter-syscfg/images/board_view.png similarity index 100% rename from docs/guides/ti/matter-syscfg/images/board_view.png rename to docs/platforms/ti/matter-syscfg/images/board_view.png diff --git a/docs/guides/ti/matter-syscfg/images/generated_files_ble.png b/docs/platforms/ti/matter-syscfg/images/generated_files_ble.png similarity index 100% rename from docs/guides/ti/matter-syscfg/images/generated_files_ble.png rename to docs/platforms/ti/matter-syscfg/images/generated_files_ble.png diff --git a/docs/guides/ti/matter-syscfg/images/hardware_view.png b/docs/platforms/ti/matter-syscfg/images/hardware_view.png similarity index 100% rename from docs/guides/ti/matter-syscfg/images/hardware_view.png rename to docs/platforms/ti/matter-syscfg/images/hardware_view.png diff --git a/docs/guides/ti/matter-syscfg/images/reserve-gpio.png b/docs/platforms/ti/matter-syscfg/images/reserve-gpio.png similarity index 100% rename from docs/guides/ti/matter-syscfg/images/reserve-gpio.png rename to docs/platforms/ti/matter-syscfg/images/reserve-gpio.png diff --git a/docs/guides/ti/matter-syscfg/images/reserve-peripheral-panel.png b/docs/platforms/ti/matter-syscfg/images/reserve-peripheral-panel.png similarity index 100% rename from docs/guides/ti/matter-syscfg/images/reserve-peripheral-panel.png rename to docs/platforms/ti/matter-syscfg/images/reserve-peripheral-panel.png diff --git a/docs/guides/ti/matter-syscfg/images/show_generated_files_tab.png b/docs/platforms/ti/matter-syscfg/images/show_generated_files_tab.png similarity index 100% rename from docs/guides/ti/matter-syscfg/images/show_generated_files_tab.png rename to docs/platforms/ti/matter-syscfg/images/show_generated_files_tab.png diff --git a/docs/guides/ti/matter-syscfg/sysconfig-board.md b/docs/platforms/ti/matter-syscfg/sysconfig-board.md similarity index 100% rename from docs/guides/ti/matter-syscfg/sysconfig-board.md rename to docs/platforms/ti/matter-syscfg/sysconfig-board.md diff --git a/docs/guides/ti/matter-users-guide/enabling_icd_on_ti_devices.md b/docs/platforms/ti/matter-users-guide/enabling_icd_on_ti_devices.md similarity index 100% rename from docs/guides/ti/matter-users-guide/enabling_icd_on_ti_devices.md rename to docs/platforms/ti/matter-users-guide/enabling_icd_on_ti_devices.md diff --git a/docs/guides/ti/matter-users-guide/images/cc13x4_memmap.png b/docs/platforms/ti/matter-users-guide/images/cc13x4_memmap.png similarity index 100% rename from docs/guides/ti/matter-users-guide/images/cc13x4_memmap.png rename to docs/platforms/ti/matter-users-guide/images/cc13x4_memmap.png diff --git a/docs/guides/ti/matter-users-guide/images/factory_data_overview.png b/docs/platforms/ti/matter-users-guide/images/factory_data_overview.png similarity index 100% rename from docs/guides/ti/matter-users-guide/images/factory_data_overview.png rename to docs/platforms/ti/matter-users-guide/images/factory_data_overview.png diff --git a/docs/guides/ti/matter-users-guide/ti_factory_data_user_guide.md b/docs/platforms/ti/matter-users-guide/ti_factory_data_user_guide.md similarity index 100% rename from docs/guides/ti/matter-users-guide/ti_factory_data_user_guide.md rename to docs/platforms/ti/matter-users-guide/ti_factory_data_user_guide.md diff --git a/docs/guides/ti/matter-users-guide/ti_openthread_library_usage.md b/docs/platforms/ti/matter-users-guide/ti_openthread_library_usage.md similarity index 100% rename from docs/guides/ti/matter-users-guide/ti_openthread_library_usage.md rename to docs/platforms/ti/matter-users-guide/ti_openthread_library_usage.md diff --git a/docs/guides/ti/ti_matter_overview.md b/docs/platforms/ti/ti_matter_overview.md similarity index 99% rename from docs/guides/ti/ti_matter_overview.md rename to docs/platforms/ti/ti_matter_overview.md index 44943fa46ba871..176ea26d95a4db 100644 --- a/docs/guides/ti/ti_matter_overview.md +++ b/docs/platforms/ti/ti_matter_overview.md @@ -103,7 +103,7 @@ by the platform implementation files. Below are several resources available for Matter development: - [Matter Protocol Overview](https://handbook.buildwithmatter.com/howitworks/roles/) -- [Matter Build Guide](../BUILDING.md) +- [Matter Build Guide](../../guides/BUILDING.md) - [Matter over Thread Getting Started](https://dev.ti.com/tirex/explore/node?node=A__AciOYyNq9gli.nsvJzBtQg__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST) - [TI Matter over Wi-Fi Getting Started](https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1122413/faq-cc3235sf-matter----getting-started-guide) - [TI Matter Application Development](https://dev.ti.com/tirex/explore/node?node=A__AXNOPYikmtBCHJ-L6eRivA__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST) diff --git a/examples/air-purifier-app/linux/README.md b/examples/air-purifier-app/linux/README.md index 2d771bdf5b5ff4..377d53a0965c31 100644 --- a/examples/air-purifier-app/linux/README.md +++ b/examples/air-purifier-app/linux/README.md @@ -11,7 +11,7 @@ Temperature Sensor and Endpoint 5 is a Thermostat. To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for +[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details.
diff --git a/examples/air-quality-sensor-app/linux/README.md b/examples/air-quality-sensor-app/linux/README.md index ef90a4bd23df9f..158cd0d2deba6c 100644 --- a/examples/air-quality-sensor-app/linux/README.md +++ b/examples/air-quality-sensor-app/linux/README.md @@ -7,7 +7,7 @@ for Raspberry Pi Desktop 20.10 (aarch64)** To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for +[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details.
diff --git a/examples/air-quality-sensor-app/silabs/README.md b/examples/air-quality-sensor-app/silabs/README.md index d0e89d363dd7b9..7279e23457ef01 100644 --- a/examples/air-quality-sensor-app/silabs/README.md +++ b/examples/air-quality-sensor-app/silabs/README.md @@ -330,7 +330,7 @@ tracking code inside the `trackAlloc` and `trackFree` function For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) ## Building options diff --git a/examples/all-clusters-app/asr/README.md b/examples/all-clusters-app/asr/README.md index bde062feab4445..6e31c18ac29a3c 100755 --- a/examples/all-clusters-app/asr/README.md +++ b/examples/all-clusters-app/asr/README.md @@ -15,7 +15,7 @@ control on ASR platform. ## Building and Commissioning Please refer -[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application) +[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application) guides to get started ``` diff --git a/examples/all-clusters-app/esp32/README.md b/examples/all-clusters-app/esp32/README.md index 0a3145dbc24da2..8e6ef5a61d8f22 100644 --- a/examples/all-clusters-app/esp32/README.md +++ b/examples/all-clusters-app/esp32/README.md @@ -4,16 +4,16 @@ A prototype application that demonstrates device commissioning and cluster control. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. --- - [Cluster control](#cluster-control) -- [Matter OTA guide](../../../docs/guides/esp32/ota.md) -- [RPC console and Device Tracing](../../../docs/guides/esp32/rpc_console.md) +- [Matter OTA guide](../../../docs/platforms/esp32/ota.md) +- [RPC console and Device Tracing](../../../docs/platforms/esp32/rpc_console.md) - [Multiple Network Interfaces](#multiple-network-interfaces) --- diff --git a/examples/all-clusters-app/infineon/psoc6/README.md b/examples/all-clusters-app/infineon/psoc6/README.md index 138f132f7a0dba..b4faa2e9ea4503 100644 --- a/examples/all-clusters-app/infineon/psoc6/README.md +++ b/examples/all-clusters-app/infineon/psoc6/README.md @@ -126,4 +126,4 @@ commands. These power cycle the BlueTooth hardware and disable BR/EDR mode. For the description of Software Update process with infineon PSoC6 example applications see -[Infineon PSoC6 OTA Software Update](../../../../docs/guides/infineon_psoc6_software_update.md) +[Infineon PSoC6 OTA Software Update](../../../../docs/platforms/infineon/infineon_psoc6_software_update.md) diff --git a/examples/all-clusters-app/mbed/README.md b/examples/all-clusters-app/mbed/README.md index 0952e18914bf16..f5d0a78b290e19 100644 --- a/examples/all-clusters-app/mbed/README.md +++ b/examples/all-clusters-app/mbed/README.md @@ -225,7 +225,8 @@ the terminal. #### CHIP Tools -Read the [MbedCommissioning](../../../docs/guides/mbedos_commissioning.md) to +Read the +[MbedCommissioning](../../../docs/platforms/mbedos/mbedos_commissioning.md) to see how to use different CHIP tools to commission and control the application within a WiFi network. @@ -239,7 +240,7 @@ within a WiFi network. - More details and guidelines about porting new hardware into the Matter project with Mbed OS can be found in - [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) + [MbedNewTarget](../../../docs/platforms/mbedos/mbedos_add_new_target.md) - Some useful information about HW platform specific settings can be found in `all-clusters-app/mbed/mbed_app.json`. Information about this file syntax and its meaning in mbed-os project can be found here: diff --git a/examples/all-clusters-app/nrfconnect/README.md b/examples/all-clusters-app/nrfconnect/README.md index 3a58e448d76254..4c51e52a1ffb4c 100644 --- a/examples/all-clusters-app/nrfconnect/README.md +++ b/examples/all-clusters-app/nrfconnect/README.md @@ -43,7 +43,7 @@ This example is running on the nRF Connect platform, which is based on Nordic Semiconductor's [nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html) and [Zephyr RTOS](https://zephyrproject.org/). Visit Matter's -[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md) +[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md) to read more about the platform structure and dependencies. By default, the Matter accessory device has IPv6 networking disabled. You must @@ -183,7 +183,7 @@ following states are possible: **SEGGER J-Link USB port** can be used to get logs from the device or communicate with it using the -[command line interface](../../../docs/guides/nrfconnect_examples_cli.md). +[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md).
@@ -379,7 +379,7 @@ depending on the selected board: those platforms support the DFU. For more information, see the -[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md) +[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md) page.
@@ -414,19 +414,20 @@ to read more about flashing on the nRF52840 Dongle. ## Testing the example -Check the [CLI tutorial](../../../docs/guides/nrfconnect_examples_cli.md) to -learn how to use command-line interface of the application. +Check the [CLI tutorial](../../../docs/platforms/nrf/nrfconnect_examples_cli.md) +to learn how to use command-line interface of the application. ### Testing using Linux CHIPTool -Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to see -how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to +Read the +[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md) +to see how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to commission and control the application within a Matter-enabled Thread network. ### Testing using Android CHIPTool Read the -[Android commissioning guide](../../../docs/guides/nrfconnect_android_commissioning.md) +[Android commissioning guide](../../../docs/platforms/nrf/nrfconnect_android_commissioning.md) to see how to use [CHIPTool](../../../examples/android/CHIPTool/README.md) for Android smartphones to commission and control the application within a Matter-enabled Thread network. diff --git a/examples/all-clusters-app/nxp/linux-imx/imx8m/README.md b/examples/all-clusters-app/nxp/linux-imx/imx8m/README.md index e20ff1065d3dfb..01941f58e74799 100644 --- a/examples/all-clusters-app/nxp/linux-imx/imx8m/README.md +++ b/examples/all-clusters-app/nxp/linux-imx/imx8m/README.md @@ -1,4 +1,4 @@ To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) +[README document](../../../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details. diff --git a/examples/all-clusters-app/nxp/rt/rw61x/README.md b/examples/all-clusters-app/nxp/rt/rw61x/README.md index 61d3f008697a58..df760e864e51d1 100644 --- a/examples/all-clusters-app/nxp/rt/rw61x/README.md +++ b/examples/all-clusters-app/nxp/rt/rw61x/README.md @@ -149,7 +149,7 @@ out/debug/chip-rw61x-all-cluster-example. Optional GN options that can be added when building an application: - To enable the - [secondary network commissioning interface](../../../../../docs/guides/nxp/nxp_otbr_guide.md#using-the-secondary-network-commissioning-interface), + [secondary network commissioning interface](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-secondary-network-commissioning-interface), the arguments `chip_enable_secondary_nwk_if=true` and `chip_device_config_thread_network_endpoint_id=2` must be added to the _gn gen_ command. Note that this is only supported when building the Matter over @@ -167,16 +167,16 @@ Optional GN options that can be added when building an application: - To build with the option to have Matter certificates/keys pre-loaded in a specific flash area the argument `chip_with_factory_data=1` must be added to the _gn gen_ command. (for more information see - [Guide for writing manufacturing data on NXP devices](../../../../../docs/guides/nxp/nxp_manufacturing_flow.md). + [Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md). - To build the application with the OTA Requestor enabled, the arguments `chip_enable_ota_requestor=true no_mcuboot=false` must be added to the _gn gen_ command. (More information about the OTA Requestor feature in - [OTA Requestor README](../../../../../docs/guides/nxp/nxp_rw61x_ota_software_update.md) + [OTA Requestor README](../../../../../docs/platforms/nxp/nxp_rw61x_ota_software_update.md) ## Manufacturing data See -[Guide for writing manufacturing data on NXP devices](../../../../../docs/guides/nxp/nxp_manufacturing_flow.md) +[Guide for writing manufacturing data on NXP devices](../../../../../docs/platforms/nxp/nxp_manufacturing_flow.md) Other comments: @@ -252,7 +252,7 @@ Right click on the Project -> Debug -> As->SEGGER JLink probes -> OK -> Select e CHIP Tool is a Matter controller which can be used to commission a Matter device into the network. For more information regarding how to use the CHIP Tool controller, please refer to the -[CHIP Tool guide](../../../../../docs/guides/chip_tool_guide.md). +[CHIP Tool guide](../../../../../docs/development_controllers/chip-tool/chip_tool_guide.md). To know how to commission a device over BLE, follow the instructions from [chip-tool's README.md 'Commission a device over @@ -281,7 +281,7 @@ The "ble-thread" pairing method can be used in order to commission the device. In order to create or join a Thread network on the Matter Border Router, the TBR management cluster or the `otcli` commands from the matter CLI can be used. For more information about using the TBR management cluster follow instructions from -['Using the TBR management cluster'](../../../../../docs/guides/nxp/nxp_otbr_guide.md#using-the-thread-border-router-management-cluster). +['Using the TBR management cluster'](../../../../../docs/platforms/nxp/nxp_otbr_guide.md#using-the-thread-border-router-management-cluster). For more information about using the matter shell, follow instructions from ['Testing the all-clusters application with Matter CLI'](#testing-the-all-clusters-application-with-matter-cli-enabled). @@ -407,7 +407,7 @@ Done Over-The-Air software updates are supported with the RW61x all-clusters example. The process to follow in order to perform a software update is described in the dedicated guide -['Matter Over-The-Air Software Update with NXP RW61x example applications'](../../../../../docs/guides/nxp/nxp_rw61x_ota_software_update.md). +['Matter Over-The-Air Software Update with NXP RW61x example applications'](../../../../../docs/platforms/nxp/nxp_rw61x_ota_software_update.md). @@ -417,4 +417,4 @@ To enable Thread Border Router support see the [build](README.md#building) section. The complete Border Router guide is located -[here](../../../../../docs/guides/nxp/nxp_otbr_guide.md). +[here](../../../../../docs/platforms/nxp/nxp_otbr_guide.md). diff --git a/examples/all-clusters-app/nxp/zephyr/README.md b/examples/all-clusters-app/nxp/zephyr/README.md index 54a06c62c6214c..d9038b02dd9431 100644 --- a/examples/all-clusters-app/nxp/zephyr/README.md +++ b/examples/all-clusters-app/nxp/zephyr/README.md @@ -201,14 +201,14 @@ the partition address: please refer to `factory_partition` defined in #### Manually See -[Guide for writing manufacturing data on NXP devices](../../../../docs/guides/nxp/nxp_manufacturing_flow.md) +[Guide for writing manufacturing data on NXP devices](../../../../docs/platforms/nxp/nxp_manufacturing_flow.md) ## OTA Software Update See -[Guide for OTA Software Update on NXP devices using Zephyr SDK](../../../../docs/guides/nxp/nxp_zephyr_ota_software_update.md) +[Guide for OTA Software Update on NXP devices using Zephyr SDK](../../../../docs/platforms/nxp/nxp_zephyr_ota_software_update.md) diff --git a/examples/all-clusters-app/openiotsdk/README.md b/examples/all-clusters-app/openiotsdk/README.md index 269411f9f59bf9..661c331f37d627 100644 --- a/examples/all-clusters-app/openiotsdk/README.md +++ b/examples/all-clusters-app/openiotsdk/README.md @@ -11,7 +11,7 @@ You can use this example as a reference for creating your own application. For information on how to build, run, test and debug this example and further information about the platform it is run on see -[Open IoT SDK examples](../../../docs/guides/openiotsdk_examples.md). +[Open IoT SDK examples](../../../docs/platforms/openiotsdk/openiotsdk_examples.md). The example name to use in the scripts is `all-clusters-app`. @@ -31,7 +31,7 @@ follow traces in the terminal. ### Commissioning Read the -[Open IoT SDK commissioning guide](../../../docs/guides/openiotsdk_commissioning.md) +[Open IoT SDK commissioning guide](../../../docs/platforms/openiotsdk/openiotsdk_commissioning.md) to see how to use the Matter controller to commission and control the application. diff --git a/examples/all-clusters-minimal-app/asr/README.md b/examples/all-clusters-minimal-app/asr/README.md index 5160ef5d4d5cf8..2a411c728a9ffb 100755 --- a/examples/all-clusters-minimal-app/asr/README.md +++ b/examples/all-clusters-minimal-app/asr/README.md @@ -14,7 +14,7 @@ control on ASR platform. ## Building and Commissioning Please refer -[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application) +[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application) guides to get started ``` diff --git a/examples/all-clusters-minimal-app/esp32/README.md b/examples/all-clusters-minimal-app/esp32/README.md index 6cb3f9093da13b..4b5ca4ea729d08 100644 --- a/examples/all-clusters-minimal-app/esp32/README.md +++ b/examples/all-clusters-minimal-app/esp32/README.md @@ -4,16 +4,16 @@ A prototype application that demonstrates device commissioning and cluster control. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. --- - [Cluster control](#cluster-control) -- [Matter OTA guide](../../../docs/guides/esp32/ota.md) -- [RPC console and Device Tracing](../../../docs/guides/esp32/rpc_console.md) +- [Matter OTA guide](../../../docs/platforms/esp32/ota.md) +- [RPC console and Device Tracing](../../../docs/platforms/esp32/rpc_console.md) --- diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/README.md b/examples/all-clusters-minimal-app/infineon/psoc6/README.md index 80b8e1ceb66791..7dc9fccf009c6c 100644 --- a/examples/all-clusters-minimal-app/infineon/psoc6/README.md +++ b/examples/all-clusters-minimal-app/infineon/psoc6/README.md @@ -126,4 +126,4 @@ commands. These power cycle the BlueTooth hardware and disable BR/EDR mode. For the description of Software Update process with infineon PSoC6 example applications see -[Infineon PSoC6 OTA Software Update](../../../../docs/guides/infineon_psoc6_software_update.md) +[Infineon PSoC6 OTA Software Update](../../../../docs/platforms/infineon/infineon_psoc6_software_update.md) diff --git a/examples/all-clusters-minimal-app/mbed/README.md b/examples/all-clusters-minimal-app/mbed/README.md index d4096cbde2f466..86226548a958d3 100644 --- a/examples/all-clusters-minimal-app/mbed/README.md +++ b/examples/all-clusters-minimal-app/mbed/README.md @@ -225,7 +225,8 @@ traces in the terminal. ### CHIP Tools -Read the [MbedCommissioning](../../../docs/guides/mbedos_commissioning.md) to +Read the +[MbedCommissioning](../../../docs/platforms/mbedos/mbedos_commissioning.md) to see how to use different CHIP tools to commission and control the application within a WiFi network. @@ -239,7 +240,7 @@ within a WiFi network. - More details and guidelines about porting new hardware into the Matter project with Mbed OS can be found in - [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) + [MbedNewTarget](../../../docs/platforms/mbedos/mbedos_add_new_target.md) - Some useful information about HW platform specific settings can be found in `all-clusters-minimal-app/mbed/mbed_app.json`. Information about this file syntax and its meaning in mbed-os project can be diff --git a/examples/all-clusters-minimal-app/nrfconnect/README.md b/examples/all-clusters-minimal-app/nrfconnect/README.md index 932db10a2f2c89..b9d44a889f1fc1 100644 --- a/examples/all-clusters-minimal-app/nrfconnect/README.md +++ b/examples/all-clusters-minimal-app/nrfconnect/README.md @@ -41,7 +41,7 @@ This example is running on the nRF Connect platform, which is based on Nordic Semiconductor's [nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html) and [Zephyr RTOS](https://zephyrproject.org/). Visit Matter's -[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md) +[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md) to read more about the platform structure and dependencies. By default, the Matter accessory device has IPv6 networking disabled. You must @@ -144,7 +144,7 @@ for the predefined period of time (15 minutes by default). **SEGGER J-Link USB port** can be used to get logs from the device or communicate with it using the -[command line interface](../../../docs/guides/nrfconnect_examples_cli.md). +[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md).
@@ -371,7 +371,7 @@ depending on the selected board: those platforms support the DFU. For more information, see the -[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md) +[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md) page.
@@ -406,19 +406,20 @@ to read more about flashing on the nRF52840 Dongle. ## Testing the example -Check the [CLI tutorial](../../../docs/guides/nrfconnect_examples_cli.md) to -learn how to use command-line interface of the application. +Check the [CLI tutorial](../../../docs/platforms/nrf/nrfconnect_examples_cli.md) +to learn how to use command-line interface of the application. ### Testing using Linux CHIPTool -Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to see -how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to +Read the +[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md) +to see how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to commission and control the application within a Matter-enabled Thread network. ### Testing using Android CHIPTool Read the -[Android commissioning guide](../../../docs/guides/nrfconnect_android_commissioning.md) +[Android commissioning guide](../../../docs/platforms/nrf/nrfconnect_android_commissioning.md) to see how to use [CHIPTool](../../../examples/android/CHIPTool/README.md) for Android smartphones to commission and control the application within a Matter-enabled Thread network. diff --git a/examples/all-clusters-minimal-app/nxp/linux-imx/imx8m/README.md b/examples/all-clusters-minimal-app/nxp/linux-imx/imx8m/README.md index e20ff1065d3dfb..01941f58e74799 100644 --- a/examples/all-clusters-minimal-app/nxp/linux-imx/imx8m/README.md +++ b/examples/all-clusters-minimal-app/nxp/linux-imx/imx8m/README.md @@ -1,4 +1,4 @@ To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) +[README document](../../../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details. diff --git a/examples/android/CHIPTool/README.md b/examples/android/CHIPTool/README.md index cbd0caa5989731..415dc467d86a94 100644 --- a/examples/android/CHIPTool/README.md +++ b/examples/android/CHIPTool/README.md @@ -15,4 +15,5 @@ CHIPTool offers the following features: > pairing is implemented. For information about how to build the application, see the -[Building Android CHIPTool](../../../docs/guides/android_building.md) guide. +[Building Android CHIPTool](../../../docs/platforms/android/android_building.md) +guide. diff --git a/examples/bridge-app/asr/README.md b/examples/bridge-app/asr/README.md index 1986037085b645..1d29b4f5e3bed5 100755 --- a/examples/bridge-app/asr/README.md +++ b/examples/bridge-app/asr/README.md @@ -26,7 +26,7 @@ cluster have been added as endpoints ## Building and Commissioning Please refer -[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application) +[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application) guides to get started ``` diff --git a/examples/bridge-app/esp32/README.md b/examples/bridge-app/esp32/README.md index ac22c7f8b3a424..1d34ac6da4fd04 100644 --- a/examples/bridge-app/esp32/README.md +++ b/examples/bridge-app/esp32/README.md @@ -1,9 +1,9 @@ # Matter ESP32 Bridge App Example Please -[setup ESP-IDF and Matter Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and Matter Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. --- diff --git a/examples/chip-tool/README.md b/examples/chip-tool/README.md index f702e202ac6e86..b9d5f148dfdf91 100644 --- a/examples/chip-tool/README.md +++ b/examples/chip-tool/README.md @@ -599,4 +599,4 @@ Usage: To learn more about the tool, how to build it, use its commands and advanced features, read the following guide: -- [Working with the CHIP Tool](https://github.com/project-chip/connectedhomeip/tree/master/docs/guides/chip_tool_guide.md) +- [Working with the CHIP Tool](https://github.com/project-chip/connectedhomeip/tree/master/docs/development_controllers/chip-tool/chip_tool_guide.md) diff --git a/examples/contact-sensor-app/linux/README.md b/examples/contact-sensor-app/linux/README.md index e71ea89feb7eab..ca5ca7b63aa453 100644 --- a/examples/contact-sensor-app/linux/README.md +++ b/examples/contact-sensor-app/linux/README.md @@ -7,7 +7,7 @@ document is tested on **Ubuntu for Raspberry Pi Server 20.04 LTS (aarch64)** and To cross-compile this example on an x64 host and run it on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for +[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details.
diff --git a/examples/contact-sensor-app/nxp/README.md b/examples/contact-sensor-app/nxp/README.md index 20474bea76057c..803f067ce3de72 100644 --- a/examples/contact-sensor-app/nxp/README.md +++ b/examples/contact-sensor-app/nxp/README.md @@ -136,7 +136,7 @@ corresponding to data model target. Use `chip_with_factory_data=1` in the gn build command to enable factory data. For a full guide on manufacturing flow, please see -[Guide for writing manufacturing data on NXP devices](../../../docs/guides/nxp/nxp_manufacturing_flow.md). +[Guide for writing manufacturing data on NXP devices](../../../docs/platforms/nxp/nxp_manufacturing_flow.md). ### Long Idle Time ICD Support diff --git a/examples/contact-sensor-app/nxp/k32w0/README.md b/examples/contact-sensor-app/nxp/k32w0/README.md index 305aa0b176af2a..bc39009afc3cb9 100644 --- a/examples/contact-sensor-app/nxp/k32w0/README.md +++ b/examples/contact-sensor-app/nxp/k32w0/README.md @@ -351,7 +351,7 @@ Please use the following build args: ## Manufacturing data See -[Guide for writing manufacturing data on NXP devices](../../../../docs/guides/nxp/nxp_manufacturing_flow.md). +[Guide for writing manufacturing data on NXP devices](../../../../docs/platforms/nxp/nxp_manufacturing_flow.md). There are factory data generated binaries available in `third_party/nxp/nxp_matter_support/examples/platform/k32w0/scripts/demo_generated_factory_data` @@ -618,7 +618,7 @@ internal flash space can be found in the The steps for building the SSBL binary with appropriate configuration and writing to the board the binary and other OTA related configurations are described in the -[K32W0x1 OTA guide](../../../../docs/guides/nxp/nxp_k32w0_ota_guide.md). +[K32W0x1 OTA guide](../../../../docs/platforms/nxp/nxp_k32w0_ota_guide.md). Note that the application needs to be built using the `chip_enable_ota_requestor=true` option. This is enabled in the configuration by diff --git a/examples/contact-sensor-app/nxp/k32w1/README.md b/examples/contact-sensor-app/nxp/k32w1/README.md index 5f47979e2d25bb..20feba0c01d6b2 100644 --- a/examples/contact-sensor-app/nxp/k32w1/README.md +++ b/examples/contact-sensor-app/nxp/k32w1/README.md @@ -165,4 +165,4 @@ Run -> Debug Configurations... -> C/C++ Application ## OTA Please see -[k32w1 OTA guide](../../../../docs/guides/nxp/nxp_mcxw71_ota_guide.md). +[k32w1 OTA guide](../../../../docs/platforms/nxp/nxp_mcxw71_ota_guide.md). diff --git a/examples/contact-sensor-app/nxp/mcxw71/README.md b/examples/contact-sensor-app/nxp/mcxw71/README.md index 50d33e10e1b841..d5b1927722b508 100644 --- a/examples/contact-sensor-app/nxp/mcxw71/README.md +++ b/examples/contact-sensor-app/nxp/mcxw71/README.md @@ -191,4 +191,4 @@ Run -> Debug Configurations... -> C/C++ Application ## OTA Please see -[mcxw71 OTA guide](../../../../docs/guides/nxp/nxp_mcxw71_ota_guide.md). +[mcxw71 OTA guide](../../../../docs/platforms/nxp/nxp_mcxw71_ota_guide.md). diff --git a/examples/dishwasher-app/linux/README.md b/examples/dishwasher-app/linux/README.md index 6b849617099b9c..29432d43e825c2 100644 --- a/examples/dishwasher-app/linux/README.md +++ b/examples/dishwasher-app/linux/README.md @@ -7,7 +7,7 @@ for Raspberry Pi Desktop 20.10 (aarch64)** To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for +[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details.
diff --git a/examples/dishwasher-app/silabs/README.md b/examples/dishwasher-app/silabs/README.md index e2586446b812d8..9a8a102cbd147d 100644 --- a/examples/dishwasher-app/silabs/README.md +++ b/examples/dishwasher-app/silabs/README.md @@ -228,7 +228,7 @@ You can provision and control the Matter device using the python controller, Silabs provides `chip-tool` as a wrapper function and more user-friendly method of using [chip-tool](../../chip-tool/README.md) within the pre-built Raspberry Pi image. For more info on using `chip-tool`, see -[Chiptool](../../../docs/guides/chip_tool_guide.md). +[Chiptool](../../../docs/development_controllers/chip-tool/chip_tool_guide.md). Here is an example using `chip-tool`: diff --git a/examples/energy-management-app/esp32/README.md b/examples/energy-management-app/esp32/README.md index 733ac5a632d48a..f1a2f12ec4f572 100644 --- a/examples/energy-management-app/esp32/README.md +++ b/examples/energy-management-app/esp32/README.md @@ -5,9 +5,9 @@ Heater example application along with several other energy management clusters on ESP platforms. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. ### Enabling ESP-Insights: @@ -32,7 +32,7 @@ cp /path/to/auth/key.txt path/to/connectedhomeip/examples/energy-management-app/ --- - [Cluster Control](#cluster-control) -- [Matter OTA guide](../../../docs/guides/esp32/ota.md) +- [Matter OTA guide](../../../docs/platforms/esp32/ota.md) --- diff --git a/examples/energy-management-app/linux/README.md b/examples/energy-management-app/linux/README.md index 89b165c1e1f569..615f1f50dbc7de 100644 --- a/examples/energy-management-app/linux/README.md +++ b/examples/energy-management-app/linux/README.md @@ -7,7 +7,7 @@ for Raspberry Pi Desktop 20.10 (aarch64)** To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for +[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details.
diff --git a/examples/energy-management-app/silabs/README.md b/examples/energy-management-app/silabs/README.md index 96237911df0989..5c1955a5071f3c 100644 --- a/examples/energy-management-app/silabs/README.md +++ b/examples/energy-management-app/silabs/README.md @@ -335,7 +335,7 @@ tracking code inside the `trackAlloc` and `trackFree` function For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) ## Group Communication (Multicast) diff --git a/examples/light-switch-app/asr/README.md b/examples/light-switch-app/asr/README.md index ed3b65b82f0e36..5d2f575a2b2894 100755 --- a/examples/light-switch-app/asr/README.md +++ b/examples/light-switch-app/asr/README.md @@ -13,7 +13,7 @@ This example demonstrates the Matter Light Switch application on ASR platform. ## Building and Commissioning Please refer -[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application) +[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application) guides to get started ``` diff --git a/examples/light-switch-app/esp32/README.md b/examples/light-switch-app/esp32/README.md index 43a9d9536b75db..023f9bb2275d8d 100644 --- a/examples/light-switch-app/esp32/README.md +++ b/examples/light-switch-app/esp32/README.md @@ -3,9 +3,9 @@ This example demonstrates the Matter Light-switch application on ESP platforms. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. --- diff --git a/examples/light-switch-app/genio/README.md b/examples/light-switch-app/genio/README.md index 7961597d4df055..1a9531803f75f9 100644 --- a/examples/light-switch-app/genio/README.md +++ b/examples/light-switch-app/genio/README.md @@ -88,7 +88,7 @@ MediaTek platform. Chip tool standalone, Android or iOS app [CHIP - Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/chip_tool_guide.md) + Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/development_controllers/chip-tool/chip_tool_guide.md) - First of all, you have to commission with the light-switch-app (nodeID 1) and the lighting-app (nodeID 2) with the CHIP tool by following commands. diff --git a/examples/light-switch-app/infineon/cyw30739/README.md b/examples/light-switch-app/infineon/cyw30739/README.md index 0343563087a154..cec7a2b3ad4727 100644 --- a/examples/light-switch-app/infineon/cyw30739/README.md +++ b/examples/light-switch-app/infineon/cyw30739/README.md @@ -212,7 +212,7 @@ Put the CYW30739 in to the recovery mode before running the flash script. - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. - For this example to work, it is necessary to have a second CYW30739 device diff --git a/examples/light-switch-app/nrfconnect/README.md b/examples/light-switch-app/nrfconnect/README.md index 943759735f2bc2..11e53793463570 100644 --- a/examples/light-switch-app/nrfconnect/README.md +++ b/examples/light-switch-app/nrfconnect/README.md @@ -48,7 +48,7 @@ This example is running on the nRF Connect platform, which is based on Nordic Semiconductor's [nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html) and [Zephyr RTOS](https://zephyrproject.org/). Visit Matter's -[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md) +[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md) to read more about the platform structure and dependencies. By default, the Matter accessory device has IPv6 networking disabled. You must @@ -236,9 +236,10 @@ development kits: - [Lighting Example Application](../../lighting-app/nrfconnect/README.md) -Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to -learn how to commission the lighting device to the same Matter network using the -CHIP Tool. +Read the +[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md) +to learn how to commission the lighting device to the same Matter network using +the CHIP Tool.
@@ -342,7 +343,7 @@ platform image. **SEGGER J-Link USB port** can be used to get logs from the device or communicate with it using the -[command line interface](../../../docs/guides/nrfconnect_examples_cli.md). +[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md). **NFC port with antenna attached** can be used to start the [rendezvous](#bluetooth-le-rendezvous) by providing the commissioning @@ -375,7 +376,8 @@ the Light Switch Example application by using the Matter CLI: uart:~$ switch groups onoff off : sends multicast Off command to all bound devices in a group uart:~$ switch groups onoff toggle : sends multicast Toggle command to all bound devices in a group -Check the [CLI user guide](../../../docs/guides/nrfconnect_examples_cli.md) to +Check the +[CLI user guide](../../../docs/platforms/nrf/nrfconnect_examples_cli.md) to learn how to use other CLI commands of the application.
@@ -570,7 +572,7 @@ depending on the selected board: the necessary application functionalities to optimize its performance. For more information, see the -[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md) +[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md) page.
@@ -602,7 +604,8 @@ process, and add Access Control Lists (ACLs). ### Commissioning the lighting device To commission the Lighting Example Application to the same Matter network, read -the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md). +the +[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md). ### Binding cluster and endpoints @@ -617,7 +620,7 @@ example, you can use the The ACL should contain information about all clusters that can be called by the light switch application. See the section about interacting with ZCL clusters in the -[CHIP Tool's user guide](../../../docs/guides/chip_tool_guide.md#interacting-with-data-model-clusters) +[CHIP Tool's user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md#interacting-with-data-model-clusters) for more information about ACLs. You can perform the binding process to a single remote endpoint (unicast @@ -635,7 +638,7 @@ same Matter network. To perform the unicast binding process, complete the following steps: 1. Build the CHIP Tool according to the steps from the - [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md#building-and-running-the-chip-tool). + [CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md#building-and-running-the-chip-tool). 2. Go to the CHIP Tool build directory. 3. Add an ACL to the development kit that is programmed with the [Lighting Application Example](../../lighting-app/nrfconnect/README.md) by @@ -687,7 +690,7 @@ same Matter network. To perform the unicast binding process, complete the following steps: 1. Build the CHIP Tool according to the steps from the - [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md#building-and-running-the-chip-tool). + [CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md#building-and-running-the-chip-tool). 2. Go to the CHIP Tool build directory. 3. Add the light switch device to the multicast group by running the following @@ -734,5 +737,5 @@ switch subscribe-event short-release 1 20 2 --is-urgent true --keepSub ### Testing Device Firmware Upgrade Read the -[DFU tutorial](../../../docs/guides/nrfconnect_examples_software_update.md) to -see how to upgrade your device firmware. +[DFU tutorial](../../../docs/platforms/nrf/nrfconnect_examples_software_update.md) +to see how to upgrade your device firmware. diff --git a/examples/light-switch-app/silabs/README.md b/examples/light-switch-app/silabs/README.md index fe39610cbffe7e..898f8e8f299112 100644 --- a/examples/light-switch-app/silabs/README.md +++ b/examples/light-switch-app/silabs/README.md @@ -210,7 +210,7 @@ combination with JLinkRTTClient as follows: - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. Take note that the RCP code is available directly through @@ -393,7 +393,7 @@ tracking code inside the `trackAlloc` and `trackFree` function For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) ## Building options diff --git a/examples/lighting-app-data-mode-no-unique-id/linux/README.md b/examples/lighting-app-data-mode-no-unique-id/linux/README.md index 3262e3446a3b28..0fc9ebccff02b6 100644 --- a/examples/lighting-app-data-mode-no-unique-id/linux/README.md +++ b/examples/lighting-app-data-mode-no-unique-id/linux/README.md @@ -12,17 +12,21 @@ Raspberry Pi Desktop 20.10 (aarch64)** To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for +[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details.
-- [CHIP Linux Lighting Example](#chip-linux-lighting-example-data-mode-no-unique-id) +- [CHIP Linux Lighting Example (Data Mode, No Unique ID)](#chip-linux-lighting-example-data-mode-no-unique-id) - [Building](#building) - - [Commandline Arguments](#commandline-arguments) + - [Commandline arguments](#commandline-arguments) - [Running the Complete Example on Raspberry Pi 4](#running-the-complete-example-on-raspberry-pi-4) - - [Running RPC console](#running-rpc-console) + - [Running RPC Console](#running-rpc-console) - [Device Tracing](#device-tracing) + - [Trigger event using lighting-app event named pipe](#trigger-event-using-lighting-app-event-named-pipe) + - [Trigger `SoftwareFault` events](#trigger-softwarefault-events) + - [Trigger `HardwareFault` events](#trigger-hardwarefault-events) + - [Trigger Switch events](#trigger-switch-events)
diff --git a/examples/lighting-app/asr/README.md b/examples/lighting-app/asr/README.md index 234154ce8b2222..ade620e0fc07ca 100755 --- a/examples/lighting-app/asr/README.md +++ b/examples/lighting-app/asr/README.md @@ -14,7 +14,7 @@ This example demonstrates the Matter Lighting application on ASR platform. ## Building and Commissioning Please refer -[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application) +[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application) guides to get started ``` diff --git a/examples/lighting-app/bouffalolab/README.md b/examples/lighting-app/bouffalolab/README.md index b39f65b96d77c7..4a5c8d72f4d8a6 100644 --- a/examples/lighting-app/bouffalolab/README.md +++ b/examples/lighting-app/bouffalolab/README.md @@ -132,7 +132,7 @@ The following steps take examples for `BL602DK`, `BL704LDK` and `BL706DK`. - `-mfd`, enable Matter factory data feature, which load factory data from `MFD` partition - Please refer to - [Bouffalo Lab Matter factory data guide](../../../docs/guides/bouffalolab/matter_factory_data.md) + [Bouffalo Lab Matter factory data guide](../../../docs/platforms/bouffalolab/matter_factory_data.md) or contact to `Bouffalo Lab` for support. - `-shell`, enable command line - `-rpc`, enable Pigweed RPC feature @@ -175,12 +175,11 @@ The following steps take examples for `BL602DK`, `BL704LDK` and `BL706DK`. - `BL602DK`, `BL704LDK` and `BL706DK`. - ```shell - ./out/bouffalolab-bl602dk-light-littlefs/chip-bl602-lighting-example.flash.py --port /dev/ttyACM0 - ./out/bouffalolab-bl616dk-light-wifi/chip-bl616dk-lighting-example.flash.py --port /dev/ttyACM0 - ./out/bouffalolab-bl704ldk-light-littlefs/chip-bl702l-lighting-example.flash.py --port /dev/ttyACM0 - ./out/bouffalolab-bl706dk-light-littlefs/chip-bl702-lighting-example.flash.py --port /dev/ttyACM0 + ./out/bouffalolab-bl602dk-light-littlefs/chip-bl602-lighting-example.flash.py --port /dev/ttyACM0 + ./out/bouffalolab-bl616dk-light-wifi/chip-bl616dk-lighting-example.flash.py --port /dev/ttyACM0 + ./out/bouffalolab-bl704ldk-light-littlefs/chip-bl702l-lighting-example.flash.py --port /dev/ttyACM0 + ./out/bouffalolab-bl706dk-light-littlefs/chip-bl702-lighting-example.flash.py --port /dev/ttyACM0 ``` - To wipe out flash and download image, please append `--erase` @@ -212,15 +211,16 @@ The following steps take examples for `BL602DK`, `BL704LDK` and `BL706DK`. ## Test Commission and Control with chip-tool -Please follow [chip_tool_guide](../../../docs/guides/chip_tool_guide.md) and -[guide](../../chip-tool/README.md) to build and use chip-tool for test. +Please follow +[chip_tool_guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md) +and [guide](../../chip-tool/README.md) to build and use chip-tool for test. ### Prerequisite for Thread Protocol Thread wireless protocol runs on BL706, which needs a Thread border router to connect Thread network to Wi-Fi/Ethernet network. Please follow this -[guide](../../../docs/guides/openthread_border_router_pi.md) to setup a -raspberry Pi border router. +[guide](../../../docs/platforms/openthread/openthread_border_router_pi.md) to +setup a raspberry Pi border router. After Thread border router setup, please type following command on Thread border router to get Thread network credential. @@ -303,11 +303,11 @@ ota-provider-app build and usage. - Add boot parameters, signature/encryption if specified - And specify whether image has be compressed. - Add Matter recognition header by - [ota_image_tool.py](../../../docs/guides/openthread_border_router_pi.md). + [ota_image_tool.py](../../../docs/platforms/openthread/openthread_border_router_pi.md). Script `*.flash.py` builds `Bouffalo Lab` bootable image and call -[ota_image_tool.py](../../../docs/guides/openthread_border_router_pi.md) to add -Matter recognition header. Take `BL602DK` as example. +[ota_image_tool.py](../../../docs/platforms/openthread/openthread_border_router_pi.md) +to add Matter recognition header. Take `BL602DK` as example. ```shell ./out/bouffalolab-bl602dk-light/chip-bl602-lighting-example.flash.py --build-ota --vendor-id --product-id --version --version-str --digest-algorithm diff --git a/examples/lighting-app/esp32/README.md b/examples/lighting-app/esp32/README.md index 3e3dc5ee0a27cf..da74d5476d1f79 100644 --- a/examples/lighting-app/esp32/README.md +++ b/examples/lighting-app/esp32/README.md @@ -3,9 +3,9 @@ This example demonstrates the Matter Lighting application on ESP platforms. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. ### Enabling ESP-Insights: @@ -47,4 +47,4 @@ cp /path/to/auth/key.txt path/to/connectedhomeip/examples/lighting-app/esp32/mai ### Matter OTA For Matter OTA please take a look at -[Matter OTA guide](../../../docs/guides/esp32/ota.md). +[Matter OTA guide](../../../docs/platforms/esp32/ota.md). diff --git a/examples/lighting-app/genio/README.md b/examples/lighting-app/genio/README.md index 575d4ba5e1cf13..1b586c15975ff2 100644 --- a/examples/lighting-app/genio/README.md +++ b/examples/lighting-app/genio/README.md @@ -86,7 +86,7 @@ MediaTek platform. Chip tool standalone, Android or iOS app [CHIP - Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/chip_tool_guide.md) + Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/development_controllers/chip-tool/chip_tool_guide.md) Here is an example with the CHIP Tool controller: diff --git a/examples/lighting-app/infineon/cyw30739/README.md b/examples/lighting-app/infineon/cyw30739/README.md index a69ddb0957c8fa..c27eaba47a8f45 100644 --- a/examples/lighting-app/infineon/cyw30739/README.md +++ b/examples/lighting-app/infineon/cyw30739/README.md @@ -212,7 +212,7 @@ Put the CYW30739 in to the recovery mode before running the flash script. - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. - You can provision and control the device using the Python controller REPL, diff --git a/examples/lighting-app/infineon/psoc6/README.md b/examples/lighting-app/infineon/psoc6/README.md index 773a05af1f3899..853000547ceeba 100644 --- a/examples/lighting-app/infineon/psoc6/README.md +++ b/examples/lighting-app/infineon/psoc6/README.md @@ -138,4 +138,4 @@ commands. These power cycle the BlueTooth hardware and disable BR/EDR mode. For the description of Software Update process with infineon PSoC6 example applications see -[Infineon PSoC6 OTA Software Update](../../../../docs/guides/infineon_psoc6_software_update.md) +[Infineon PSoC6 OTA Software Update](../../../../docs/platforms/infineon/infineon_psoc6_software_update.md) diff --git a/examples/lighting-app/linux/README.md b/examples/lighting-app/linux/README.md index e41799a70dc60d..b5c3d2a53bf486 100644 --- a/examples/lighting-app/linux/README.md +++ b/examples/lighting-app/linux/README.md @@ -7,7 +7,7 @@ Raspberry Pi Desktop 20.10 (aarch64)** To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for +[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details.
diff --git a/examples/lighting-app/mbed/README.md b/examples/lighting-app/mbed/README.md index 0eafd74a5e2c25..d96ee5281de208 100644 --- a/examples/lighting-app/mbed/README.md +++ b/examples/lighting-app/mbed/README.md @@ -240,7 +240,8 @@ terminal. #### CHIP Tools -Read the [MbedCommissioning](../../../docs/guides/mbedos_commissioning.md) to +Read the +[MbedCommissioning](../../../docs/platforms/mbedos/mbedos_commissioning.md) to see how to use different CHIP tools to commission and control the application within a WiFi network. @@ -314,7 +315,7 @@ The example supports building and running on the following mbed-enabled devices: - More details and guidelines about porting new hardware into the Matter project with Mbed OS can be found in - [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) + [MbedNewTarget](../../../docs/platforms/mbedos/mbedos_add_new_target.md) - Some useful information about HW platform specific settings can be found in `lighting-app/mbed/mbed_app.json`. Information about this file syntax and its meaning in mbed-os project can be found here: diff --git a/examples/lighting-app/nrfconnect/README.md b/examples/lighting-app/nrfconnect/README.md index 3ba3c74f56d70f..62e4954d7be4c7 100644 --- a/examples/lighting-app/nrfconnect/README.md +++ b/examples/lighting-app/nrfconnect/README.md @@ -44,7 +44,7 @@ This example is running on the nRF Connect platform, which is based on Nordic Semiconductor's [nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html) and [Zephyr RTOS](https://zephyrproject.org/). Visit Matter's -[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md) +[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md) to read more about the platform structure and dependencies. By default, the Matter accessory device has IPv6 networking disabled. You must @@ -267,7 +267,7 @@ opposite one. **SEGGER J-Link USB port** can be used to get logs from the device or communicate with it using the -[command line interface](../../../docs/guides/nrfconnect_examples_cli.md). +[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md). **NFC port with antenna attached** can be used to start the [rendezvous](#bluetooth-le-rendezvous) by providing the commissioning @@ -496,7 +496,7 @@ depending on the selected board: DFU enabled by default. For more information, see the -[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md) +[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md) page.
@@ -535,19 +535,20 @@ to read more about flashing on the nRF52840 Dongle. ## Testing the example -Check the [CLI tutorial](../../../docs/guides/nrfconnect_examples_cli.md) to -learn how to use command-line interface of the application. +Check the [CLI tutorial](../../../docs/platforms/nrf/nrfconnect_examples_cli.md) +to learn how to use command-line interface of the application. ### Testing using Linux CHIPTool -Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to see -how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to +Read the +[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md) +to see how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to commission and control the application within a Matter-enabled Thread network. ### Testing using Android CHIPTool Read the -[Android commissioning guide](../../../docs/guides/nrfconnect_android_commissioning.md) +[Android commissioning guide](../../../docs/platforms/nrf/nrfconnect_android_commissioning.md) to see how to use [CHIPTool](../../../examples/android/CHIPTool/README.md) for Android smartphones to commission and control the application within a Matter-enabled Thread network. @@ -555,8 +556,8 @@ Matter-enabled Thread network. ### Testing Device Firmware Upgrade Read the -[DFU tutorial](../../../docs/guides/nrfconnect_examples_software_update.md) to -see how to upgrade your device firmware. +[DFU tutorial](../../../docs/platforms/nrf/nrfconnect_examples_software_update.md) +to see how to upgrade your device firmware. ## Testing using the RPC console diff --git a/examples/lighting-app/nxp/README.md b/examples/lighting-app/nxp/README.md index d611b24c8dff75..e0860a021ef30b 100644 --- a/examples/lighting-app/nxp/README.md +++ b/examples/lighting-app/nxp/README.md @@ -131,7 +131,7 @@ corresponding to data model target. Use `chip_with_factory_data=1` in the gn build command to enable factory data. For a full guide on manufacturing flow, please see -[Guide for writing manufacturing data on NXP devices](../../../docs/guides/nxp/nxp_manufacturing_flow.md). +[Guide for writing manufacturing data on NXP devices](../../../docs/platforms/nxp/nxp_manufacturing_flow.md). ## Flashing and debugging diff --git a/examples/lighting-app/nxp/k32w0/README.md b/examples/lighting-app/nxp/k32w0/README.md index 518e0232a4f6cb..61f35a3e7116ac 100644 --- a/examples/lighting-app/nxp/k32w0/README.md +++ b/examples/lighting-app/nxp/k32w0/README.md @@ -328,7 +328,7 @@ Please use the following build args: ## Manufacturing data See -[Guide for writing manufacturing data on NXP devices](../../../../docs/guides/nxp/nxp_manufacturing_flow.md). +[Guide for writing manufacturing data on NXP devices](../../../../docs/platforms/nxp/nxp_manufacturing_flow.md). There are factory data generated binaries available in `third_party/nxp/nxp_matter_support/examples/platform/k32w0/scripts/demo_generated_factory_data` @@ -595,7 +595,7 @@ internal flash space can be found in the The steps for building the SSBL binary with appropriate configuration and writing to the board the binary and other OTA related configurations are described in the -[K32W0x1 OTA guide](../../../../docs/guides/nxp/nxp_k32w0_ota_guide.md). +[K32W0x1 OTA guide](../../../../docs/platforms/nxp/nxp_k32w0_ota_guide.md). Note that the application needs to be built using the `chip_enable_ota_requestor=true` option. This is enabled in the configuration by diff --git a/examples/lighting-app/nxp/k32w1/README.md b/examples/lighting-app/nxp/k32w1/README.md index d61ab1e42431d4..61cec8077cc99a 100644 --- a/examples/lighting-app/nxp/k32w1/README.md +++ b/examples/lighting-app/nxp/k32w1/README.md @@ -109,7 +109,7 @@ this feature, compile the application with: `chip_config_dimmable_led=true` If the feature is enabled, the LED brightness can be controlled using `LevelControl` cluster -[commands](../../../../docs/guides/chip_tool_guide.md#step-7-control-application-data-model-clusters). +[commands](../../../../docs/development_controllers/chip-tool/chip_tool_guide.md#step-7-control-application-data-model-clusters). ## Flashing @@ -235,4 +235,4 @@ To reboot the device, please run `rpcs.chip.rpc.Device.Reboot()`. ## OTA Please see -[k32w1 OTA guide](../../../../docs/guides/nxp/nxp_mcxw71_ota_guide.md). +[k32w1 OTA guide](../../../../docs/platforms/nxp/nxp_mcxw71_ota_guide.md). diff --git a/examples/lighting-app/nxp/linux-imx/imx8m/README.md b/examples/lighting-app/nxp/linux-imx/imx8m/README.md index e20ff1065d3dfb..01941f58e74799 100644 --- a/examples/lighting-app/nxp/linux-imx/imx8m/README.md +++ b/examples/lighting-app/nxp/linux-imx/imx8m/README.md @@ -1,4 +1,4 @@ To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) +[README document](../../../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details. diff --git a/examples/lighting-app/nxp/mcxw71/README.md b/examples/lighting-app/nxp/mcxw71/README.md index 116fd6183e197d..3cded8b8be9230 100644 --- a/examples/lighting-app/nxp/mcxw71/README.md +++ b/examples/lighting-app/nxp/mcxw71/README.md @@ -109,7 +109,7 @@ this feature, compile the application with: `chip_config_dimmable_led=true` If the feature is enabled, the LED brightness can be controlled using `LevelControl` cluster -[commands](../../../../docs/guides/chip_tool_guide.md#step-7-control-application-data-model-clusters). +[commands](../../../../docs/development_controllers/chip-tool/chip_tool_guide.md#step-7-control-application-data-model-clusters). ## Flashing @@ -267,4 +267,4 @@ To reboot the device, please run `rpcs.chip.rpc.Device.Reboot()`. ## OTA Please see -[mcxw71 OTA guide](../../../../docs/guides/nxp/nxp_mcxw71_ota_guide.md). +[mcxw71 OTA guide](../../../../docs/platforms/nxp/nxp_mcxw71_ota_guide.md). diff --git a/examples/lighting-app/silabs/README.md b/examples/lighting-app/silabs/README.md index 606208a3872432..7052d4f71221c3 100644 --- a/examples/lighting-app/silabs/README.md +++ b/examples/lighting-app/silabs/README.md @@ -200,7 +200,7 @@ combination with JLinkRTTClient as follows: - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. Take note that the RCP code is available directly through @@ -331,7 +331,7 @@ tracking code inside the `trackAlloc` and `trackFree` function For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) ## Group Communication (Multicast) diff --git a/examples/lighting-app/stm32/README.md b/examples/lighting-app/stm32/README.md index 26a6051d1a963e..d69df7d27757a1 100644 --- a/examples/lighting-app/stm32/README.md +++ b/examples/lighting-app/stm32/README.md @@ -14,7 +14,7 @@ This example demonstrates the Matter Lighting application on stm32 platform. ## Building and Commissioning Please refer -[Building and Commissioning](../../../docs/guides/stm32_getting_started_guide.md#building-the-example-application) +[Building and Commissioning](../../../docs/platforms/stm32/stm32_getting_started_guide.md#building-the-example-application) guides to get started ``` diff --git a/examples/lit-icd-app/esp32/README.md b/examples/lit-icd-app/esp32/README.md index 405f208bc54ead..9f36e17f827827 100644 --- a/examples/lit-icd-app/esp32/README.md +++ b/examples/lit-icd-app/esp32/README.md @@ -3,9 +3,9 @@ This example is meant to represent a power-save application. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. **Note**: Currently only Thread devices can run this example. diff --git a/examples/lit-icd-app/nrfconnect/README.md b/examples/lit-icd-app/nrfconnect/README.md index ff0f6b6699cdf8..81503f9e13c93f 100644 --- a/examples/lit-icd-app/nrfconnect/README.md +++ b/examples/lit-icd-app/nrfconnect/README.md @@ -42,7 +42,7 @@ This example is running on the nRF Connect platform, which is based on Nordic Semiconductor's [nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html) and [Zephyr RTOS](https://zephyrproject.org/). Visit Matter's -[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md) +[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md) to read more about the platform structure and dependencies. By default, the Matter accessory device has IPv6 networking disabled. You must @@ -183,7 +183,7 @@ procedure. **SEGGER J-Link USB port** can be used to get logs from the device or communicate with it using the -[command line interface](../../../docs/guides/nrfconnect_examples_cli.md). +[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md). **NFC port with antenna attached** can be used to start the [rendezvous](#bluetooth-le-rendezvous) by providing the commissioning @@ -376,7 +376,7 @@ depending on the selected board: the necessary application functionalities to optimize its performance. For more information, see the -[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md) +[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md) page.
@@ -400,17 +400,18 @@ directory: ## Testing the example -Check the [CLI tutorial](../../../docs/guides/nrfconnect_examples_cli.md) to -learn how to use command-line interface of the application. +Check the [CLI tutorial](../../../docs/platforms/nrf/nrfconnect_examples_cli.md) +to learn how to use command-line interface of the application. ### Testing using Linux CHIPTool -Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to see -how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to +Read the +[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md) +to see how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to commission and control the application within a Matter-enabled Thread network. ### Testing Device Firmware Upgrade Read the -[DFU tutorial](../../../docs/guides/nrfconnect_examples_software_update.md) to -see how to upgrade your device firmware. +[DFU tutorial](../../../docs/platforms/nrf/nrfconnect_examples_software_update.md) +to see how to upgrade your device firmware. diff --git a/examples/lit-icd-app/silabs/README.md b/examples/lit-icd-app/silabs/README.md index a38944bad547ee..4d1dee045c2e40 100644 --- a/examples/lit-icd-app/silabs/README.md +++ b/examples/lit-icd-app/silabs/README.md @@ -202,7 +202,7 @@ combination with JLinkRTTClient as follows: - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. Take note that the RCP code is available directly through @@ -317,7 +317,7 @@ tracking code inside the `trackAlloc` and `trackFree` function For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) ## Building options diff --git a/examples/lock-app/asr/README.md b/examples/lock-app/asr/README.md index 1da71f5800fd44..e81db2a331283e 100755 --- a/examples/lock-app/asr/README.md +++ b/examples/lock-app/asr/README.md @@ -17,7 +17,7 @@ reference for creating your own application. ## Building and Commissioning Please refer -[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application) +[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application) guides to get started ``` diff --git a/examples/lock-app/esp32/README.md b/examples/lock-app/esp32/README.md index f7f020ed10f702..119450658cb02e 100644 --- a/examples/lock-app/esp32/README.md +++ b/examples/lock-app/esp32/README.md @@ -3,16 +3,16 @@ This example demonstrates the mapping of OnOff cluster to lock/unlock logic. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. --- - [Cluster control](#cluster-control) - [Example Demo](#example-demo) -- [RPC console and Device Tracing](../../../docs/guides/esp32/rpc_console.md) +- [RPC console and Device Tracing](../../../docs/platforms/esp32/rpc_console.md) --- diff --git a/examples/lock-app/genio/README.md b/examples/lock-app/genio/README.md index 7c4582f707c4cd..051f6fa4f21a97 100644 --- a/examples/lock-app/genio/README.md +++ b/examples/lock-app/genio/README.md @@ -86,7 +86,7 @@ MediaTek platform. Chip tool standalone, Android or iOS app [CHIP - Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/chip_tool_guide.md) + Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/development_controllers/chip-tool/chip_tool_guide.md) Here is an example with the CHIP Tool controller: diff --git a/examples/lock-app/infineon/cyw30739/README.md b/examples/lock-app/infineon/cyw30739/README.md index 0c9b769b665c2a..c02d3a6c050d1a 100644 --- a/examples/lock-app/infineon/cyw30739/README.md +++ b/examples/lock-app/infineon/cyw30739/README.md @@ -212,7 +212,7 @@ Put the CYW30739 in to the recovery mode before running the flash script. - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. - You can provision and control the device using the Python controller REPL, diff --git a/examples/lock-app/infineon/psoc6/README.md b/examples/lock-app/infineon/psoc6/README.md index 0c8e8eb1e8c781..657b038af9ebc1 100644 --- a/examples/lock-app/infineon/psoc6/README.md +++ b/examples/lock-app/infineon/psoc6/README.md @@ -175,7 +175,7 @@ cloud, giving every IoT device its own unique identity. For the description of OPTIGA™ Trust M Provisioning with test DAC generation and PAI and CD storage, please refer to -[Infineon OPTIGA™ Trust M Provisioning](../../../../docs/guides/infineon_trustm_provisioning.md) +[Infineon OPTIGA™ Trust M Provisioning](../../../../docs/platforms/infineon/infineon_trustm_provisioning.md) After completing OPTIGA™ Trust M Provisioning, proceed to [Flashing the Application](#flashing-the-application) section to continue with @@ -185,4 +185,4 @@ subsequent steps. For the description of Software Update process with infineon PSoC6 example applications see -[Infineon PSoC6 OTA Software Update](../../../../docs/guides/infineon_psoc6_software_update.md) +[Infineon PSoC6 OTA Software Update](../../../../docs/platforms/infineon/infineon_psoc6_software_update.md) diff --git a/examples/lock-app/mbed/README.md b/examples/lock-app/mbed/README.md index 27eb42224678ab..1a8c34d1db9f3b 100644 --- a/examples/lock-app/mbed/README.md +++ b/examples/lock-app/mbed/README.md @@ -224,7 +224,8 @@ terminal. #### CHIP Tools -Read the [MbedCommissioning](../../../docs/guides/mbedos_commissioning.md) to +Read the +[MbedCommissioning](../../../docs/platforms/mbedos/mbedos_commissioning.md) to see how to use different CHIP tools to commission and control the application within a WiFi network. @@ -288,7 +289,7 @@ The example supports building and running on the following mbed-enabled devices: - More details and guidelines about porting new hardware into the Matter project with Mbed OS can be found in - [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) + [MbedNewTarget](../../../docs/platforms/mbedos/mbedos_add_new_target.md) - Some useful information about HW platform specific settings can be found in `lock-app/mbed/mbed_app.json`. Information about this file syntax and its meaning in mbed-os project can be found here: diff --git a/examples/lock-app/nrfconnect/README.md b/examples/lock-app/nrfconnect/README.md index 14385357bc56df..0a0743abd49151 100644 --- a/examples/lock-app/nrfconnect/README.md +++ b/examples/lock-app/nrfconnect/README.md @@ -44,7 +44,7 @@ This example is running on the nRF Connect platform, which is based on Nordic Semiconductor's [nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html) and [Zephyr RTOS](https://zephyrproject.org/). Visit Matter's -[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md) +[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md) to read more about the platform structure and dependencies. By default, the Matter accessory device has IPv6 networking disabled. You must @@ -255,7 +255,7 @@ opposite one. **SEGGER J-Link USB port** can be used to get logs from the device or communicate with it using the -[command line interface](../../../docs/guides/nrfconnect_examples_cli.md). +[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md). **NFC port with antenna attached** can be used to start the [rendezvous](#bluetooth-le-rendezvous) by providing the commissioning @@ -454,7 +454,7 @@ depending on the selected board: the necessary application functionalities to optimize its performance. For more information, see the -[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md) +[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md) page.
@@ -478,20 +478,21 @@ directory: ## Testing the example -Check the [CLI tutorial](../../../docs/guides/nrfconnect_examples_cli.md) to -learn how to use command-line interface of the application. +Check the [CLI tutorial](../../../docs/platforms/nrf/nrfconnect_examples_cli.md) +to learn how to use command-line interface of the application. ### Testing using Linux CHIPTool -Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to see -how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to +Read the +[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md) +to see how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to commission and control the application within a Matter-enabled Thread or Wi-Fi network. ### Testing using Android CHIPTool Read the -[Android commissioning guide](../../../docs/guides/nrfconnect_android_commissioning.md) +[Android commissioning guide](../../../docs/platforms/nrf/nrfconnect_android_commissioning.md) to see how to use [CHIPTool](../../../examples/android/CHIPTool/README.md) for Android smartphones to commission and control the application within a Matter-enabled Thread or Wi-Fi network. @@ -499,5 +500,5 @@ Matter-enabled Thread or Wi-Fi network. ### Testing Device Firmware Upgrade Read the -[DFU tutorial](../../../docs/guides/nrfconnect_examples_software_update.md) to -see how to upgrade your device firmware. +[DFU tutorial](../../../docs/platforms/nrf/nrfconnect_examples_software_update.md) +to see how to upgrade your device firmware. diff --git a/examples/lock-app/nxp/README.md b/examples/lock-app/nxp/README.md index c3cf4c112f8dfd..a758ef50d7a348 100644 --- a/examples/lock-app/nxp/README.md +++ b/examples/lock-app/nxp/README.md @@ -126,7 +126,7 @@ corresponding to data model target. Use `chip_with_factory_data=1` in the gn build command to enable factory data. For a full guide on manufacturing flow, please see -[Guide for writing manufacturing data on NXP devices](../../../docs/guides/nxp/nxp_manufacturing_flow.md). +[Guide for writing manufacturing data on NXP devices](../../../docs/platforms/nxp/nxp_manufacturing_flow.md). ## Flashing and debugging diff --git a/examples/lock-app/nxp/k32w1/README.md b/examples/lock-app/nxp/k32w1/README.md index a085d94afd29d6..88041b86e45634 100644 --- a/examples/lock-app/nxp/k32w1/README.md +++ b/examples/lock-app/nxp/k32w1/README.md @@ -163,7 +163,7 @@ Run -> Debug Configurations... -> C/C++ Application ## OTA Please see -[k32w1 OTA guide](../../../../docs/guides/nxp/nxp_mcxw71_ota_guide.md). +[k32w1 OTA guide](../../../../docs/platforms/nxp/nxp_mcxw71_ota_guide.md). ## Multiple BLE connections diff --git a/examples/lock-app/nxp/mcxw71/README.md b/examples/lock-app/nxp/mcxw71/README.md index db877d0c0075f7..92e177d0e30dcf 100644 --- a/examples/lock-app/nxp/mcxw71/README.md +++ b/examples/lock-app/nxp/mcxw71/README.md @@ -195,7 +195,7 @@ Run -> Debug Configurations... -> C/C++ Application ## OTA Please see -[mcxw71 OTA guide](../../../../docs/guides/nxp/nxp_mcxw71_ota_guide.md). +[mcxw71 OTA guide](../../../../docs/platforms/nxp/nxp_mcxw71_ota_guide.md). ## Multiple BLE connections diff --git a/examples/lock-app/openiotsdk/README.md b/examples/lock-app/openiotsdk/README.md index 69e569b9be2888..f81f2ad9fc9a4e 100644 --- a/examples/lock-app/openiotsdk/README.md +++ b/examples/lock-app/openiotsdk/README.md @@ -10,7 +10,7 @@ existing Matter network and can be controlled by it. For information on how to build, run, test and debug this example and further information about the platform it is run on see -[Open IoT SDK examples](../../../docs/guides/openiotsdk_examples.md). +[Open IoT SDK examples](../../../docs/platforms/openiotsdk/openiotsdk_examples.md). The example name to use in the scripts is `lock-app`. @@ -30,7 +30,7 @@ in the terminal. ### Commissioning Read the -[Open IoT SDK commissioning guide](../../../docs/guides/openiotsdk_commissioning.md) +[Open IoT SDK commissioning guide](../../../docs/platforms/openiotsdk/openiotsdk_commissioning.md) to see how to use the Matter controller to commission and control the application. diff --git a/examples/lock-app/silabs/README.md b/examples/lock-app/silabs/README.md index 4a16af08c01fda..7b4f7fdbdfaddf 100644 --- a/examples/lock-app/silabs/README.md +++ b/examples/lock-app/silabs/README.md @@ -223,7 +223,7 @@ combination with JLinkRTTClient as follows: - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. Take note that the RCP code is available directly through @@ -367,7 +367,7 @@ tracking code inside the `trackAlloc` and `trackFree` function For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) ## Building options diff --git a/examples/ota-provider-app/esp32/README.md b/examples/ota-provider-app/esp32/README.md index 2102aabd1a714d..7717aa1a888139 100644 --- a/examples/ota-provider-app/esp32/README.md +++ b/examples/ota-provider-app/esp32/README.md @@ -3,7 +3,7 @@ A prototype application that demonstrates OTA provider capabilities. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) --- @@ -16,7 +16,7 @@ Please ### Building and Commissioning Generate the OTA image as described -[here](../../../docs/guides/esp32/ota.md#generate-chip-ota-image) +[here](../../../docs/platforms/esp32/ota.md#generate-chip-ota-image) #### Configure OTA image to serve @@ -36,7 +36,7 @@ Generate the OTA image as described terminator. Follow -[ESP32 Application Usage Guide](../../../docs/guides/esp32/build_app_and_commission.md) +[ESP32 Application Usage Guide](../../../docs/platforms/esp32/build_app_and_commission.md) to Build, Flash, Monitor, and Commission the device. Once device is commissioned successfully, then please try below steps. diff --git a/examples/ota-requestor-app/asr/README.md b/examples/ota-requestor-app/asr/README.md index 7af3c25e92781e..d2cb6c8ff70e85 100755 --- a/examples/ota-requestor-app/asr/README.md +++ b/examples/ota-requestor-app/asr/README.md @@ -13,7 +13,7 @@ This example demonstrates the Matter OTA Requestor application on ASR platform. ## Building and Commissioning Please refer -[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application) +[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application) guides to get started ``` diff --git a/examples/ota-requestor-app/esp32/README.md b/examples/ota-requestor-app/esp32/README.md index 1951b4535b13ca..0f8972db50e9f0 100644 --- a/examples/ota-requestor-app/esp32/README.md +++ b/examples/ota-requestor-app/esp32/README.md @@ -3,9 +3,9 @@ A prototype application that demonstrates OTA Requestor capabilities. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. --- @@ -13,7 +13,7 @@ guides to get started. - [Prerequisite](#prerequisite) - [Query for an OTA Image](#query-for-an-ota-image) - [ESP32 OTA Requestor with Linux OTA Provider](#esp32-ota-requestor-with-linux-ota-provider) -- [RPC console and Device Tracing](../../../docs/guides/esp32/rpc_console.md) +- [RPC console and Device Tracing](../../../docs/platforms/esp32/rpc_console.md) --- diff --git a/examples/ota-requestor-app/genio/README.md b/examples/ota-requestor-app/genio/README.md index e8675adc62199b..487056c08f4108 100644 --- a/examples/ota-requestor-app/genio/README.md +++ b/examples/ota-requestor-app/genio/README.md @@ -86,7 +86,7 @@ MediaTek platform. Chip tool standalone, Android or iOS app [CHIP - Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/chip_tool_guide.md) + Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/development_controllers/chip-tool/chip_tool_guide.md) Here is an example with the CHIP Tool controller: diff --git a/examples/ota-requestor-app/mbed/README.md b/examples/ota-requestor-app/mbed/README.md index 6f8bcdaf53c380..0de672921ccccb 100644 --- a/examples/ota-requestor-app/mbed/README.md +++ b/examples/ota-requestor-app/mbed/README.md @@ -231,7 +231,8 @@ in the terminal. #### CHIP Tools -Read the [MbedCommissioning](../../../docs/guides/mbedos_commissioning.md) to +Read the +[MbedCommissioning](../../../docs/platforms/mbedos/mbedos_commissioning.md) to see how to use different CHIP tools to commission and control the application within a WiFi network. @@ -266,7 +267,7 @@ The example supports building and running on the following mbed-enabled devices: - More details and guidelines about porting new hardware into the Matter project with Mbed OS can be found in - [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) + [MbedNewTarget](../../../docs/platforms/mbedos/mbedos_add_new_target.md) - Some useful information about HW platform specific settings can be found in `ota-requestor-app/mbed/mbed_app.json`. Information about this file syntax and its meaning in mbed-os project can be found here: diff --git a/examples/ota-requestor-app/openiotsdk/README.md b/examples/ota-requestor-app/openiotsdk/README.md index d9a98c44d3888a..042c30d17f9e4b 100644 --- a/examples/ota-requestor-app/openiotsdk/README.md +++ b/examples/ota-requestor-app/openiotsdk/README.md @@ -9,8 +9,8 @@ file and apply it. The application is configured to support: -- [TF-M](../../../docs/guides/openiotsdk_examples.md#trusted-firmware-m) -- [Device Firmware Update](../../../docs/guides/openiotsdk_examples.md#device-firmware-update) +- [TF-M](../../../docs/platforms/openiotsdk/openiotsdk_examples.md#trusted-firmware-m) +- [Device Firmware Update](../../../docs/platforms/openiotsdk/openiotsdk_examples.md#device-firmware-update) The example behaves as a Matter accessory, device that can be paired into an existing Matter network and can be controlled by it. @@ -19,7 +19,7 @@ existing Matter network and can be controlled by it. For information on how to build, run, test and debug this example and further information about the platform it is run on see -[Open IoT SDK examples](../../../docs/guides/openiotsdk_examples.md). +[Open IoT SDK examples](../../../docs/platforms/openiotsdk/openiotsdk_examples.md). The example name to use in the scripts is `ota-requestor-app`. @@ -39,14 +39,14 @@ follow traces in the terminal. ### Commissioning Read the -[Open IoT SDK commissioning guide](../../../docs/guides/openiotsdk_commissioning.md) +[Open IoT SDK commissioning guide](../../../docs/platforms/openiotsdk/openiotsdk_commissioning.md) to see how to use the Matter controller to commission and control the application. ### Device Firmware Upgrade Read the -[Matter Open IoT SDK Example Device Firmware Upgrade](../../../docs/guides/openiotsdk_examples_software_update.md) +[Matter Open IoT SDK Example Device Firmware Upgrade](../../../docs/platforms/openiotsdk/openiotsdk_examples_software_update.md) to see how to use Matter OTA for firmware update. ### OtaSoftwareUpdateRequestor cluster usage @@ -78,4 +78,4 @@ downloading the update image. If this step is completed, a new image will be installed and the application will be reboot. More details about device firmware update over Matter can be found -[here](../../../docs/guides/openiotsdk_examples_software_update.md). +[here](../../../docs/platforms/openiotsdk/openiotsdk_examples_software_update.md). diff --git a/examples/persistent-storage/esp32/README.md b/examples/persistent-storage/esp32/README.md index d87b894060af13..e6820508dfc529 100644 --- a/examples/persistent-storage/esp32/README.md +++ b/examples/persistent-storage/esp32/README.md @@ -3,9 +3,9 @@ An example testing and demonstrating the key value storage API. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. --- diff --git a/examples/pigweed-app/esp32/README.md b/examples/pigweed-app/esp32/README.md index 8044faebd14bb0..ebd63eda45ab6b 100644 --- a/examples/pigweed-app/esp32/README.md +++ b/examples/pigweed-app/esp32/README.md @@ -1,9 +1,9 @@ # CHIP ESP32 Pigweed Example Application Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. --- diff --git a/examples/pigweed-app/mbed/README.md b/examples/pigweed-app/mbed/README.md index 8ca7aca3c221c6..3932e4f9619667 100644 --- a/examples/pigweed-app/mbed/README.md +++ b/examples/pigweed-app/mbed/README.md @@ -249,7 +249,7 @@ The example supports building and running on the following mbed-enabled devices: - More details and guidelines about porting new hardware into the Matter project with Mbed OS can be found in - [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) + [MbedNewTarget](../../../docs/platforms/mbedos/mbedos_add_new_target.md) - Some useful information about HW platform specific settings can be found in `pigweed-app/mbed/mbed_app.json`. Information about this file syntax and its meaning in mbed-os project can be found here: diff --git a/examples/pump-app/nrfconnect/README.md b/examples/pump-app/nrfconnect/README.md index 16fbc2f0143c2c..98d3e1518b43a2 100644 --- a/examples/pump-app/nrfconnect/README.md +++ b/examples/pump-app/nrfconnect/README.md @@ -42,7 +42,7 @@ This example is running on the nRF Connect platform, which is based on Nordic Semiconductor's [nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html) and [Zephyr RTOS](https://zephyrproject.org/). Visit Matter's -[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md) +[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md) to read more about the platform structure and dependencies. The Matter device that runs the pump application is controlled by the Matter @@ -213,7 +213,7 @@ by default). **SEGGER J-Link USB port** can be used to get logs from the device or communicate with it using the -[command line interface](../../../docs/guides/nrfconnect_examples_cli.md). +[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md). **NFC port with antenna attached** can be used to start the [rendezvous](#bluetooth-le-rendezvous) by providing the commissioning @@ -415,7 +415,7 @@ depending on the selected board: the necessary application functionalities to optimize its performance. For more information, see the -[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md) +[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md) page.
@@ -439,19 +439,20 @@ directory: ## Testing the example -Check the [CLI tutorial](../../../docs/guides/nrfconnect_examples_cli.md) to -learn how to use command-line interface of the application. +Check the [CLI tutorial](../../../docs/platforms/nrf/nrfconnect_examples_cli.md) +to learn how to use command-line interface of the application. ### Testing using Linux CHIPTool -Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to see -how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to +Read the +[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md) +to see how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to commission and control the application within a Matter-enabled Thread network. ### Testing using Android CHIPTool Read the -[Android commissioning guide](../../../docs/guides/nrfconnect_android_commissioning.md) +[Android commissioning guide](../../../docs/platforms/nrf/nrfconnect_android_commissioning.md) to see how to use [CHIPTool](../../../examples/android/CHIPTool/README.md) for Android smartphones to commission and control the application within a Matter-enabled Thread network. diff --git a/examples/pump-app/silabs/README.md b/examples/pump-app/silabs/README.md index 7bde704c4aa5b0..70d83e4de5f70c 100644 --- a/examples/pump-app/silabs/README.md +++ b/examples/pump-app/silabs/README.md @@ -197,7 +197,7 @@ combination with JLinkRTTClient as follows: - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. Take note that the RCP code is available directly through @@ -307,7 +307,7 @@ tracking code inside the `trackAlloc` and `trackFree` function For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) ## Group Communication (Multicast) diff --git a/examples/pump-controller-app/nrfconnect/README.md b/examples/pump-controller-app/nrfconnect/README.md index 64f37c4bb6a7aa..b492c3ec383c38 100644 --- a/examples/pump-controller-app/nrfconnect/README.md +++ b/examples/pump-controller-app/nrfconnect/README.md @@ -43,7 +43,7 @@ This example is running on the nRF Connect platform, which is based on Nordic Semiconductor's [nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html) and [Zephyr RTOS](https://zephyrproject.org/). Visit CHIP's -[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md) +[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md) to read more about the platform structure and dependencies. The Matter device that runs the pump application is controlled by the Matter @@ -214,7 +214,7 @@ by default). **SEGGER J-Link USB port** can be used to get logs from the device or communicate with it using the -[command line interface](../../../docs/guides/nrfconnect_examples_cli.md). +[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md). **NFC port with antenna attached** can be used to start the [rendezvous](#bluetooth-le-rendezvous) by providing the commissioning @@ -415,7 +415,7 @@ depending on the selected board: the necessary application functionalities to optimize its performance. For more information, see the -[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md) +[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md) page.
@@ -439,19 +439,20 @@ directory: ## Testing the example -Check the [CLI tutorial](../../../docs/guides/nrfconnect_examples_cli.md) to -learn how to use command-line interface of the application. +Check the [CLI tutorial](../../../docs/platforms/nrf/nrfconnect_examples_cli.md) +to learn how to use command-line interface of the application. ### Testing using Linux CHIPTool -Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to see -how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to +Read the +[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md) +to see how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to commission and control the application within a Matter-enabled Thread network. ### Testing using Android CHIPTool Read the -[Android commissioning guide](../../../docs/guides/nrfconnect_android_commissioning.md) +[Android commissioning guide](../../../docs/platforms/nrf/nrfconnect_android_commissioning.md) to see how to use [CHIPTool](../../../examples/android/CHIPTool/README.md) for Android smartphones to commission and control the application within a CHIP-enabled Thread network. diff --git a/examples/refrigerator-app/linux/README.md b/examples/refrigerator-app/linux/README.md index c969832bcd4665..cf66321b9a6ac9 100644 --- a/examples/refrigerator-app/linux/README.md +++ b/examples/refrigerator-app/linux/README.md @@ -7,7 +7,7 @@ for Raspberry Pi Desktop 20.10 (aarch64)** To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) for +[README document](../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details.
diff --git a/examples/refrigerator-app/silabs/README.md b/examples/refrigerator-app/silabs/README.md index 3396ee6325073b..d063937a6d1692 100644 --- a/examples/refrigerator-app/silabs/README.md +++ b/examples/refrigerator-app/silabs/README.md @@ -200,7 +200,7 @@ combination with JLinkRTTClient as follows: - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](../../../docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. Take note that the RCP code is available directly through @@ -338,7 +338,7 @@ combination with JLinkRTTClient as follows: For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) For the description of Software Update process with SiWx917 example applications see diff --git a/examples/shell/mbed/README.md b/examples/shell/mbed/README.md index 16a9f987bc5c8f..c2991270a570cb 100644 --- a/examples/shell/mbed/README.md +++ b/examples/shell/mbed/README.md @@ -207,7 +207,7 @@ The example supports building and running on the following mbed-enabled devices: - More details and guidelines about porting new hardware into the Matter project with Mbed OS can be found in - [MbedNewTarget](../../../docs/guides/mbedos_add_new_target.md) + [MbedNewTarget](../../../docs/platforms/mbedos/mbedos_add_new_target.md) - Some useful information about HW platform specific settings can be found in `shell/mbed/mbed_app.json`. Information about this file syntax and its meaning in mbed-os project can be found here: diff --git a/examples/shell/openiotsdk/README.md b/examples/shell/openiotsdk/README.md index b633fa7b0143a3..7670c19437cda4 100644 --- a/examples/shell/openiotsdk/README.md +++ b/examples/shell/openiotsdk/README.md @@ -12,7 +12,7 @@ For more details see For information on how to build, run, test and debug this example and further information about the platform it is run on see -[Open IoT SDK examples](../../../docs/guides/openiotsdk_examples.md). +[Open IoT SDK examples](../../../docs/platforms/openiotsdk/openiotsdk_examples.md). The example name to use in the scripts is `shell`. diff --git a/examples/smoke-co-alarm-app/silabs/README.md b/examples/smoke-co-alarm-app/silabs/README.md index e16621df11b2fd..7928107b35de47 100644 --- a/examples/smoke-co-alarm-app/silabs/README.md +++ b/examples/smoke-co-alarm-app/silabs/README.md @@ -220,7 +220,7 @@ combination with JLinkRTTClient as follows: - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. Take note that the RCP code is available directly through @@ -317,7 +317,7 @@ tracking code inside the `trackAlloc` and `trackFree` function For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) ## Building options diff --git a/examples/temperature-measurement-app/asr/README.md b/examples/temperature-measurement-app/asr/README.md index 72c01f8973dcdd..1382849e594f57 100755 --- a/examples/temperature-measurement-app/asr/README.md +++ b/examples/temperature-measurement-app/asr/README.md @@ -14,7 +14,7 @@ temperature sensor. ## Building and Commissioning Please refer -[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application) +[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application) guides to get started ``` diff --git a/examples/temperature-measurement-app/esp32/README.md b/examples/temperature-measurement-app/esp32/README.md index 71210102d932bd..a3276ae37299a6 100644 --- a/examples/temperature-measurement-app/esp32/README.md +++ b/examples/temperature-measurement-app/esp32/README.md @@ -3,9 +3,9 @@ This example is meant to represent a minimal-sized application. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. --- diff --git a/examples/thermostat/asr/README.md b/examples/thermostat/asr/README.md index 0392b82086ca2d..1422efee18bd75 100755 --- a/examples/thermostat/asr/README.md +++ b/examples/thermostat/asr/README.md @@ -14,7 +14,7 @@ temperature from local sensor. ## Building and Commissioning Please refer -[Building and Commissioning](../../../docs/guides/asr_getting_started_guide.md#building-the-example-application) +[Building and Commissioning](../../../docs/platforms/asr/asr_getting_started_guide.md#building-the-example-application) guides to get started ``` diff --git a/examples/thermostat/genio/README.md b/examples/thermostat/genio/README.md index 4ae5bba01758cb..b9630f7e0a0f1a 100644 --- a/examples/thermostat/genio/README.md +++ b/examples/thermostat/genio/README.md @@ -86,7 +86,7 @@ MediaTek platform. Chip tool standalone, Android or iOS app [CHIP - Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/chip_tool_guide.md) + Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/development_controllers/chip-tool/chip_tool_guide.md) Here is an example with the CHIP Tool controller: diff --git a/examples/thermostat/infineon/cyw30739/README.md b/examples/thermostat/infineon/cyw30739/README.md index 0b94884fe134a4..d514fefdf62861 100644 --- a/examples/thermostat/infineon/cyw30739/README.md +++ b/examples/thermostat/infineon/cyw30739/README.md @@ -212,7 +212,7 @@ Put the CYW30739 in to the recovery mode before running the flash script. - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. - For this example to work, it is necessary to have a second CYW30739 device diff --git a/examples/thermostat/nxp/linux-imx/imx8m/README.md b/examples/thermostat/nxp/linux-imx/imx8m/README.md index e20ff1065d3dfb..01941f58e74799 100644 --- a/examples/thermostat/nxp/linux-imx/imx8m/README.md +++ b/examples/thermostat/nxp/linux-imx/imx8m/README.md @@ -1,4 +1,4 @@ To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) +[README document](../../../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details. diff --git a/examples/thermostat/nxp/linux-se05x/README.md b/examples/thermostat/nxp/linux-se05x/README.md index e20ff1065d3dfb..01941f58e74799 100644 --- a/examples/thermostat/nxp/linux-se05x/README.md +++ b/examples/thermostat/nxp/linux-se05x/README.md @@ -1,4 +1,4 @@ To cross-compile this example on x64 host and run on **NXP i.MX 8M Mini** **EVK**, see the associated -[README document](../../../../../docs/guides/nxp/nxp_imx8m_linux_examples.md) +[README document](../../../../../docs/platforms/nxp/nxp_imx8m_linux_examples.md) for details. diff --git a/examples/thermostat/silabs/README.md b/examples/thermostat/silabs/README.md index 25ba47891b5047..3205352bf07f1c 100644 --- a/examples/thermostat/silabs/README.md +++ b/examples/thermostat/silabs/README.md @@ -206,7 +206,7 @@ combination with JLinkRTTClient as follows: - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. Take note that the RCP code is available directly through @@ -324,7 +324,7 @@ tracking code inside the `trackAlloc` and `trackFree` function For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) ## Building options diff --git a/examples/thread-br-app/esp32/README.md b/examples/thread-br-app/esp32/README.md index 576339cd43b224..2578a106abeb3b 100644 --- a/examples/thread-br-app/esp32/README.md +++ b/examples/thread-br-app/esp32/README.md @@ -4,9 +4,9 @@ A prototype application that demonstrates OpenThread Border Router on ESP32-S3 + ESP32-H2 Thread Border Router DevKit Board. Please -[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md) +[setup ESP-IDF and CHIP Environment](../../../docs/platforms/esp32/setup_idf_chip.md) and refer -[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md) +[building and commissioning](../../../docs/platforms/esp32/build_app_and_commission.md) guides to get started. --- diff --git a/examples/tv-app/openiotsdk/README.md b/examples/tv-app/openiotsdk/README.md index 8702f294e1ea43..5a148260ddef2e 100644 --- a/examples/tv-app/openiotsdk/README.md +++ b/examples/tv-app/openiotsdk/README.md @@ -19,7 +19,7 @@ paired into an existing Matter network and can be controlled by it. For information on how to build, run, test and debug this example and further information about the platform it is run on see -[Open IoT SDK examples](../../../docs/guides/openiotsdk_examples.md). +[Open IoT SDK examples](../../../docs/platforms/openiotsdk/openiotsdk_examples.md). The example name to use in the scripts is `tv-app`. @@ -68,7 +68,7 @@ Run the `app help` command to get all supported commands and their usage. ## Commissioning Read the -[Open IoT SDK commissioning guide](../../../docs/guides/openiotsdk_commissioning.md) +[Open IoT SDK commissioning guide](../../../docs/platforms/openiotsdk/openiotsdk_commissioning.md) to see how to use the Matter controller to commission and control the application. diff --git a/examples/tv-casting-app/android/README.md b/examples/tv-casting-app/android/README.md index b620c1ac5cbdf4..047f960f817600 100644 --- a/examples/tv-casting-app/android/README.md +++ b/examples/tv-casting-app/android/README.md @@ -21,7 +21,7 @@ the TV. ## Requirements for building Refer to -[this file](../../../docs/guides/android_building.md#requirements-for-building) +[this file](../../../docs/platforms/android/android_building.md#requirements-for-building) to download the recommended version for the Android SDK and NDK for your machine. Set the `$ANDROID_HOME` environment variable to where the SDK is downloaded and the `$ANDROID_NDK_HOME` environment variable to point to where diff --git a/examples/virtual-device-app/android/README.md b/examples/virtual-device-app/android/README.md index a5a1ce3a659008..2bb74a79f3f328 100644 --- a/examples/virtual-device-app/android/README.md +++ b/examples/virtual-device-app/android/README.md @@ -23,7 +23,7 @@ This app offers the following features: ## Requirements for building For information about how to build the application, see the -[Building Android](../../../docs/guides/android_building.md) guide. +[Building Android](../../../docs/platforms/android/android_building.md) guide. ## Preparing for build diff --git a/examples/window-app/nrfconnect/README.md b/examples/window-app/nrfconnect/README.md index 964af0c265cb7e..c743bb22f2a943 100644 --- a/examples/window-app/nrfconnect/README.md +++ b/examples/window-app/nrfconnect/README.md @@ -40,7 +40,7 @@ This example is running on the nRF Connect platform, which is based on Nordic Semiconductor's [nRF Connect SDK](https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/index.html) and [Zephyr RTOS](https://zephyrproject.org/). Visit Matter's -[nRF Connect platform overview](../../../docs/guides/nrfconnect_platform_overview.md) +[nRF Connect platform overview](../../../docs/platforms/nrf/nrfconnect_platform_overview.md) to read more about the platform structure and dependencies. The Matter device that runs the window shutter application is controlled by the @@ -229,7 +229,7 @@ by default). **SEGGER J-Link USB port** can be used to get logs from the device or communicate with it using the -[command line interface](../../../docs/guides/nrfconnect_examples_cli.md). +[command line interface](../../../docs/platforms/nrf/nrfconnect_examples_cli.md). **NFC port with antenna attached** can be used to start the [rendezvous](#bluetooth-le-rendezvous) by providing the commissioning @@ -430,7 +430,7 @@ depending on the selected board: only the necessary application functionalities to optimize its performance. For more information, see the -[Configuring nRF Connect SDK examples](../../../docs/guides/nrfconnect_examples_configuration.md) +[Configuring nRF Connect SDK examples](../../../docs/platforms/nrf/nrfconnect_examples_configuration.md) page.
@@ -454,19 +454,20 @@ directory: ## Testing the example -Check the [CLI tutorial](../../../docs/guides/nrfconnect_examples_cli.md) to -learn how to use command-line interface of the application. +Check the [CLI tutorial](../../../docs/platforms/nrf/nrfconnect_examples_cli.md) +to learn how to use command-line interface of the application. ### Testing using Linux CHIPTool -Read the [CHIP Tool user guide](../../../docs/guides/chip_tool_guide.md) to see -how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to +Read the +[CHIP Tool user guide](../../../docs/development_controllers/chip-tool/chip_tool_guide.md) +to see how to use [CHIP Tool for Linux or mac OS](../../chip-tool/README.md) to commission and control the application within a Matter-enabled Thread network. ### Testing using Android CHIPTool Read the -[Android commissioning guide](../../../docs/guides/nrfconnect_android_commissioning.md) +[Android commissioning guide](../../../docs/platforms/nrf/nrfconnect_android_commissioning.md) to see how to use [CHIPTool](../../../examples/android/CHIPTool/README.md) for Android smartphones to commission and control the application within a Matter-enabled Thread network. @@ -474,5 +475,5 @@ Matter-enabled Thread network. ### Testing Device Firmware Upgrade Read the -[DFU tutorial](../../../docs/guides/nrfconnect_examples_software_update.md) to -see how to upgrade your device firmware. +[DFU tutorial](../../../docs/platforms/nrf/nrfconnect_examples_software_update.md) +to see how to upgrade your device firmware. diff --git a/examples/window-app/silabs/README.md b/examples/window-app/silabs/README.md index 47dbb77a7f4405..a5e985cec04b29 100644 --- a/examples/window-app/silabs/README.md +++ b/examples/window-app/silabs/README.md @@ -195,7 +195,7 @@ combination with JLinkRTTClient as follows: - It is assumed here that you already have an OpenThread border router configured and running. If not see the following guide - [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/openthread_border_router_pi.md) + [Openthread_border_router](https://github.com/project-chip/connectedhomeip/blob/master/docs/platforms/openthread/openthread_border_router_pi.md) for more information on how to setup a border router on a raspberryPi. Take note that the RCP code is available directly through @@ -324,7 +324,7 @@ combination with JLinkRTTClient as follows: For the description of Software Update process with EFR32 example applications see -[EFR32 OTA Software Update](../../../docs/guides/silabs_efr32_software_update.md) +[EFR32 OTA Software Update](../../../docs/platforms/silabs/silabs_efr32_software_update.md) ## Building options diff --git a/scripts/tools/nxp/factory_data_generator/README.md b/scripts/tools/nxp/factory_data_generator/README.md index 0aacaeb81a29b6..e218e5ffd8f435 100644 --- a/scripts/tools/nxp/factory_data_generator/README.md +++ b/scripts/tools/nxp/factory_data_generator/README.md @@ -1,7 +1,7 @@ # NXP Factory Data Generator For usage of the tool, please see -[Guide for writing manufacturing data on NXP devices](../../../../docs/guides/nxp/nxp_manufacturing_flow.md). +[Guide for writing manufacturing data on NXP devices](../../../../docs/platforms/nxp/nxp_manufacturing_flow.md). ## Tool implementation diff --git a/src/controller/java/tests/README.md b/src/controller/java/tests/README.md index 14aedc4b6053ba..a389cfde6e85ea 100644 --- a/src/controller/java/tests/README.md +++ b/src/controller/java/tests/README.md @@ -4,5 +4,6 @@ ## Building & setting up emulator -Please refer to [Building Android](../../../../docs/guides/android_building.md) -guide to learn how to setup & run these tests in an android emulator. +Please refer to +[Building Android](../../../../docs/platforms/android/android_building.md) guide +to learn how to setup & run these tests in an android emulator.