From 813c2455b7af50f9f39810040a7e0782b22c05fc Mon Sep 17 00:00:00 2001 From: Ethan Zhou <73028112+ethanzhouyc@users.noreply.github.com> Date: Mon, 28 Oct 2024 17:12:28 -0400 Subject: [PATCH 1/8] update zap version to 10.24 (#36271) --- scripts/setup/zap.json | 4 ++-- scripts/setup/zap.version | 2 +- scripts/tools/zap/zap_execution.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/setup/zap.json b/scripts/setup/zap.json index 8b18116caaa5be..8b64288e667f04 100644 --- a/scripts/setup/zap.json +++ b/scripts/setup/zap.json @@ -8,13 +8,13 @@ "mac-amd64", "windows-amd64" ], - "tags": ["version:2@v2024.10.15-nightly.1"] + "tags": ["version:2@v2024.10.24-nightly.1"] }, { "_comment": "Always get the amd64 version on mac until usable arm64 zap build is available", "path": "fuchsia/third_party/zap/mac-amd64", "platforms": ["mac-arm64"], - "tags": ["version:2@v2024.10.15-nightly.1"] + "tags": ["version:2@v2024.10.24-nightly.1"] } ] } diff --git a/scripts/setup/zap.version b/scripts/setup/zap.version index e58d8c5cac5d73..0696cc2123a3ed 100644 --- a/scripts/setup/zap.version +++ b/scripts/setup/zap.version @@ -1 +1 @@ -v2024.10.15-nightly +v2024.10.24-nightly diff --git a/scripts/tools/zap/zap_execution.py b/scripts/tools/zap/zap_execution.py index 9ed0b0f222ab38..72d68a74ffd4c2 100644 --- a/scripts/tools/zap/zap_execution.py +++ b/scripts/tools/zap/zap_execution.py @@ -23,7 +23,7 @@ # Use scripts/tools/zap/version_update.py to manage ZAP versioning as many # files may need updating for versions # -MIN_ZAP_VERSION = '2024.10.15' +MIN_ZAP_VERSION = '2024.10.24' class ZapTool: From bcdddaa9fd53d8b6d71daf6dde6d5276ce4c8d5c Mon Sep 17 00:00:00 2001 From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> Date: Mon, 28 Oct 2024 17:48:23 -0400 Subject: [PATCH 2/8] =?UTF-8?q?[Silabs]=20Add=20logs=20for=20ble=20connect?= =?UTF-8?q?ion=20negotiations=20events.=20add=20a=20step=20to=20increa?= =?UTF-8?q?=E2=80=A6=20(#36254)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add logs for ble connection negotiations events. add a step to increase the ble connection timeout when it is under a prefer threshold. * Update src/platform/silabs/efr32/BLEManagerImpl.cpp Co-authored-by: Kiel Oleson * Apply suggestions from code review Co-authored-by: Ricardo Casallas <77841255+rcasallas-silabs@users.noreply.github.com> --------- Co-authored-by: Kiel Oleson Co-authored-by: Ricardo Casallas <77841255+rcasallas-silabs@users.noreply.github.com> --- src/platform/silabs/BLEManagerImpl.h | 1 + src/platform/silabs/efr32/BLEManagerImpl.cpp | 28 ++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/platform/silabs/BLEManagerImpl.h b/src/platform/silabs/BLEManagerImpl.h index 9380accce38e55..9ebf113c4f8afa 100644 --- a/src/platform/silabs/BLEManagerImpl.h +++ b/src/platform/silabs/BLEManagerImpl.h @@ -68,6 +68,7 @@ class BLEManagerImpl final : public BLEManager, private BleLayer, private BlePla int32_t SendBLEAdvertisementCommand(void); #else void HandleConnectEvent(volatile sl_bt_msg_t * evt); + void HandleConnectParams(volatile sl_bt_msg_t * evt); void HandleConnectionCloseEvent(volatile sl_bt_msg_t * evt); void HandleWriteEvent(volatile sl_bt_msg_t * evt); void UpdateMtu(volatile sl_bt_msg_t * evt); diff --git a/src/platform/silabs/efr32/BLEManagerImpl.cpp b/src/platform/silabs/efr32/BLEManagerImpl.cpp index ef553bffa152a1..1f8704896f71cb 100644 --- a/src/platform/silabs/efr32/BLEManagerImpl.cpp +++ b/src/platform/silabs/efr32/BLEManagerImpl.cpp @@ -674,6 +674,21 @@ void BLEManagerImpl::HandleConnectEvent(volatile sl_bt_msg_t * evt) PlatformMgr().ScheduleWork(DriveBLEState, 0); } +void BLEManagerImpl::HandleConnectParams(volatile sl_bt_msg_t * evt) +{ + sl_bt_evt_connection_parameters_t * con_param_evt = (sl_bt_evt_connection_parameters_t *) &(evt->data); + + if (con_param_evt->timeout < BLE_CONFIG_TIMEOUT) + { + ChipLogProgress(DeviceLayer, "Request to increase the connection timeout from %d to %d", con_param_evt->timeout, + BLE_CONFIG_TIMEOUT); + sl_bt_connection_set_parameters(con_param_evt->connection, BLE_CONFIG_MIN_INTERVAL, BLE_CONFIG_MAX_INTERVAL, + BLE_CONFIG_LATENCY, BLE_CONFIG_TIMEOUT, BLE_CONFIG_MIN_CE_LENGTH, BLE_CONFIG_MAX_CE_LENGTH); + } + + PlatformMgr().ScheduleWork(DriveBLEState, 0); +} + void BLEManagerImpl::HandleConnectionCloseEvent(volatile sl_bt_msg_t * evt) { sl_bt_evt_connection_closed_t * conn_evt = (sl_bt_evt_connection_closed_t *) &(evt->data); @@ -1061,11 +1076,20 @@ extern "C" void sl_bt_on_event(sl_bt_msg_t * evt) } break; case sl_bt_evt_connection_parameters_id: { - // ChipLogProgress(DeviceLayer, "Connection parameter ID received"); + ChipLogProgress(DeviceLayer, "Connection parameter ID received - i:%d, l:%d, t:%d, sm:%d", + evt->data.evt_connection_parameters.interval, evt->data.evt_connection_parameters.latency, + evt->data.evt_connection_parameters.timeout, evt->data.evt_connection_parameters.security_mode); + chip::DeviceLayer::Internal::BLEMgrImpl().HandleConnectParams(evt); } break; case sl_bt_evt_connection_phy_status_id: { - // ChipLogProgress(DeviceLayer, "PHY update procedure is completed"); + ChipLogProgress(DeviceLayer, "Connection phy status ID received - phy:%d", evt->data.evt_connection_phy_status.phy); + } + break; + case sl_bt_evt_connection_data_length_id: { + ChipLogProgress(DeviceLayer, "Connection data length ID received - txL:%d, txT:%d, rxL:%d, rxL:%d", + evt->data.evt_connection_data_length.tx_data_len, evt->data.evt_connection_data_length.tx_time_us, + evt->data.evt_connection_data_length.rx_data_len, evt->data.evt_connection_data_length.rx_time_us); } break; case sl_bt_evt_connection_closed_id: { From cea1e36e314a760e0e633dcc735de9a1d130cfde Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Tue, 29 Oct 2024 01:49:04 +0100 Subject: [PATCH 3/8] =?UTF-8?q?[darwin-framework-tool]=20Set=20device=20de?= =?UTF-8?q?legate=20when=20using=20MTRDevice=20with=20=E2=80=93use-mtr-dev?= =?UTF-8?q?ice=20(#36263)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/darwin-framework-tool/BUILD.gn | 2 + .../commands/clusters/ReportCommandBridge.h | 4 +- .../commands/common/CHIPCommandBridge.h | 2 + .../commands/common/CHIPCommandBridge.mm | 15 ++++ .../commands/common/DeviceDelegate.h | 23 +++++++ .../commands/common/DeviceDelegate.mm | 69 +++++++++++++++++++ .../Matter.xcodeproj/project.pbxproj | 8 +++ 7 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 examples/darwin-framework-tool/commands/common/DeviceDelegate.h create mode 100644 examples/darwin-framework-tool/commands/common/DeviceDelegate.mm diff --git a/examples/darwin-framework-tool/BUILD.gn b/examples/darwin-framework-tool/BUILD.gn index 0d1e142f1074df..1c492ba10a1241 100644 --- a/examples/darwin-framework-tool/BUILD.gn +++ b/examples/darwin-framework-tool/BUILD.gn @@ -194,6 +194,8 @@ executable("darwin-framework-tool") { "commands/common/CertificateIssuer.mm", "commands/common/ControllerStorage.h", "commands/common/ControllerStorage.mm", + "commands/common/DeviceDelegate.h", + "commands/common/DeviceDelegate.mm", "commands/common/MTRDevice_Externs.h", "commands/common/MTRError.mm", "commands/common/MTRError_Utils.h", diff --git a/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h b/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h index cd8125e3b12273..ba3428341ec8e8 100644 --- a/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h +++ b/examples/darwin-framework-tool/commands/clusters/ReportCommandBridge.h @@ -105,9 +105,7 @@ class ReadAttribute : public ModelCommand { LogNSError("Error reading attribute", error); RemoteDataModelLogger::LogAttributeErrorAsJSON(endpoint, cluster, attribute, error); } else { - for (id item in values) { - NSLog(@"Response Item: %@", [item description]); - } + NSLog(@"cluster (0x%08" PRIX32 ") ReadAttribute (0x%08" PRIX32 ") on endpoint %u: %@", mClusterId, mAttributeId, endpointId, values); RemoteDataModelLogger::LogAttributeAsJSON(endpoint, cluster, attribute, values); } diff --git a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h index 90f3a6c56415f6..2f53c0dd7bc4db 100644 --- a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h +++ b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.h @@ -52,6 +52,7 @@ class CHIPCommandBridge : public Command { AddArgument("commissioner-vendor-id", 0, UINT16_MAX, &mCommissionerVendorId, "The vendor id to use for darwin-framework-tool. If not provided, chip::VendorId::TestVendor1 (65521, 0xFFF1) will be " "used."); + AddArgument("pretend-thread-enabled", 0, 1, &mPretendThreadEnabled, "When the command is issued using an MTRDevice (via -use-mtr-device), instructs the MTRDevice to treat the target device as a Thread device."); } /////////// Command Interface ///////// @@ -164,4 +165,5 @@ class CHIPCommandBridge : public Command { chip::Optional mPaaTrustStorePath; chip::Optional mCommissionerVendorId; std::string mCurrentIdentity; + chip::Optional mPretendThreadEnabled; }; diff --git a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm index b237acaa5b7132..2eba24c84ad44c 100644 --- a/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm +++ b/examples/darwin-framework-tool/commands/common/CHIPCommandBridge.mm @@ -28,12 +28,15 @@ #import "CHIPCommandStorageDelegate.h" #import "CertificateIssuer.h" #import "ControllerStorage.h" +#import "DeviceDelegate.h" #include "MTRError_Utils.h" #include #include static CHIPToolPersistentStorageDelegate * storage = nil; +static DeviceDelegate * sDeviceDelegate = nil; +static dispatch_queue_t sDeviceDelegateDispatchQueue = nil; std::set CHIPCommandBridge::sDeferredCleanups; std::map CHIPCommandBridge::mControllers; dispatch_queue_t CHIPCommandBridge::mOTAProviderCallbackQueue; @@ -302,6 +305,18 @@ __auto_type * device = [MTRDevice deviceWithNodeID:@(nodeId) controller:controller]; VerifyOrReturnValue(nil != device, nil); + // The device delegate is initialized only once, when the first MTRDevice is created. + // As a result, subsequent commands using --use-mtr-device don’t need to specify the + // `--pretend-thread-enabled 1` argument again. Any further attempts to set it to `0` will also be ignored. + if (sDeviceDelegate == nil) { + sDeviceDelegate = [[DeviceDelegate alloc] init]; + sDeviceDelegateDispatchQueue = dispatch_queue_create("com.chip.devicedelegate", DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL); + if (mPretendThreadEnabled.ValueOr(false)) { + [sDeviceDelegate setPretendThreadEnabled:YES]; + } + } + [device addDelegate:sDeviceDelegate queue:sDeviceDelegateDispatchQueue]; + return device; } diff --git a/examples/darwin-framework-tool/commands/common/DeviceDelegate.h b/examples/darwin-framework-tool/commands/common/DeviceDelegate.h new file mode 100644 index 00000000000000..a3f5cf427f191c --- /dev/null +++ b/examples/darwin-framework-tool/commands/common/DeviceDelegate.h @@ -0,0 +1,23 @@ +/* + * 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 DeviceDelegate : NSObject +- (void)setPretendThreadEnabled:(BOOL)threadEnabled; +@end diff --git a/examples/darwin-framework-tool/commands/common/DeviceDelegate.mm b/examples/darwin-framework-tool/commands/common/DeviceDelegate.mm new file mode 100644 index 00000000000000..ecf8e708e26ff3 --- /dev/null +++ b/examples/darwin-framework-tool/commands/common/DeviceDelegate.mm @@ -0,0 +1,69 @@ +/* + * 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 "DeviceDelegate.h" + +#include + +NS_ASSUME_NONNULL_BEGIN + +@interface DeviceDelegate () +@property (nonatomic, readwrite) BOOL threadEnabled; +@end + +@implementation DeviceDelegate +- (instancetype)init +{ + if (self = [super init]) { + _threadEnabled = NO; + } + return self; +} + +- (void)device:(MTRDevice *)device stateChanged:(MTRDeviceState)state +{ +} + +- (void)device:(MTRDevice *)device receivedAttributeReport:(NSArray *> *)attributeReport +{ +} + +- (void)device:(MTRDevice *)device receivedEventReport:(NSArray *> *)eventReport +{ +} + +- (void)deviceCachePrimed:(MTRDevice *)device +{ +} + +- (void)deviceConfigurationChanged:(MTRDevice *)device +{ +} + +- (void)setPretendThreadEnabled:(BOOL)threadEnabled +{ + _threadEnabled = threadEnabled; +} + +- (BOOL)unitTestPretendThreadEnabled:(MTRDevice *)device +{ + return _threadEnabled; +} +@end + +NS_ASSUME_NONNULL_END diff --git a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj index 6a802900d8d30c..673f1cacaabc10 100644 --- a/src/darwin/Framework/Matter.xcodeproj/project.pbxproj +++ b/src/darwin/Framework/Matter.xcodeproj/project.pbxproj @@ -336,6 +336,8 @@ B2E0D7B7245B0B5C003C5B48 /* MTRQRCodeSetupPayloadParser.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2E0D7AE245B0B5C003C5B48 /* MTRQRCodeSetupPayloadParser.mm */; }; B2E0D7B8245B0B5C003C5B48 /* MTRSetupPayload.h in Headers */ = {isa = PBXBuildFile; fileRef = B2E0D7AF245B0B5C003C5B48 /* MTRSetupPayload.h */; settings = {ATTRIBUTES = (Public, ); }; }; B2E0D7B9245B0B5C003C5B48 /* MTRSetupPayload.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2E0D7B0245B0B5C003C5B48 /* MTRSetupPayload.mm */; }; + B409D0AE2CCFB89600A7ED5A /* DeviceDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B409D0AC2CCFB89600A7ED5A /* DeviceDelegate.h */; }; + B409D0AF2CCFB89600A7ED5A /* DeviceDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = B409D0AD2CCFB89600A7ED5A /* DeviceDelegate.mm */; }; B43B39EA2CB859A5006AA284 /* DumpMemoryGraphCommand.mm in Sources */ = {isa = PBXBuildFile; fileRef = B43B39E62CB859A5006AA284 /* DumpMemoryGraphCommand.mm */; }; B43B39EB2CB859A5006AA284 /* LeaksTool.mm in Sources */ = {isa = PBXBuildFile; fileRef = B43B39E82CB859A5006AA284 /* LeaksTool.mm */; }; B43B39EC2CB859A5006AA284 /* DumpMemoryGraphCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B43B39E52CB859A5006AA284 /* DumpMemoryGraphCommand.h */; }; @@ -800,6 +802,8 @@ B2E0D7AE245B0B5C003C5B48 /* MTRQRCodeSetupPayloadParser.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRQRCodeSetupPayloadParser.mm; sourceTree = ""; }; B2E0D7AF245B0B5C003C5B48 /* MTRSetupPayload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRSetupPayload.h; sourceTree = ""; }; B2E0D7B0245B0B5C003C5B48 /* MTRSetupPayload.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRSetupPayload.mm; sourceTree = ""; }; + B409D0AC2CCFB89600A7ED5A /* DeviceDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeviceDelegate.h; sourceTree = ""; }; + B409D0AD2CCFB89600A7ED5A /* DeviceDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = DeviceDelegate.mm; sourceTree = ""; }; B43B39E42CB859A5006AA284 /* Commands.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Commands.h; sourceTree = ""; }; B43B39E52CB859A5006AA284 /* DumpMemoryGraphCommand.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DumpMemoryGraphCommand.h; sourceTree = ""; }; B43B39E62CB859A5006AA284 /* DumpMemoryGraphCommand.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = DumpMemoryGraphCommand.mm; sourceTree = ""; }; @@ -1013,6 +1017,8 @@ 037C3D9B2991BD4F00B7EEE2 /* common */ = { isa = PBXGroup; children = ( + B409D0AC2CCFB89600A7ED5A /* DeviceDelegate.h */, + B409D0AD2CCFB89600A7ED5A /* DeviceDelegate.mm */, B43B39EF2CB99090006AA284 /* CertificateIssuer.h */, B43B39F02CB99090006AA284 /* CertificateIssuer.mm */, B43B39F12CB99090006AA284 /* ControllerStorage.h */, @@ -1673,6 +1679,7 @@ B4F773CA2CB54B61008C6B23 /* LeakChecker.h in Headers */, B43B39F82CB99090006AA284 /* CertificateIssuer.h in Headers */, B43B39F92CB99090006AA284 /* PreferencesStorage.h in Headers */, + B409D0AE2CCFB89600A7ED5A /* DeviceDelegate.h in Headers */, B43B39FA2CB99090006AA284 /* ControllerStorage.h in Headers */, 037C3DB82991BD5000B7EEE2 /* ClusterCommandBridge.h in Headers */, 037C3DC82991BD5100B7EEE2 /* CHIPToolKeypair.h in Headers */, @@ -2058,6 +2065,7 @@ 0382FA302992F40C00247BBB /* ComplexArgumentParser.cpp in Sources */, 039145E12993102B00257B3E /* main.mm in Sources */, 037C3DD42991BD5200B7EEE2 /* logging.mm in Sources */, + B409D0AF2CCFB89600A7ED5A /* DeviceDelegate.mm in Sources */, 512431282BA0C8BF000BC136 /* SetMRPParametersCommand.mm in Sources */, 512431292BA0C8BF000BC136 /* ResetMRPParametersCommand.mm in Sources */, 037C3DB32991BD5000B7EEE2 /* OpenCommissioningWindowCommand.mm in Sources */, From 73a1c0b740f81d1c28dff25d60dda3e4fc322f71 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Tue, 29 Oct 2024 03:20:16 +0100 Subject: [PATCH 4/8] [examples-app] Add options to configure MRP intervals at application launch (#36272) --- examples/platform/linux/Options.cpp | 49 +++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/examples/platform/linux/Options.cpp b/examples/platform/linux/Options.cpp index 6f8afea5bb496b..30732ae7e0a034 100644 --- a/examples/platform/linux/Options.cpp +++ b/examples/platform/linux/Options.cpp @@ -46,6 +46,10 @@ #include #endif +#if CONFIG_BUILD_FOR_HOST_UNIT_TEST +#include +#endif + using namespace chip; using namespace chip::ArgParser; using namespace chip::Platform; @@ -112,6 +116,9 @@ enum kDeviceOption_WiFiSupports5g, #if CONFIG_BUILD_FOR_HOST_UNIT_TEST kDeviceOption_SubscriptionResumptionRetryIntervalSec, + kDeviceOption_IdleRetransmitTimeout, + kDeviceOption_ActiveRetransmitTimeout, + kDeviceOption_ActiveThresholdTime, #endif #if CHIP_WITH_NLFAULTINJECTION kDeviceOption_FaultInjection, @@ -187,6 +194,9 @@ OptionDef sDeviceOptionDefs[] = { #if CONFIG_BUILD_FOR_HOST_UNIT_TEST { "subscription-capacity", kArgumentRequired, kDeviceOption_SubscriptionCapacity }, { "subscription-resumption-retry-interval", kArgumentRequired, kDeviceOption_SubscriptionResumptionRetryIntervalSec }, + { "idle-retransmit-timeout", kArgumentRequired, kDeviceOption_IdleRetransmitTimeout }, + { "active-retransmit-timeout", kArgumentRequired, kDeviceOption_ActiveRetransmitTimeout }, + { "active-threshold-time", kArgumentRequired, kDeviceOption_ActiveThresholdTime }, #endif #if CHIP_WITH_NLFAULTINJECTION { "faults", kArgumentRequired, kDeviceOption_FaultInjection }, @@ -335,6 +345,19 @@ const char * sDeviceOptionHelp = " Max number of subscriptions the device will allow\n" " --subscription-resumption-retry-interval\n" " subscription timeout resumption retry interval in seconds\n" + " --idle-retransmit-timeout \n" + " Sets the MRP idle retry interval (in milliseconds).\n" + " This interval is used by the peer to calculate the retransmission timeout when the current device is considered idle.\n" + "\n" + " --active-retransmit-timeout \n" + " Sets the MRP active retry interval (in milliseconds).\n" + " This interval is used by the peer to calculate the retransmission timeout when the current device is considered " + "active.\n" + "\n" + " --active-threshold-time