Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[darwin] Add support for downloading diagnostic logs #31638

Merged
merged 2 commits into from
Jan 24, 2024

Conversation

vivien-apple
Copy link
Contributor

Problem

The PR in #31198 was initially containing some code to expose the diagnostic logs BDX transfer server to Darwin.

The API shape was not matching some expectations and so the initial PR it has been separated in 2 PRs.
#31198 was the first one and this one is the second part on top of #31198.

This PR contains an example of the API exposed as a Darwin-framework-tool command:

# Shell window 1: Launch the all-clusters-app with the right arguments
$ ./chip-all-clusters-app --interface-id -1 --end_user_support_log /tmp/end_user_support_log.txt --network_diagnostics_log /tmp/networkdiagnosticslog.txt --crash_log /tmp/crash_log.txt --trace_decode 1

# Shell window 2: Pair Darwin-framework-tool and run a bdx download command
$ ./darwin-framework-tool pairing code 0x12344321 MT:-24J0AFN00KA0648G00
$ ./darwin-framework-tool bdx download 0x12344321 0 2

Or if you prefer a code example:

MTRDeviceController * commissioner = ...;
auto * device = [MTRDevice deviceWithNodeID:@(mNodeId) controller:commissioner];
auto logType = MTRDiagnosticLogTypeEndUserSupport;
NSTimeInterval timeoutInSeconds = 10;

auto queue = dispatch_queue_create("com.chip.bdx.downloader", DISPATCH_QUEUE_SERIAL);

auto completion = ^(NSURL * url, NSError * error) {
    // A non-nil url indicates the presence of content, which can occur even in error scenarios like timeouts.
    if (nil != url) {
        NSError * readError = nil;
        NSData * data = [NSData dataWithContentsOfURL:url options:NSDataReadingUncached error:&readError];
        VerifyOrReturn(nil == readError);

        NSString * content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"Content: %@", content);
    }

    if (nil == error) {
        // The url is nil when there are no logs on the target device.
        if (nil == url) {
            NSLog(@"No logs has been found onto node 0x" ChipLogFormatX64, ChipLogValueX64(mNodeId));
        }
     } else {
           NSLog(@"Something wrong happens: %@", error);
     }
};

[device downloadLogOfType:logType timeout:timeoutInSeconds queue:queue completion:completion];

The API is described here (copy-paste) from what Nivi did!

/**
 * This enum is used to specify the type of log requested from this device.
 *
 * The log types are : End User Support, Network Diagnostics and Crash logs.
 */
typedef NS_ENUM(NSInteger, MTRDiagnosticLogType) {
    MTRDiagnosticLogTypeEndUserSupport = 0, // End user support log is requested
    MTRDiagnosticLogTypeNetworkDiagnostics = 1, // Network Diagnostics log is requested
    MTRDiagnosticLogTypeCrash = 2 // Crash log is requested
} MTR_NEWLY_AVAILABLE;
/**
 * Download log of the desired type from the device.
 *
 * Note: The consumer of this API should move the file that the url points to or open it for reading before the
 * completion handler returns. Otherwise, the file will be deleted, and the data will be lost.
 *
 * @param type       The type of log being requested. This should correspond to a value in the enum MTRDiagnosticLogType.
 * @param timeout    The timeout for getting the log. If the timeout expires, completion will be called with whatever
 *                   has been retrieved by that point (which might be none or a partial log).
 *                   If the timeout is set to 0, the request will not expire and completion will not be called until
 *                   the log is fully retrieved or an error occurs.
 * @param queue      The queue on which completion will be called.
 * @param completion The completion that will be called to return the URL of the requested log if successful. Otherwise
 *                   returns an error.
 */
- (void)downloadLogOfType:(MTRDiagnosticLogType)type
                  timeout:(NSTimeInterval)timeout
                    queue:(dispatch_queue_t)queue
               completion:(void (^)(NSURL * _Nullable url, NSError * _Nullable error))completion
    MTR_NEWLY_AVAILABLE;

Copy link

github-actions bot commented Jan 23, 2024

PR #31638: Size comparison from 9f1c159 to 0f961b3

Decreases (1 build for efr32)
platform target config section 9f1c159 0f961b3 change % change
efr32 lighting-app BRD4161A+rs9116 (read/write) 930384 930376 -8 -0.0
.text 731084 731076 -8 -0.0
Full report (73 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, psoc6, qpg, stm32, telink)
platform target config section 9f1c159 0f961b3 change % change
bl602 lighting-app bl602 (read/write) 1428218 1428218 0 0.0
.bss 85328 85328 0 0.0
.data 9488 9488 0 0.0
.rodata 157324 157324 0 0.0
.text 1095438 1095438 0 0.0
bl602+mfd (read/write) 1442890 1442890 0 0.0
.bss 85496 85496 0 0.0
.data 9456 9456 0 0.0
.rodata 156284 156284 0 0.0
.text 1111004 1111004 0 0.0
bl602+rpc (read/write) 1475970 1475970 0 0.0
.bss 93368 93368 0 0.0
.data 9864 9864 0 0.0
.rodata 164892 164892 0 0.0
.text 1127186 1127186 0 0.0
bl702 lighting-app bl702 (read only) 3478 3478 0 0.0
(read/write) 1193075 1193075 0 0.0
.bss 11133 11133 0 0.0
.data 3664 3664 0 0.0
.rodata 106708 106708 0 0.0
.text 964768 964768 0 0.0
bl702+mfd (read only) 3478 3478 0 0.0
(read/write) 1204155 1204155 0 0.0
.bss 11309 11309 0 0.0
.data 3648 3648 0 0.0
.rodata 105648 105648 0 0.0
.text 976778 976778 0 0.0
bl702+rpc (read only) 3478 3478 0 0.0
(read/write) 1284695 1284695 0 0.0
.bss 19597 19597 0 0.0
.data 4224 4224 0 0.0
.rodata 122080 122080 0 0.0
.text 1039578 1039578 0 0.0
bl706-eth (read/write) 1011657 1011657 0 0.0
.bss 23692 23692 0 0.0
.data 3240 3240 0 0.0
.rodata 100028 100028 0 0.0
.text 756742 756742 0 0.0
bl706-wifi (read/write) 1244618 1244618 0 0.0
.bss 10577 10577 0 0.0
.data 3680 3680 0 0.0
.rodata 121008 121008 0 0.0
.text 986962 986962 0 0.0
bl702l lighting-app bl702l (read only) 512 512 0 0.0
(read/write) 1162456 1162456 0 0.0
.bss 16328 16328 0 0.0
.data 5032 5032 0 0.0
.rodata 100712 100712 0 0.0
.text 957646 957646 0 0.0
bl702l+mfd (read only) 512 512 0 0.0
(read/write) 1173852 1173852 0 0.0
.bss 16504 16504 0 0.0
.data 5008 5008 0 0.0
.rodata 99652 99652 0 0.0
.text 969968 969968 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 (read only) 781360 781360 0 0.0
(read/write) 168864 168864 0 0.0
.bss 90884 90884 0 0.0
.data 3552 3552 0 0.0
.rodata 90312 90312 0 0.0
.text 690784 690784 0 0.0
lock-ftd LP_EM_CC1354P10_6 (read only) 798792 798792 0 0.0
(read/write) 179108 179108 0 0.0
.bss 101068 101068 0 0.0
.data 3580 3580 0 0.0
.rodata 84640 84640 0 0.0
.text 713884 713884 0 0.0
lock-mtd LP_EM_CC1354P10_6 (read only) 787304 787304 0 0.0
(read/write) 173564 173564 0 0.0
.bss 95524 95524 0 0.0
.data 3580 3580 0 0.0
.rodata 111376 111376 0 0.0
.text 675660 675660 0 0.0
pump-app LP_EM_CC1354P10_6 (read only) 738624 738624 0 0.0
(read/write) 167836 167836 0 0.0
.bss 89624 89624 0 0.0
.data 3540 3540 0 0.0
.rodata 86032 86032 0 0.0
.text 652328 652328 0 0.0
pump-controller-app LP_EM_CC1354P10_6 (read only) 724248 724248 0 0.0
(read/write) 168048 168048 0 0.0
.bss 89848 89848 0 0.0
.data 3536 3536 0 0.0
.rodata 81872 81872 0 0.0
.text 642112 642112 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL (read only) 572954 572954 0 0.0
(read/write) 207896 207896 0 0.0
.bss 201180 201180 0 0.0
.data 1592 1592 0 0.0
.rodata 84522 84522 0 0.0
.text 486308 486308 0 0.0
lock CC3235SF_LAUNCHXL (read only) 627218 627218 0 0.0
(read/write) 208296 208296 0 0.0
.bss 201656 201656 0 0.0
.data 1520 1520 0 0.0
.rodata 106386 106386 0 0.0
.text 518712 518712 0 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 564279 564279 0 0.0
.app_xip_area 454201 454201 0 0.0
.bss 64920 64920 0 0.0
.data 732 732 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 547927 547927 0 0.0
.app_xip_area 433105 433105 0 0.0
.bss 69624 69624 0 0.0
.data 772 772 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor cyw930739m2evb_01 (read/write) 566103 566103 0 0.0
.app_xip_area 457481 457481 0 0.0
.bss 63504 63504 0 0.0
.data 696 696 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
switch cyw930739m2evb_01 (read/write) 562399 562399 0 0.0
.app_xip_area 450545 450545 0 0.0
.bss 66624 66624 0 0.0
.data 804 804 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A+rs9116 (read/write) 930384 930376 -8 -0.0
.bss 197904 197904 0 0.0
.data 1372 1372 0 0.0
.text 731084 731076 -8 -0.0
BRD4187C (read/write) 1108176 1108176 0 0.0
.bss 195156 195156 0 0.0
.data 3384 3384 0 0.0
.text 909616 909616 0 0.0
lock-app BRD4161A+wf200 (read/write) 1121724 1121724 0 0.0
.bss 188192 188192 0 0.0
.data 2800 2800 0 0.0
.text 930712 930712 0 0.0
window-app BRD4187C (read/write) 1147960 1147960 0 0.0
.bss 167148 167148 0 0.0
.data 3292 3292 0 0.0
.text 977500 977500 0 0.0
esp32 all-clusters-app c3devkit (read only) 1199316 1199316 0 0.0
(read/write) 1744640 1744640 0 0.0
.dram0.bss 73392 73392 0 0.0
.dram0.data 13588 13588 0 0.0
.flash.rodata 248128 248128 0 0.0
.flash.text 1199316 1199316 0 0.0
.iram0.text 75530 75530 0 0.0
m5stack (read only) 1241415 1241415 0 0.0
(read/write) 529600 529600 0 0.0
.dram0.bss 80256 80256 0 0.0
.dram0.data 35132 35132 0 0.0
.flash.rodata 278292 278292 0 0.0
.flash.text 1235251 1235251 0 0.0
.iram0.text 125403 125403 0 0.0
k32w contact k32w0+release (read only) 610520 610520 0 0.0
(read/write) 81332 81332 0 0.0
.bss 69112 69112 0 0.0
.data 2236 2236 0 0.0
.text 609984 609984 0 0.0
k32w1+release (read only) 1024 1024 0 0.0
(read/write) 696220 696220 0 0.0
.bss 67768 67768 0 0.0
.data 2788 2788 0 0.0
.text 582192 582192 0 0.0
light k32w0+release (read only) 598896 598896 0 0.0
(read/write) 79340 79340 0 0.0
.bss 67168 67168 0 0.0
.data 2188 2188 0 0.0
.text 598360 598360 0 0.0
k32w1+release (read only) 1024 1024 0 0.0
(read/write) 787200 787200 0 0.0
.bss 77436 77436 0 0.0
.data 2000 2000 0 0.0
.text 664312 664312 0 0.0
lock k32w0+release (read only) 580152 580152 0 0.0
(read/write) 78756 78756 0 0.0
.bss 66608 66608 0 0.0
.data 2164 2164 0 0.0
.text 579616 579616 0 0.0
linux air-purifier-app debug (read only) 2576541 2576541 0 0.0
(read/write) 127704 127704 0 0.0
.bss 46336 46336 0 0.0
.data 2144 2144 0 0.0
.data.rel.ro 73304 73304 0 0.0
.dynamic 608 608 0 0.0
.got 4552 4552 0 0.0
.init 27 27 0 0.0
.init_array 752 752 0 0.0
.rodata 181480 181480 0 0.0
.text 2218821 2218821 0 0.0
all-clusters-app debug (read only) 5784201 5784201 0 0.0
(read/write) 469168 469168 0 0.0
.bss 132944 132944 0 0.0
.data 4480 4480 0 0.0
.data.rel.ro 324392 324392 0 0.0
.dynamic 624 624 0 0.0
.got 5376 5376 0 0.0
.init 27 27 0 0.0
.init_array 1336 1336 0 0.0
.rodata 341756 341756 0 0.0
.text 5018723 5018723 0 0.0
all-clusters-minimal-app debug (read only) 5125241 5125241 0 0.0
(read/write) 235184 235184 0 0.0
.bss 127280 127280 0 0.0
.data 4384 4384 0 0.0
.data.rel.ro 96456 96456 0 0.0
.dynamic 624 624 0 0.0
.got 5296 5296 0 0.0
.init 27 27 0 0.0
.init_array 1112 1112 0 0.0
.rodata 285421 285421 0 0.0
.text 4606547 4606547 0 0.0
bridge-app debug (read only) 4550825 4550825 0 0.0
(read/write) 216584 216584 0 0.0
.bss 117976 117976 0 0.0
.data 6144 6144 0 0.0
.data.rel.ro 85760 85760 0 0.0
.dynamic 624 624 0 0.0
.got 5264 5264 0 0.0
.init 27 27 0 0.0
.init_array 808 808 0 0.0
.rodata 227221 227221 0 0.0
.text 4104099 4104099 0 0.0
chip-tool debug (read only) 12100393 12100393 0 0.0
(read/write) 516464 516464 0 0.0
.bss 94264 94264 0 0.0
.data 5058 5058 0 0.0
.data.rel.ro 409888 409888 0 0.0
.dynamic 624 624 0 0.0
.got 5784 5784 0 0.0
.init 27 27 0 0.0
.init_array 784 784 0 0.0
.rodata 439737 439737 0 0.0
.text 10954835 10954835 0 0.0
chip-tool-ipv6only arm64 (read only) 11634864 11634864 0 0.0
(read/write) 585296 585296 0 0.0
.bss 103288 103288 0 0.0
.data 4472 4472 0 0.0
.data.rel.ro 449344 449344 0 0.0
.dynamic 512 512 0 0.0
.got 20392 20392 0 0.0
.init 24 24 0 0.0
.init_array 248 248 0 0.0
.rodata 347276 347276 0 0.0
.text 10399756 10399756 0 0.0
lighting-app debug+rpc+ui (read only) 5469817 5469817 0 0.0
(read/write) 225384 225384 0 0.0
.bss 118944 118944 0 0.0
.data 4800 4800 0 0.0
.data.rel.ro 94144 94144 0 0.0
.dynamic 672 672 0 0.0
.got 5880 5880 0 0.0
.init 27 27 0 0.0
.init_array 928 928 0 0.0
.rodata 350932 350932 0 0.0
.text 4873283 4873283 0 0.0
lock-app debug (read only) 4621305 4621305 0 0.0
(read/write) 204112 204112 0 0.0
.bss 113312 113312 0 0.0
.data 4096 4096 0 0.0
.data.rel.ro 79992 79992 0 0.0
.dynamic 624 624 0 0.0
.got 5216 5216 0 0.0
.init 27 27 0 0.0
.init_array 840 840 0 0.0
.rodata 253845 253845 0 0.0
.text 4156499 4156499 0 0.0
ota-provider-app debug (read only) 4259449 4259449 0 0.0
(read/write) 192688 192688 0 0.0
.bss 113248 113248 0 0.0
.data 4256 4256 0 0.0
.data.rel.ro 69312 69312 0 0.0
.dynamic 624 624 0 0.0
.got 4528 4528 0 0.0
.init 27 27 0 0.0
.init_array 712 712 0 0.0
.rodata 206325 206325 0 0.0
.text 3861251 3861251 0 0.0
ota-requestor-app debug (read only) 4375433 4375433 0 0.0
(read/write) 196968 196968 0 0.0
.bss 114144 114144 0 0.0
.data 4656 4656 0 0.0
.data.rel.ro 72288 72288 0 0.0
.dynamic 624 624 0 0.0
.got 4464 4464 0 0.0
.init 27 27 0 0.0
.init_array 768 768 0 0.0
.rodata 212181 212181 0 0.0
.text 3967075 3967075 0 0.0
shell debug (read only) 2864297 2864297 0 0.0
(read/write) 154776 154776 0 0.0
.bss 62248 62248 0 0.0
.data 1344 1344 0 0.0
.data.rel.ro 85416 85416 0 0.0
.dynamic 592 592 0 0.0
.got 4088 4088 0 0.0
.init 27 27 0 0.0
.init_array 1064 1064 0 0.0
.rodata 185664 185664 0 0.0
.text 2506322 2506322 0 0.0
thermostat-no-ble arm64 (read only) 4448056 4448056 0 0.0
(read/write) 247448 247448 0 0.0
.bss 121672 121672 0 0.0
.data 3328 3328 0 0.0
.data.rel.ro 103272 103272 0 0.0
.dynamic 512 512 0 0.0
.got 12160 12160 0 0.0
.init 24 24 0 0.0
.init_array 416 416 0 0.0
.rodata 158348 158348 0 0.0
.text 3945900 3945900 0 0.0
tv-app debug (read only) 5583337 5583337 0 0.0
(read/write) 350384 350384 0 0.0
.bss 243296 243296 0 0.0
.data 6464 6464 0 0.0
.data.rel.ro 93336 93336 0 0.0
.dynamic 624 624 0 0.0
.got 5512 5512 0 0.0
.init 27 27 0 0.0
.init_array 1128 1128 0 0.0
.rodata 284309 284309 0 0.0
.text 5059123 5059123 0 0.0
tv-casting-app debug (read only) 9970145 9970145 0 0.0
(read/write) 342360 342360 0 0.0
.bss 156032 156032 0 0.0
.data 2912 2912 0 0.0
.data.rel.ro 176512 176512 0 0.0
.dynamic 624 624 0 0.0
.got 5088 5088 0 0.0
.init 27 27 0 0.0
.init_array 1168 1168 0 0.0
.rodata 376936 376936 0 0.0
.text 9121299 9121299 0 0.0
mbed lock-app-release cy8cproto_062_4343w (read only) 6224 6224 0 0.0
(read/write) 2531192 2531192 0 0.0
.bss 220392 220392 0 0.0
.data 5208 5208 0 0.0
.text 1493876 1493876 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 1095248 1095248 0 0.0
bss 129800 129800 0 0.0
rodata 111280 111280 0 0.0
text 806336 806336 0 0.0
nrf7002dk_nrf5340_cpuapp (read only) 4 4 0 0.0
(read/write) 1215608 1215608 0 0.0
bss 121938 121938 0 0.0
rodata 141132 141132 0 0.0
text 802048 802048 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 1044032 1044032 0 0.0
bss 129526 129526 0 0.0
rodata 99136 99136 0 0.0
text 767644 767644 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 (read only) 835352 835352 0 0.0
(read/write) 1791884 1791884 0 0.0
.bss 195348 195348 0 0.0
.data 2640 2640 0 0.0
.text 1585508 1585508 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 (read only) 837656 837656 0 0.0
(read/write) 1713404 1713404 0 0.0
.bss 193068 193068 0 0.0
.data 2616 2616 0 0.0
.text 1509332 1509332 0 0.0
light cy8ckit_062s2_43012 (read only) 844352 844352 0 0.0
(read/write) 1636412 1636412 0 0.0
.bss 186556 186556 0 0.0
.data 2432 2432 0 0.0
.text 1439036 1439036 0 0.0
lock cy8ckit_062s2_43012 (read only) 817232 817232 0 0.0
(read/write) 1665716 1665716 0 0.0
.bss 213652 213652 0 0.0
.data 2456 2456 0 0.0
.text 1441220 1441220 0 0.0
qpg lighting-app qpg6105+debug (read/write) 1121880 1121880 0 0.0
.bss 102224 102224 0 0.0
.data 808 808 0 0.0
.text 634260 634260 0 0.0
lock-app qpg6105+debug (read/write) 1086152 1086152 0 0.0
.bss 98528 98528 0 0.0
.data 852 852 0 0.0
.text 598528 598528 0 0.0
stm32 light STM32WB5MM-DK (read/write) 597517 597517 0 0.0
.bss 128280 128280 0 0.0
.data 660 660 0 0.0
.rodata 78756 78756 0 0.0
.text 380096 380096 0 0.0
telink air-quality-sensor-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 825622 825622 0 0.0
bss 51020 51020 0 0.0
text 617574 617574 0 0.0
all-clusters-app tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 1113956 1113956 0 0.0
bss 100784 100784 0 0.0
text 788684 788684 0 0.0
all-clusters-minimal-app tlsr9528a (read only) 4 4 0 0.0
(read/write) 1090472 1090472 0 0.0
bss 109920 109920 0 0.0
text 758946 758946 0 0.0
bridge-app tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 935876 935876 0 0.0
bss 92988 92988 0 0.0
text 649670 649670 0 0.0
contact-sensor-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 827514 827514 0 0.0
bss 51072 51072 0 0.0
text 619532 619532 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a (read only) 4 4 0 0.0
(read/write) 985472 985472 0 0.0
bss 79116 79116 0 0.0
text 700262 700262 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 1097892 1097892 0 0.0
bss 100064 100064 0 0.0
text 773918 773918 0 0.0
lock-app-dfu tlsr9528a (read only) 4 4 0 0.0
(read/write) 971392 971392 0 0.0
bss 97416 97416 0 0.0
text 653438 653438 0 0.0
ota-requestor-app tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 953708 953708 0 0.0
bss 92564 92564 0 0.0
text 667610 667610 0 0.0
pump-app tlsr9528a (read only) 4 4 0 0.0
(read/write) 884768 884768 0 0.0
bss 69136 69136 0 0.0
text 626072 626072 0 0.0
pump-controller-app tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 825420 825420 0 0.0
bss 57380 57380 0 0.0
text 592996 592996 0 0.0
shell tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 705772 705772 0 0.0
bss 73640 73640 0 0.0
text 462164 462164 0 0.0
smoke_co_alarm-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 829266 829266 0 0.0
bss 51200 51200 0 0.0
text 622302 622302 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 884049 884049 0 0.0
bss 60856 60856 0 0.0
text 636114 636114 0 0.0
thermostat tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 851736 851736 0 0.0
bss 57668 57668 0 0.0
text 613292 613292 0 0.0
window-covering tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 844480 844480 0 0.0
bss 57984 57984 0 0.0
text 605910 605910 0 0.0

Copy link

github-actions bot commented Jan 24, 2024

PR #31638: Size comparison from a386c83 to af748c7

Decreases (1 build for efr32)
platform target config section a386c83 af748c7 change % change
efr32 lighting-app BRD4161A+rs9116 (read/write) 930384 930376 -8 -0.0
.text 731084 731076 -8 -0.0
Full report (73 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, psoc6, qpg, stm32, telink)
platform target config section a386c83 af748c7 change % change
bl602 lighting-app bl602 (read/write) 1428218 1428218 0 0.0
.bss 85328 85328 0 0.0
.data 9488 9488 0 0.0
.rodata 157324 157324 0 0.0
.text 1095438 1095438 0 0.0
bl602+mfd (read/write) 1442890 1442890 0 0.0
.bss 85496 85496 0 0.0
.data 9456 9456 0 0.0
.rodata 156284 156284 0 0.0
.text 1111004 1111004 0 0.0
bl602+rpc (read/write) 1475970 1475970 0 0.0
.bss 93368 93368 0 0.0
.data 9864 9864 0 0.0
.rodata 164892 164892 0 0.0
.text 1127186 1127186 0 0.0
bl702 lighting-app bl702 (read only) 3478 3478 0 0.0
(read/write) 1193075 1193075 0 0.0
.bss 11133 11133 0 0.0
.data 3664 3664 0 0.0
.rodata 106708 106708 0 0.0
.text 964768 964768 0 0.0
bl702+mfd (read only) 3478 3478 0 0.0
(read/write) 1204155 1204155 0 0.0
.bss 11309 11309 0 0.0
.data 3648 3648 0 0.0
.rodata 105648 105648 0 0.0
.text 976778 976778 0 0.0
bl702+rpc (read only) 3478 3478 0 0.0
(read/write) 1284695 1284695 0 0.0
.bss 19597 19597 0 0.0
.data 4224 4224 0 0.0
.rodata 122080 122080 0 0.0
.text 1039578 1039578 0 0.0
bl706-eth (read/write) 1011657 1011657 0 0.0
.bss 23692 23692 0 0.0
.data 3240 3240 0 0.0
.rodata 100028 100028 0 0.0
.text 756742 756742 0 0.0
bl706-wifi (read/write) 1244618 1244618 0 0.0
.bss 10577 10577 0 0.0
.data 3680 3680 0 0.0
.rodata 121008 121008 0 0.0
.text 986962 986962 0 0.0
bl702l lighting-app bl702l (read only) 512 512 0 0.0
(read/write) 1162456 1162456 0 0.0
.bss 16328 16328 0 0.0
.data 5032 5032 0 0.0
.rodata 100712 100712 0 0.0
.text 957646 957646 0 0.0
bl702l+mfd (read only) 512 512 0 0.0
(read/write) 1173852 1173852 0 0.0
.bss 16504 16504 0 0.0
.data 5008 5008 0 0.0
.rodata 99652 99652 0 0.0
.text 969968 969968 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 (read only) 781360 781360 0 0.0
(read/write) 168864 168864 0 0.0
.bss 90884 90884 0 0.0
.data 3552 3552 0 0.0
.rodata 90312 90312 0 0.0
.text 690784 690784 0 0.0
lock-ftd LP_EM_CC1354P10_6 (read only) 798792 798792 0 0.0
(read/write) 179108 179108 0 0.0
.bss 101068 101068 0 0.0
.data 3580 3580 0 0.0
.rodata 84640 84640 0 0.0
.text 713884 713884 0 0.0
lock-mtd LP_EM_CC1354P10_6 (read only) 787304 787304 0 0.0
(read/write) 173564 173564 0 0.0
.bss 95524 95524 0 0.0
.data 3580 3580 0 0.0
.rodata 111376 111376 0 0.0
.text 675660 675660 0 0.0
pump-app LP_EM_CC1354P10_6 (read only) 738624 738624 0 0.0
(read/write) 167836 167836 0 0.0
.bss 89624 89624 0 0.0
.data 3540 3540 0 0.0
.rodata 86032 86032 0 0.0
.text 652328 652328 0 0.0
pump-controller-app LP_EM_CC1354P10_6 (read only) 724248 724248 0 0.0
(read/write) 168048 168048 0 0.0
.bss 89848 89848 0 0.0
.data 3536 3536 0 0.0
.rodata 81872 81872 0 0.0
.text 642112 642112 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL (read only) 572954 572954 0 0.0
(read/write) 207896 207896 0 0.0
.bss 201180 201180 0 0.0
.data 1592 1592 0 0.0
.rodata 84522 84522 0 0.0
.text 486308 486308 0 0.0
lock CC3235SF_LAUNCHXL (read only) 627218 627218 0 0.0
(read/write) 208296 208296 0 0.0
.bss 201656 201656 0 0.0
.data 1520 1520 0 0.0
.rodata 106386 106386 0 0.0
.text 518712 518712 0 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 564279 564279 0 0.0
.app_xip_area 454201 454201 0 0.0
.bss 64920 64920 0 0.0
.data 732 732 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 547927 547927 0 0.0
.app_xip_area 433105 433105 0 0.0
.bss 69624 69624 0 0.0
.data 772 772 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor cyw930739m2evb_01 (read/write) 566103 566103 0 0.0
.app_xip_area 457481 457481 0 0.0
.bss 63504 63504 0 0.0
.data 696 696 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
switch cyw930739m2evb_01 (read/write) 562399 562399 0 0.0
.app_xip_area 450545 450545 0 0.0
.bss 66624 66624 0 0.0
.data 804 804 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A+rs9116 (read/write) 930384 930376 -8 -0.0
.bss 197904 197904 0 0.0
.data 1372 1372 0 0.0
.text 731084 731076 -8 -0.0
BRD4187C (read/write) 1108176 1108176 0 0.0
.bss 195156 195156 0 0.0
.data 3384 3384 0 0.0
.text 909616 909616 0 0.0
lock-app BRD4161A+wf200 (read/write) 1121724 1121724 0 0.0
.bss 188192 188192 0 0.0
.data 2800 2800 0 0.0
.text 930712 930712 0 0.0
window-app BRD4187C (read/write) 1147960 1147960 0 0.0
.bss 167148 167148 0 0.0
.data 3292 3292 0 0.0
.text 977500 977500 0 0.0
esp32 all-clusters-app c3devkit (read only) 1199906 1199906 0 0.0
(read/write) 1744688 1744688 0 0.0
.dram0.bss 73392 73392 0 0.0
.dram0.data 13588 13588 0 0.0
.flash.rodata 248176 248176 0 0.0
.flash.text 1199906 1199906 0 0.0
.iram0.text 75530 75530 0 0.0
m5stack (read only) 1241983 1241983 0 0.0
(read/write) 529656 529656 0 0.0
.dram0.bss 80264 80264 0 0.0
.dram0.data 35132 35132 0 0.0
.flash.rodata 278340 278340 0 0.0
.flash.text 1235819 1235819 0 0.0
.iram0.text 125403 125403 0 0.0
k32w contact k32w0+release (read only) 610520 610520 0 0.0
(read/write) 81332 81332 0 0.0
.bss 69112 69112 0 0.0
.data 2236 2236 0 0.0
.text 609984 609984 0 0.0
k32w1+release (read only) 1024 1024 0 0.0
(read/write) 696220 696220 0 0.0
.bss 67768 67768 0 0.0
.data 2788 2788 0 0.0
.text 582192 582192 0 0.0
light k32w0+release (read only) 598896 598896 0 0.0
(read/write) 79340 79340 0 0.0
.bss 67168 67168 0 0.0
.data 2188 2188 0 0.0
.text 598360 598360 0 0.0
k32w1+release (read only) 1024 1024 0 0.0
(read/write) 787200 787200 0 0.0
.bss 77436 77436 0 0.0
.data 2000 2000 0 0.0
.text 664312 664312 0 0.0
lock k32w0+release (read only) 580152 580152 0 0.0
(read/write) 78756 78756 0 0.0
.bss 66608 66608 0 0.0
.data 2164 2164 0 0.0
.text 579616 579616 0 0.0
linux air-purifier-app debug (read only) 2576541 2576541 0 0.0
(read/write) 127704 127704 0 0.0
.bss 46336 46336 0 0.0
.data 2144 2144 0 0.0
.data.rel.ro 73304 73304 0 0.0
.dynamic 608 608 0 0.0
.got 4552 4552 0 0.0
.init 27 27 0 0.0
.init_array 752 752 0 0.0
.rodata 181480 181480 0 0.0
.text 2218821 2218821 0 0.0
all-clusters-app debug (read only) 5788521 5788521 0 0.0
(read/write) 469520 469520 0 0.0
.bss 132944 132944 0 0.0
.data 4480 4480 0 0.0
.data.rel.ro 324744 324744 0 0.0
.dynamic 624 624 0 0.0
.got 5376 5376 0 0.0
.init 27 27 0 0.0
.init_array 1336 1336 0 0.0
.rodata 341852 341852 0 0.0
.text 5022611 5022611 0 0.0
all-clusters-minimal-app debug (read only) 5134113 5134113 0 0.0
(read/write) 235248 235248 0 0.0
.bss 127280 127280 0 0.0
.data 4384 4384 0 0.0
.data.rel.ro 96520 96520 0 0.0
.dynamic 624 624 0 0.0
.got 5296 5296 0 0.0
.init 27 27 0 0.0
.init_array 1112 1112 0 0.0
.rodata 285485 285485 0 0.0
.text 4615283 4615283 0 0.0
bridge-app debug (read only) 4550825 4550825 0 0.0
(read/write) 216584 216584 0 0.0
.bss 117976 117976 0 0.0
.data 6144 6144 0 0.0
.data.rel.ro 85760 85760 0 0.0
.dynamic 624 624 0 0.0
.got 5264 5264 0 0.0
.init 27 27 0 0.0
.init_array 808 808 0 0.0
.rodata 227221 227221 0 0.0
.text 4104099 4104099 0 0.0
chip-tool debug (read only) 12108553 12108553 0 0.0
(read/write) 516912 516912 0 0.0
.bss 94264 94264 0 0.0
.data 5058 5058 0 0.0
.data.rel.ro 410336 410336 0 0.0
.dynamic 624 624 0 0.0
.got 5784 5784 0 0.0
.init 27 27 0 0.0
.init_array 784 784 0 0.0
.rodata 439993 439993 0 0.0
.text 10962019 10962019 0 0.0
chip-tool-ipv6only arm64 (read only) 11641328 11641328 0 0.0
(read/write) 587056 587056 0 0.0
.bss 103288 103288 0 0.0
.data 4472 4472 0 0.0
.data.rel.ro 449880 449880 0 0.0
.dynamic 512 512 0 0.0
.got 20400 20400 0 0.0
.init 24 24 0 0.0
.init_array 248 248 0 0.0
.rodata 347420 347420 0 0.0
.text 10405292 10405292 0 0.0
lighting-app debug+rpc+ui (read only) 5469817 5469817 0 0.0
(read/write) 225384 225384 0 0.0
.bss 118944 118944 0 0.0
.data 4800 4800 0 0.0
.data.rel.ro 94144 94144 0 0.0
.dynamic 672 672 0 0.0
.got 5880 5880 0 0.0
.init 27 27 0 0.0
.init_array 928 928 0 0.0
.rodata 350932 350932 0 0.0
.text 4873283 4873283 0 0.0
lock-app debug (read only) 4621305 4621305 0 0.0
(read/write) 204112 204112 0 0.0
.bss 113312 113312 0 0.0
.data 4096 4096 0 0.0
.data.rel.ro 79992 79992 0 0.0
.dynamic 624 624 0 0.0
.got 5216 5216 0 0.0
.init 27 27 0 0.0
.init_array 840 840 0 0.0
.rodata 253845 253845 0 0.0
.text 4156499 4156499 0 0.0
ota-provider-app debug (read only) 4259449 4259449 0 0.0
(read/write) 192688 192688 0 0.0
.bss 113248 113248 0 0.0
.data 4256 4256 0 0.0
.data.rel.ro 69312 69312 0 0.0
.dynamic 624 624 0 0.0
.got 4528 4528 0 0.0
.init 27 27 0 0.0
.init_array 712 712 0 0.0
.rodata 206325 206325 0 0.0
.text 3861251 3861251 0 0.0
ota-requestor-app debug (read only) 4375433 4375433 0 0.0
(read/write) 196968 196968 0 0.0
.bss 114144 114144 0 0.0
.data 4656 4656 0 0.0
.data.rel.ro 72288 72288 0 0.0
.dynamic 624 624 0 0.0
.got 4464 4464 0 0.0
.init 27 27 0 0.0
.init_array 768 768 0 0.0
.rodata 212181 212181 0 0.0
.text 3967075 3967075 0 0.0
shell debug (read only) 2868257 2868257 0 0.0
(read/write) 154840 154840 0 0.0
.bss 62248 62248 0 0.0
.data 1344 1344 0 0.0
.data.rel.ro 85480 85480 0 0.0
.dynamic 592 592 0 0.0
.got 4088 4088 0 0.0
.init 27 27 0 0.0
.init_array 1064 1064 0 0.0
.rodata 185664 185664 0 0.0
.text 2510210 2510210 0 0.0
thermostat-no-ble arm64 (read only) 4448056 4448056 0 0.0
(read/write) 247448 247448 0 0.0
.bss 121672 121672 0 0.0
.data 3328 3328 0 0.0
.data.rel.ro 103272 103272 0 0.0
.dynamic 512 512 0 0.0
.got 12160 12160 0 0.0
.init 24 24 0 0.0
.init_array 416 416 0 0.0
.rodata 158348 158348 0 0.0
.text 3945900 3945900 0 0.0
tv-app debug (read only) 5583337 5583337 0 0.0
(read/write) 350384 350384 0 0.0
.bss 243296 243296 0 0.0
.data 6464 6464 0 0.0
.data.rel.ro 93336 93336 0 0.0
.dynamic 624 624 0 0.0
.got 5512 5512 0 0.0
.init 27 27 0 0.0
.init_array 1128 1128 0 0.0
.rodata 284309 284309 0 0.0
.text 5059123 5059123 0 0.0
tv-casting-app debug (read only) 9977945 9977945 0 0.0
(read/write) 342520 342520 0 0.0
.bss 156032 156032 0 0.0
.data 2912 2912 0 0.0
.data.rel.ro 176672 176672 0 0.0
.dynamic 624 624 0 0.0
.got 5088 5088 0 0.0
.init 27 27 0 0.0
.init_array 1168 1168 0 0.0
.rodata 377096 377096 0 0.0
.text 9128483 9128483 0 0.0
mbed lock-app-release cy8cproto_062_4343w (read only) 6224 6224 0 0.0
(read/write) 2531192 2531192 0 0.0
.bss 220392 220392 0 0.0
.data 5208 5208 0 0.0
.text 1493876 1493876 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 1095820 1095820 0 0.0
bss 129801 129801 0 0.0
rodata 111324 111324 0 0.0
text 806860 806860 0 0.0
nrf7002dk_nrf5340_cpuapp (read only) 4 4 0 0.0
(read/write) 1216180 1216180 0 0.0
bss 121939 121939 0 0.0
rodata 141176 141176 0 0.0
text 802568 802568 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read only) 4 4 0 0.0
(read/write) 1045284 1045284 0 0.0
bss 129527 129527 0 0.0
rodata 99204 99204 0 0.0
text 768828 768828 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 (read only) 835352 835352 0 0.0
(read/write) 1792820 1792820 0 0.0
.bss 195348 195348 0 0.0
.data 2640 2640 0 0.0
.text 1586444 1586444 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 (read only) 837656 837656 0 0.0
(read/write) 1715420 1715420 0 0.0
.bss 193068 193068 0 0.0
.data 2616 2616 0 0.0
.text 1511348 1511348 0 0.0
light cy8ckit_062s2_43012 (read only) 844352 844352 0 0.0
(read/write) 1636412 1636412 0 0.0
.bss 186556 186556 0 0.0
.data 2432 2432 0 0.0
.text 1439036 1439036 0 0.0
lock cy8ckit_062s2_43012 (read only) 817232 817232 0 0.0
(read/write) 1665716 1665716 0 0.0
.bss 213652 213652 0 0.0
.data 2456 2456 0 0.0
.text 1441220 1441220 0 0.0
qpg lighting-app qpg6105+debug (read/write) 1121880 1121880 0 0.0
.bss 102224 102224 0 0.0
.data 808 808 0 0.0
.text 634260 634260 0 0.0
lock-app qpg6105+debug (read/write) 1086152 1086152 0 0.0
.bss 98528 98528 0 0.0
.data 852 852 0 0.0
.text 598528 598528 0 0.0
stm32 light STM32WB5MM-DK (read/write) 597517 597517 0 0.0
.bss 128280 128280 0 0.0
.data 660 660 0 0.0
.rodata 78756 78756 0 0.0
.text 380096 380096 0 0.0
telink air-quality-sensor-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 825622 825622 0 0.0
bss 51020 51020 0 0.0
text 617574 617574 0 0.0
all-clusters-app tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 1114568 1114568 0 0.0
bss 100784 100784 0 0.0
text 789252 789252 0 0.0
all-clusters-minimal-app tlsr9528a (read only) 4 4 0 0.0
(read/write) 1091884 1091884 0 0.0
bss 109920 109920 0 0.0
text 760282 760282 0 0.0
bridge-app tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 935876 935876 0 0.0
bss 92988 92988 0 0.0
text 649670 649670 0 0.0
contact-sensor-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 827514 827514 0 0.0
bss 51072 51072 0 0.0
text 619532 619532 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a (read only) 4 4 0 0.0
(read/write) 985472 985472 0 0.0
bss 79116 79116 0 0.0
text 700262 700262 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 1097892 1097892 0 0.0
bss 100064 100064 0 0.0
text 773918 773918 0 0.0
lock-app-dfu tlsr9528a (read only) 4 4 0 0.0
(read/write) 971392 971392 0 0.0
bss 97416 97416 0 0.0
text 653438 653438 0 0.0
ota-requestor-app tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 953708 953708 0 0.0
bss 92564 92564 0 0.0
text 667610 667610 0 0.0
pump-app tlsr9528a (read only) 4 4 0 0.0
(read/write) 884768 884768 0 0.0
bss 69136 69136 0 0.0
text 626072 626072 0 0.0
pump-controller-app tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 825420 825420 0 0.0
bss 57380 57380 0 0.0
text 592996 592996 0 0.0
shell tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 705772 705772 0 0.0
bss 73640 73640 0 0.0
text 462164 462164 0 0.0
smoke_co_alarm-app tlsr9528a_retention (read only) 51774 51774 0 0.0
(read/write) 829266 829266 0 0.0
bss 51200 51200 0 0.0
text 622302 622302 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 884049 884049 0 0.0
bss 60856 60856 0 0.0
text 636114 636114 0 0.0
thermostat tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 851736 851736 0 0.0
bss 57668 57668 0 0.0
text 613292 613292 0 0.0
window-covering tlsr9518adk80d (read only) 4 4 0 0.0
(read/write) 844480 844480 0 0.0
bss 57984 57984 0 0.0
text 605910 605910 0 0.0

@mergify mergify bot merged commit 57898b9 into project-chip:master Jan 24, 2024
57 checks passed
Comment on lines +341 to +342
* @param completion The completion that will be called to return the URL of the requested log if successful. Otherwise
* returns an error.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This API documentation does not match the comments in examples/darwin-framework-tool/commands/bdx/DownloadLogCommand.mm about how there might be a non-nil URL even on error.

Which one is correct? And if it's the comments there, how does that map into the normal Swift async stuff? I don't think we should be making this look like a Swift async method if it's not following the rules for those...

Copy link
Contributor Author

@vivien-apple vivien-apple Jan 30, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does something like the following would be more understandable ?

@param completion The completion handler that is called after attempting to retrieve the requested log. 
                   - If there are no logs available, it returns a nil URL and a nil error.
                   - In cases of errors where no logs are available, it returns a nil URL and a non-nil error.
                   - If log retrieval is successful and logs are available, it returns a non-nil URL and a nil error.
                   - If an error occurs but parts of the logs has been downloaded, it returns a non-nil URL and a non-nil error.

I can also update the code to always returns an url if there is no error.

| I don't think we should be making this look like a Swift async method if it's not following the rules for those...
What would you like it to look ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have updated the completion values with:

* @param completion The completion handler that is called after attempting to retrieve the requested log.
 *                     - In case of success, the completion handler is called with a non-nil URL and a nil error.
 *                     - If there is an error, a non-nil error is used and the url can be non-nil too if some logs has already been downloaded.
 *

queue:(dispatch_queue_t)queue
completion:(void (^)(NSURL * _Nullable url, NSError * _Nullable error))completion
{
dispatch_sync(_chipWorkQueue, ^{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this a dispatch-sync? There is absolutely no need for sync dispatch here, as far as I can see....

queue:(dispatch_queue_t)queue
completion:(void (^)(NSURL * _Nullable url, NSError * _Nullable error))completion
{
dispatch_sync(_chipWorkQueue, ^{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will do very wrong things if the queue is in fact nor running when we get here.

We have safe mechanisms to run things on the Matter queue via a controller (which ensure that we don't try to dispatch on a non-running queue and leave a landmine for later code). Why is this not using them?


- (void)writeToFile:(NSData *)data error:(out NSError **)error;

- (BOOL)compare:(NSString *)fileDesignator
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"compare" in what sense? Equality of some sort? If so, this should probably be called "matches", not "compare"?


private:
static void OnTransferTimeout(chip::System::Layer * layer, void * context);
MTRDiagnosticLogsDownloader * mDelegate;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So this holds a strong ref to MTRDiagnosticLogsDownloader. And this object is owned by MTRDiagnosticLogsDownloader. How is this not a memory leak?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

class DiagnosticLogsDownloaderBridge is a c++ class, so it won't hold a strong ref ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah. Seems like I forgot __weak. Thanks.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The key part is that MTRDiagnosticLogsDownloader * is a pointer to NSObject, so with ARC it will hold a strong ref. Doesn't matter where it lives.

[[NSFileManager defaultManager] removeItemAtPath:[_fileURL path] error:&error];
if (nil != error) {
// There is an error but there is really not much we can do at that point besides logging it.
MTR_LOG_ERROR("Error: %@", error);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This log string needs more context...

fabricIndex:(NSNumber *)fabricIndex
nodeID:(NSNumber *)nodeID
{
return [_fileDesignator isEqualToString:fileDesignator] && _fabricIndex == fabricIndex && _nodeID == nodeID;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That == compare on NSNumber * is almost certainly doing the wrong thing.

Which I would hope tests would have caught, but this PR has absolutely no tests.


- (void)dealloc
{
if (_bridge) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code is not reachable if _bridge, since _bridge has a strong ref to this object, so dealloc will not get called.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess it depends on the output of the conversation in #31638 (comment)

params.requestedProtocol = @(MTRDiagnosticLogsTransferProtocolBDX);
params.transferFileDesignator = download.fileDesignator;

[cluster retrieveLogsRequestWithParams:params expectedValues:nil expectedValueInterval:nil completion:interactionModelDone];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using public framework APIs from inside the Matter queue (per assert above) is really dangerous, since some of those do dispatch_sync things. Have you audited this codepath to make sure it doesn't?

Again, this is why we must have a test in CI exercising this. This is extremely fragile.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have not seen any deadlock. Would you prefer me to dispatch that onto the user provided queue ?

Comment on lines +528 to +529
// Ideally we would like to handle aborts a bit differently since this only works
// because our BDX stack supports one transfer at a time.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Um... Why does it do that? It shouldn't do that. Nivi's PR started with things like that, but was getting into shape where it wasn't doing that....

This is not workable in practice; if Home asks for logs from two devices, or two logs from the same device, what exactly happens?

vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Jan 31, 2024
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 1, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 1, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 2, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 2, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 2, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 2, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 2, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 5, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 7, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 7, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 7, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 8, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 8, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
vivien-apple added a commit to vivien-apple/connectedhomeip-1 that referenced this pull request Feb 9, 2024
…#31638

[CI] Add some tests for bdx download with darwin-framework-tool
mergify bot pushed a commit that referenced this pull request Feb 13, 2024
* [CI] Make it possible to specify the timeout when waiting for a specific string in scripts/tests/chiptest/test_definition.py since it may be longer than 10 seconds

* [CI] Add a second instance of the configured applications such that YAML can start the app multiple times if needed

* [BDX:DiagnosticLog] Update the server such that it supports multiple downloads in parallel

* [darwin-framework-tool] Address post-landing comments of #31638

[CI] Add some tests for bdx download with darwin-framework-tool
raul-marquez-csa pushed a commit to raul-marquez-csa/connectedhomeip that referenced this pull request Feb 16, 2024
* [CI] Make it possible to specify the timeout when waiting for a specific string in scripts/tests/chiptest/test_definition.py since it may be longer than 10 seconds

* [CI] Add a second instance of the configured applications such that YAML can start the app multiple times if needed

* [BDX:DiagnosticLog] Update the server such that it supports multiple downloads in parallel

* [darwin-framework-tool] Address post-landing comments of project-chip#31638

[CI] Add some tests for bdx download with darwin-framework-tool
mergify bot pushed a commit that referenced this pull request Feb 16, 2024
* Modifed YAML tests:
TC_DISHM_1_2
TC_DISHM_2_1
TC_DISHM_3_1
TC_DISHM_3_3
TC_LWM_1_1
TC_LWM_1_2
TC_OTCCM_1_1
TC_OTCCM_1_2
TC_OTCCM_2_1
TC_OTCCM_3_1
TC_OTCCM_3_3
TC_TCCM_1_1
TC_TCCM_1_2

* Auto generated files

* Restyled by whitespace

* Fix the CI failure for LWM-1.1 & TCCM-1.1 test

* Fix CI failure OTCCM-1.1 test

* Revert tests
TC-LWM-1.1
TC_TCCM-1.1
TC-OTCCM-1.1

* Fixes issue: 109, 110, 111, 112, 113, 114, 115, 116
TC-CNET-4.1
TC-CONTENTLAUNCHER-10.4
TC-DRYERCTRL-2.1
TC-MEDIAPLAYBACK-6.8
TC-MEDIAPLAYBACK-6.9
TC-MEDIAPLAYBACK-6.10
TC-OTCCM-1.2

* Restyled by whitespace

* Modifed YAML tests:
TC_DISHM_1_2
TC_DISHM_2_1
TC_DISHM_3_1
TC_DISHM_3_3
TC_LWM_1_1
TC_LWM_1_2
TC_OTCCM_1_1
TC_OTCCM_1_2
TC_OTCCM_2_1
TC_OTCCM_3_1
TC_OTCCM_3_3
TC_TCCM_1_1
TC_TCCM_1_2

* Auto generated files

* Restyled by whitespace

* Fix the CI failure for LWM-1.1 & TCCM-1.1 test

* Fix CI failure OTCCM-1.1 test

* Revert tests
TC-LWM-1.1
TC_TCCM-1.1
TC-OTCCM-1.1

* Fixes issue: 109, 110, 111, 112, 113, 114, 115, 116
TC-CNET-4.1
TC-CONTENTLAUNCHER-10.4
TC-DRYERCTRL-2.1
TC-MEDIAPLAYBACK-6.8
TC-MEDIAPLAYBACK-6.9
TC-MEDIAPLAYBACK-6.10
TC-OTCCM-1.2

* Restyled by whitespace

* Fix conflict

* Fix merge

* Fix merge

* Modifed YAML tests:
TC_DISHM_1_2
TC_DISHM_2_1
TC_DISHM_3_1
TC_DISHM_3_3
TC_LWM_1_1
TC_LWM_1_2
TC_OTCCM_1_1
TC_OTCCM_1_2
TC_OTCCM_2_1
TC_OTCCM_3_1
TC_OTCCM_3_3
TC_TCCM_1_1
TC_TCCM_1_2

* Auto generated files

* Restyled by whitespace

* Fix the CI failure for LWM-1.1 & TCCM-1.1 test

* Fix CI failure OTCCM-1.1 test

* Revert tests
TC-LWM-1.1
TC_TCCM-1.1
TC-OTCCM-1.1

* Fixes issue: 109, 110, 111, 112, 113, 114, 115, 116
TC-CNET-4.1
TC-CONTENTLAUNCHER-10.4
TC-DRYERCTRL-2.1
TC-MEDIAPLAYBACK-6.8
TC-MEDIAPLAYBACK-6.9
TC-MEDIAPLAYBACK-6.10
TC-OTCCM-1.2

* Restyled by whitespace

* Fix merge

* Fix merge

* remove dead java encode_value.zapt (#31896)

* Move getting the reboot cause to platform abstraction. Set a getter for the reboot cause so different stacks can obtain it (#31891)

* Bump third_party/imgui/repo from `96839b4` to `f50ddc4` (#31917)

Bumps [third_party/imgui/repo](https://github.com/ocornut/imgui) from `96839b4` to `f50ddc4`.
- [Release notes](https://github.com/ocornut/imgui/releases)
- [Commits](https://github.com/ocornut/imgui/compare/96839b445e32e46d87a44fd43a9cdd60c806f7e1...f50ddc431e3b8840036e88abc4c3cf74500aa12b)

---
updated-dependencies:
- dependency-name: third_party/imgui/repo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump third_party/nanopb/repo from `f8724ee` to `1f0c2e1` (#31915)

Bumps [third_party/nanopb/repo](https://github.com/nanopb/nanopb) from `f8724ee` to `1f0c2e1`.
- [Commits](https://github.com/nanopb/nanopb/compare/f8724ee54b3733aebfc25ac0ed5e8b142569c59e...1f0c2e19c661f18dd88428858b8e965a26589e03)

---
updated-dependencies:
- dependency-name: third_party/nanopb/repo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump third_party/openthread/repo from `bf587dd` to `cf357d7` (#31912)

Bumps [third_party/openthread/repo](https://github.com/openthread/openthread) from `bf587dd` to `cf357d7`.
- [Release notes](https://github.com/openthread/openthread/releases)
- [Commits](https://github.com/openthread/openthread/compare/bf587dd09005abc49a5595f8691afb9512fac9c1...cf357d70be94e6f3f21d07b3c16e29bb7ec5cc7e)

---
updated-dependencies:
- dependency-name: third_party/openthread/repo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump github/issue-labeler from 3.3 to 3.4 (#31918)

Bumps [github/issue-labeler](https://github.com/github/issue-labeler) from 3.3 to 3.4.
- [Release notes](https://github.com/github/issue-labeler/releases)
- [Commits](https://github.com/github/issue-labeler/compare/v3.3...v3.4)

---
updated-dependencies:
- dependency-name: github/issue-labeler
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump natiginfo/action-detekt-all from 1.23.4 to 1.23.5 (#31919)

Bumps [natiginfo/action-detekt-all](https://github.com/natiginfo/action-detekt-all) from 1.23.4 to 1.23.5.
- [Release notes](https://github.com/natiginfo/action-detekt-all/releases)
- [Commits](https://github.com/natiginfo/action-detekt-all/compare/1.23.4...1.23.5)

---
updated-dependencies:
- dependency-name: natiginfo/action-detekt-all
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add "orphan" files from bdx to gn (#31874)

* Add "orphan" files from bdx to gn

This should help layer enforcement.

* Restyle

* Increase number of retries on websocket in YAML test harness. (#31893)

We seem to be hitting the 4-retry cap a lot.  The question is whether waiting an
extra few seconds would help or not.

Co-authored-by: Andrei Litvin <[email protected]>

* Add missing function to set delegate in Door Lock Server (#31846)

* Add missing function to set delegate in Door Lock Server

* Restyled by clang-format (#31847)

Co-authored-by: Restyled.io <[email protected]>

---------

Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com>
Co-authored-by: Restyled.io <[email protected]>

* Bump third_party/mbedtls/repo from `1b9cea3` to `6b36a5d` (#31913)

Bumps [third_party/mbedtls/repo](https://github.com/ARMmbed/mbedtls) from `1b9cea3` to `6b36a5d`.
- [Release notes](https://github.com/ARMmbed/mbedtls/releases)
- [Commits](https://github.com/ARMmbed/mbedtls/compare/1b9cea30b1d59a42df7d0f98aed97462985d42d5...6b36a5db07ae0e299c9e67f526c28db93e586e25)

---
updated-dependencies:
- dependency-name: third_party/mbedtls/repo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [Scenes] Test Update  (#31614)

* Updated PICS and server yamls Test_TC_... to fit test plan

* Apply suggestions convert hex to dec base

Co-authored-by: Junior Martinez <[email protected]>

* Updated remaining transition times and added delay for Darwin CI test

* Added verification for steps 4b and 4c in TC_S_2_5

* Restyled by whitespace

* Restyled by prettier-yaml

* Removed Un-necessary PICS, added verification where it was missing in TC_S_2_5 and TC_S_2_6

---------

Co-authored-by: Junior Martinez <[email protected]>
Co-authored-by: Restyled.io <[email protected]>

* Bump third_party/ot-br-posix/repo from `13d583e` to `9326cc3` (#31914)

Bumps [third_party/ot-br-posix/repo](https://github.com/openthread/ot-br-posix) from `13d583e` to `9326cc3`.
- [Release notes](https://github.com/openthread/ot-br-posix/releases)
- [Commits](https://github.com/openthread/ot-br-posix/compare/13d583e361c7038b967b601d5e5f6739b0bcf736...9326cc38b6b6ce81958a96d7821c4cb21976d636)

---
updated-dependencies:
- dependency-name: third_party/ot-br-posix/repo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [Tizen] Use spec complaint BLE advertising intervals (#31790)

* [Tizen] Use spec complaint BLE advertising intervals

* Transition from fast adv to slow after timeout

* Refactor Tizen specific BLE initialization function

* Use ScheduleLambda instead of ScheduleWork

* Wrap C callbacks with lambda to make methods non-static

* Define BLE_CONNECTION_OBJECT for Tizen platform

* Get rid of another static method

* Update name to align with convention

* Do not use sInstance directly if possible

* Added the --app-pid flag to the python matter testing support (#31866)

* Added the --app-pid flag to the python matter testing support to provide a way for test scripts to get the PID of the app they are running against.

* fixed typo.

Co-authored-by: Petru Lauric <[email protected]>

---------

Co-authored-by: Petru Lauric <[email protected]>

* TC-ACE-2.1/2: Update default timeout (#31643)

* TC-ACE-2.1/2: Update default timeout

* Fix default timeout

Hey, you know what helps? Committing changes in the correct
branch before uploading.

* python testing: Add PICS parser for xml (#31493)

* python testing: Add PICS parser for xml

Code blatently stolen from Jon Rhees.

* Restyled by isort

* remove some debug

---------

Co-authored-by: Restyled.io <[email protected]>

* [Linux] Do not reuse cancellable object  (#31828)

* [Linux] Do not reuse cancellable object

Per documentation for g_cancellable_reset():

> Note that it is generally not a good idea to reuse an existing
> cancellable for more operations after it has been cancelled once, as
> this function might tempt you to do. The recommended practice is to
> drop the reference to a cancellable after cancelling it, and let it
> die with the outstanding async operations.

* Update cancellable in ChipDeviceScanner

* [ICD] Refactor ICDManager to use System::Clock types (#31881)

* Refactor time members

* add using namespace

* Fix ActiveModeThreshold type and cast

* [MatterYamlTests][darwin-framework-tool] Use a list of tests to run f… (#31792)

* Properly handle Aliro credential validation in door lock server (#31932)

* Handle Aliro credential in door lock server

* Restyled by clang-format (#31933)

Co-authored-by: Restyled.io <[email protected]>

* Update src/app/clusters/door-lock-server/door-lock-server.cpp

Co-authored-by: Boris Zbarsky <[email protected]>

* Restyled by clang-format (#31935)

Co-authored-by: Restyled.io <[email protected]>

* Update constant name from git chage

* Update to use SupportsAliroProvisioning API

---------

Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com>
Co-authored-by: Restyled.io <[email protected]>
Co-authored-by: Boris Zbarsky <[email protected]>

* Implement support for more configurable server endpoints in Matter.framework. (#31814)

* Implement support for more configurable server endpoints in Matter.framework.

* Public APIs on MTRDeviceController to add/remove an endpoint.
* Internal APIs on MTRDeviceController to query the access grants for a cluster
  path and the declared "minimum privilege needed" to read a given attribute.
* Changes to the controller factory to stop using app/dynamic_server and instead
  use the new infrastructure to expose OTA Provider on endpoint 0.
* Internal APIs on the controller factory to query access grants and declared
  privileges.
* An implemenation of AccessControl::Delegate to do ACL checks using the
  above-mentioned APIs.
* A fix to MTRServerAttribute's setValue for arrays: it was not expecting the
  correct data-value structure for an array.  This requires fixing some tests
  too, to provide the right structures.
* Changes to the MTRServer* data structures to allow passing nil to
  associateWithController, to support the OTA endpoint which is not associated
  with any controller.
* Changes to MTRServerCluster to create an AttributeAccessInterface, the set of
  EmberAfAttributeMetadata needed to represent its attributes, and various other
  things needed to register a cluster with the "ember" bits.
* Changes to MTRServerEndpoint to create an EmberAfEndpointType, a list of
  EmberAfCluster, and various other things needed to register an endpoint with
  the "ember" bits.
* (Re-)addition of MTRIMDispatch to handle command dispatch for OTA and host a
  few other functions the "ember" bits expect to exist.
* Addition of some headers that the "ember" bits expect to exist at specific
  paths and with some specific content: "app/PluginApplicationCallbacks.h" and
  "zap-generated/endpoint_config.h".  Importantly, the latter sets
  FIXED_ENDPOINT_COUNT to 0.
* Addition of unit tests that exercise the non-OTA bits of the above (OTA is
  covered by existing tests), including the ACL checks and so on.
* Including a bunch of src/app and src/app/util files needed for the "ember"
  stuff to work in the framework.
* Turning off the chip_build_controller_dynamic_server bit that we are no longer
  using (and which conflicts with the above bits).
* Configure Darwin to support 254 dynamic endpoints (the maximum that makes
  sense) by default.
* Adjusting include paths for the Xcode darwin-framework-tool project, so that
  it sees the new headers that were added.

* Address review comments.

* Fix test timeout due to resolving IPv4 non-locahost addresses.

* Remove stale comment.

* EFR32 and SiWx917 can now use the same ConfigurationManagerImpl.cpp implementation (#31939)

* Remove vestige of the initial ICD event base management (#31940)

* [darwin-framework-tool] Remove codegen tests (#31942)

* Add strong guarantee on monotonicity of system clock (#31885)

* Add strong guarantee on monotonicity of system clock

- It was observed some platforms have decrementing values from
  `SystemClock::GetMonotonicMilliseconds64()` implementation
  which can violate the required invariant that they NEVER go back,
  since multiple deadlines are computed from this clock, which could
  then never hit. This was observed to break in the field in subtle
  ways after ~48 days (2^32 milliseconds).
- This change introduces a VerifyOrDie to allow crash/restart if
  the invariant is broken, since that leaves the stack in a possibly
  wedged state.
- The new invariant is constructed to be reentrant-safe to maintain
  the invariant, in a way that it will eventually be caught, even
  if there are many threads/cores calling `GetMonotonicTimestamp()`.
  This was done in a lock-free manner, and was added since the public
  API of SystemLayer is not guaranteed to only be called from Matter
  thread context.

Issue #31875

Testing done:

- All unit tests still pass.
- All integration tests still pass.
- When `mockClock.AdvanceMonotonic(200_ms);` is replaced with
  `mockClock.AdvanceMonotonic(0xffff'ffff'ffff'ffff_ms);` in
  `TestSystemTimer.cpp::CheckOrder()`, the test crashes as expected
  due to detection of wraparound.

* Fix review comments and move to intrinsics

* Restyled by clang-format

* Fix build and add warning

* Fix build

* Restyled by clang-format

* Address review comment, add new define instead of linux && darwin

* Restyled by clang-format

---------

Co-authored-by: [email protected] <[email protected]>
Co-authored-by: Restyled.io <[email protected]>

* Initial XML for Power Topology cluster (#31689)

* Initial XML for Power Topology cluster

* Regen

* Restyled really wants newlines at the end of every JSON file

* Rename LeafTopology to TreeTopology

* [Linux] Add support for extended advertisement (#31668)

* Use ScheduleLambda() instead of ScheduleWork

* Set min/max advertisement interval

* Matter BLE advertisement type shall be peripheral

* Allow intervals to be set after initialization

* Keep BlueZ default for adv slicing duration

* Allow to update intervals on the fly - fast/slow

* Transition to slow advertising after timeout

* Fix advertisement typos in all places in the codebase

* Do not specify advertisement timeout in BlueZ

* Add support for extended advertisement

* Post review changes - add manual how to enable experimental features in
BlueZ

* Restyled by prettier-markdown

* Assert that extended adv interval is >= fast adv interval

* Cancel HandleAdvertisingTimer timer in case of error

---------

Co-authored-by: Restyled.io <[email protected]>

* ESP32: Add a menuconfig option to enable/disable persist subscription (#30889)

* ESP32: Add a menuconfig option to enable/disable persist subscription

* enable persistent subscription by default

* Regenerate ZAP after merge conflict (#31956)

* Make the help text for write-by-id say the right thing about the value list. (#31884)

https://github.com/project-chip/connectedhomeip/pull/20413 changed the value
separator from comma to semicolon, but did not change the help text.

Fixes https://github.com/project-chip/connectedhomeip/issues/31854

* Improve the logic around schedule application in LockEndpoint. (#31946)

The old logic had several bugs:

* For kYearDayScheduleUser users, there was no schedule enforcement at all,
  since the outer "if" never tested true.
* For kWeekDayScheduleUser users, there was no schedule enforcement at all,
  since the inner "if" never tested true.
* For kScheduleRestrictedUser users, access was allowed if there was any
  schedule, weekday or yearday, that granted access.  But the intent is that
  access should be disallowed if there are year day schedules and none of them
  grants access, no matter what's going on with weekday.  And vice versa.

* Make it clearer that cluster-enums-check is returning kUnknownEnumValue. (#31951)

Instead of hardcoding the returns via the ZAP template, just use the symbolic name.

* Spell out inet and lwip sources in GN (#31931)

* Spell out inet and lwip sources

Prepare to have some scripts that force all headers/sources to be known to GN.

* Fix some copy and paste issues

* Another copy and paste issue fixed

* Restyle

* Board-specific LWIP options for silabs boards (rs911, wf200, thread) were never used (#31929)

* Add silabs-specific lwip options to GN

* Make the lwipopts conditional

* Revert "Make the lwipopts conditional"

This reverts commit ff91e81193fad3b2b4941048122a1b9353cb6b3f.

* Add another dependency for lwip

* Remove TAP support from lwip (#31886)

* Update SupportsAnyCredential function to include Aliro (#31949)

* Update SupportsAnyCredential function to include Aliro

* Restyled by clang-format (#31950)

Co-authored-by: Restyled.io <[email protected]>

---------

Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com>
Co-authored-by: Restyled.io <[email protected]>

* Implement PayloadTestRequest command in DGGEN (#31907)

* Add DataModelTest feature to general diagnostics

* Regen ZAP

* Fix TC-DGGEN-1.1

* Restyled by whitespace

* Restyled by clang-format

* Restyled by prettier-json

* Restyled by isort

* Fix integration tests

* Fix Java codegen

* Address review comments

* Fix Java codegen

* Fix Java codegen

* Fix Java codegen golden data

* Fix TC-DGGEN-1.1

* Fix removal of Commands.h

* Fix YAML test

---------

Co-authored-by: [email protected] <[email protected]>
Co-authored-by: Restyled.io <[email protected]>

* Add orphan header files from `src/controller` to gn (#31882)

* Add files from src/controller to gn

* Add more orphaned files from controller itself

* Restyle

* Move more files into sources since CHIPCluster actually includes them. Seems VERY odd to have this header used but not actually have any implementation. This is a bug!

* Attempt to fix some of the include oddities. Controller is VERY broken and feels like a god object definition

* Move more headers ... CHIPDeviceController strongly pulls the entire world.

* Fix typo

* One more header

* Fix chef

* Add more includes that seem needed

* Add another dependency

* Add includes config to controller as it needs relative includes

* Restyle

* Fix clang-tidy logic

* Apply some clang-tidy fixes since I looked at controller. Minor nullptr usage and remove else after return

* Ensure no errors about unused assignments

* Yet another fix for logic to make sure all defined lists are used

* Include only headers as the special targets to force include errors

* Fix typo

* Fix typo

---------

Co-authored-by: Andrei Litvin <[email protected]>

* Add discover port parameter (#31948)

* Adds MdnsDiscovery class (#31645)

* Adds MdnsDiscovery class

* Fix restyle/lint

* Fix restyle

* Adds zeroconf dependency in tests.yaml

* Relocates zeroconf dependency from tests.yaml to requirements.txt

* Addresses latest review comments

* Fixes typo

* Updates instantiation method and initial discovery

* Fix restyle/lint

* Addresses latest review comments

* Addresses latest review comments

* Fix restlye/lint

* Addresses review comments

* restore enum

* Refactor progress

* Major refactor to discover() and get_operational_service_info, pending other get methods

* Fix restyle

* Fix restyle/lint

* Updates descriptions and variables

* Major refactor #2

* Fix restyle

* Updates method descriptions

* Fix restyle

* Addresses review comments

* Fix restyle

* Fix lint

* Default parameters adjustment

---------

Co-authored-by: C Freeman <[email protected]>

* Allow chip-repl to know how many InvokeResponseMessages were recieved (#31781)

* Allow chip-repl to know how many InvokeResponseMessages were recieved

* Restyled by autopep8

* Clean up callback to be test only specifically

* Restyled by clang-format

* Address PR comments

* Small edit to add line that shouldn't be removed in this PR

* Address PR comment

---------

Co-authored-by: Restyled.io <[email protected]>

* [ICD] Refactor ICDCounter logic (#31957)

* Refactor ICD Check-In counter
Fix initial Check-In counter value

* Add basic integration tests to validate behavior

* Restyled by whitespace

* Restyled by prettier-yaml

* rename source_set

* Rename constant name

* Apply suggestions from code review

Co-authored-by: Boris Zbarsky <[email protected]>

* addres review comments

* Add init/shutdown unit-test for the ICDManager

* Fix Build.gn - multiple inclusion of CheckInMessage.cpp

---------

Co-authored-by: Restyled.io <[email protected]>
Co-authored-by: Boris Zbarsky <[email protected]>

* Add assertChipStackLockedByCurrentThread for LogEvent (#31895)

* Updated test comments to display the proper keys values (#31968)

* Move messagedef to its own buildfile (#31972)

Co-authored-by: Andrei Litvin <[email protected]>

* Upload .ips bits in Xcode derived data on failure in Darwin tests as an artifact. (#31964)

If there are crashes in the test, the crash logs should be in there, and we can
try to debug those.

* [Telink] Add B95 (TLSR9258A) skeleton & Update builds to docker version 35 (#31762)

* add the board of tlsr9253b and tlsr9253b_retention

* riscv: telink: update board setting

- update the tlsr9253b setting .

Signed-off-by: Haiwen Xia <[email protected]>

* telink: b93: update the build sample and b93 platform

- update the light-switch and lighting-app .
- set the tlsr9253b and tlsr9253b_retention for the ci environment .

Signed-off-by: Haiwen Xia <[email protected]>

* telink: b93: fix the build environment

- set the tlsr9253b and tlsr9253b_retention for the ci environment .

Signed-off-by: Haiwen Xia <[email protected]>

* telink: b93: loopback to remote version

- change the github setting to telink .

Signed-off-by: Haiwen Xia <[email protected]>

* [Telink] Add B93 to Readme files

* [Telink] Fix CI builds

* [Telink] Reduce number of builds

* [Telink] Disable update Zephyr to specific revision

* Update builds to docker version 34

* [Telink] remove duplicated code

* revert k32w image update

* [Telink] rename B93 into B95

* Update builds to docker version 35

* fix doc build

---------

Signed-off-by: Haiwen Xia <[email protected]>
Co-authored-by: haiwen.xia <[email protected]>

* Enforce that files in the `src` directory are referenced from BUILD.gn (#31960)

* Start creating a script

* Have much more functionality

* Restyle

* Add some doc comments ... this starts being usable

* Add workflow to validate that gn knows about files

* Remove controller from known exceptions: we fixed that one

* Fix flake8

* Add more known failures

* Better error reporting for gn reachability

* Remove the platform specific orphan file listing

* Force the "not failures anymore" to be fatal

---------

Co-authored-by: Andrei Litvin <[email protected]>

* Fix linter error: messagedef files are now covered by gn (#31995)

* Rvc op state delegate dummy start stop handlers (#31764)

* Added dummy implementations of the start and stop handler methods to the RvcOperationalState::Delegate class.

* Removed the start and stop handler methods defined in the all-clusters-app RvcOperationalStateDelegate.

* Removed the start and stop handler methods defined in the rvc-app RvcOperationalStateDelegate.

* Restyled by clang-format

* Apply typo fixes from code review

Co-authored-by: Petru Lauric <[email protected]>

---------

Co-authored-by: Restyled.io <[email protected]>
Co-authored-by: Petru Lauric <[email protected]>

* Rename EMBER_AF to MATTER_DM (#31971)

* Mark ElectricalPowerMeasurement and PowerTopology provisional on Darwin. (#31959)

* ubuntu:35 is not a valid runner (#32007)

* Rearranged python test scripts order into an alphabetical format (#31930)

* Rearranged order of the pytest scripts alphbetically accordingly to the arguments

* Fixed 2 scripts alphabetically were not in line

* This changes reflect the sorting of the testing python scripts via machine runned .py script.

---------

Co-authored-by: Andrei Litvin <[email protected]>

* Fix global reference leak across the android in matter (#31890)

* [ICD] Trigger Check-In messages at boot (#31993)

* Send Check-In message at boot

* Update reboot test

* update comment

* restyle

* refactor function so that it can be used outside of the reboot

* Remove unused define function

---------

Co-authored-by: Andrei Litvin <[email protected]>

* TV Matter Media: Resolve cluster revisions (#31863)

* Resolve the cluster revision issues

* Restyled by whitespace

* Restyled by clang-format

* Update per comments

* Restyled by whitespace

* Restyled by clang-format

* Update Content Launcher

* Restyled by whitespace

* Restyled by clang-format

---------

Co-authored-by: Restyled.io <[email protected]>

* Linux: Implement PDC support in WiFiDriver / ConnectivityManagerImpl (#31983)

* Use DecodeChipCert instead of LoadCert in chip-cert print-cert

LoadCert performs additional checks (only relevant to operational certs)
that prevent PDC identities from being printed.

* Simplify CHIPCert test vector code

* Add ConvertECDSAKeypairRawToDER to CHIPCert

* Linux: Make WiFiNetwork struct private, add helpers

- Make WiFiNetwork struct private
- Move static_asserts to where the fields are defined
- Add Empty() and Match() helpers to WiFiNetwork
- Validate index parameter in ReorderNetwork()
- Use CHIP_ERROR_FORMAT

* Linux: Implement PDC support in WiFiDriver / ConnectivityManagerImpl

* Address review comments

* Clear handled err before the next call

* [crypto] Extend the OperationalKeystore API to allow migration (#31279)

- Extended the OperationalKeystore API by mechanism for migration of
operational keys stored in one Operational Keystore implementation
to another.

- Extended the OperationalKeystore API by exporting keypair for Fabric.

- Added Unit tests to PersistentStorageOpKeyStore and PSAOpKeystore regarding
the new OperationalKeystore for migration and exporting OpKeys.

Added first unit tests, created export method

* Remove `CHIPClusters.h` and corresponding `.zapt` file from the build (#32004)

* Completely remove all references to CHIPClusters.h

* Restyle

* Remove references to CHIPClusters.zapt as well

* Use BaseCluster instead of specific clusters

* Fix names and includes

* add java and python files from `src/controller` to gn (#31977)

* Add 2 java files to be known to gn

* Add python files

* Fix commas and format

* Mark a set of files handled

---------

Co-authored-by: Andrei Litvin <[email protected]>

* Add files from `src/lib/dnssd` to be tracked by BUILD.gn files (#31976)

* Make sure dnssd constants and browsedelegate is tracked by gn

* Add more minmdns sources to be known to gn

* Move more things into Types to make sure that platform Dnssd knows about them

* Fix system layer dependency in linux dnssd impl

* Remove dnssd files from lint

* Add Delegate to Types as well ... it seems required for platform

* Remove duplicate source

* Restyle

---------

Co-authored-by: Andrei Litvin <[email protected]>

* Log when MTRServerAttribute not bound to a controller has its value updated. (#31973)

This should enable API consumers to more easily figure out why their attribute
updates are not being published.

* Quick cleanup of unused type (#32009)

* TV Matter Media: Add logic to message cluster (#31943)

* Adding basic logic

* Updates

* Update message cluster

* Update copyright

* Restyled by whitespace

* Restyled by clang-format

---------

Co-authored-by: Restyled.io <[email protected]>

* Refactor CommandSender newly added APIs to be more extendable (#31837)

* Update rvc app (#31827)

* Replaced the vendor specific mode tag for the mapping mode with the mapping mode tag.

* Updated the rvc-app's RvcOperationalStateDelegate to allow setting of a callback furtion for when the GoHome commond in received.

* Implemented the GoHome handler for rvc-app.

* Updated the PICS file for the rvc-app.

* Fixed the Admin commissioning cluter's zap config for the rvc-app

* Renamed the PICS values file to be similar to the ci file. Updated the script that runs all the RVC yaml tests.

* Updated the rvc-app state machine diagram.

* Updated theh rvc-app README.

* Restyled by clang-format

* Restyled by prettier-markdown

* Restyled by shfmt

* Updated the rvc-app .matter file.

* Reduced the text of some errors as it was longer that allowed.

* Added an out-of-band message to reset the rvc-app to its start-up state.

* Updated a returend error following the spec change.

* Excluded the RVC state diagram png from the lint check for %zu.

* Updated the rvc-app readme.

* Removed PIXIT settings from the rvc-app-pics values.

* Excluded all binary files from the lint check for %zu.

* Re-removed the OpenBasicCommissioningWindow command of the Administrator Commissioning cluster in the rvc-app due to security concerns.

* Updated the rvc-app .matter file.

---------

Co-authored-by: Restyled.io <[email protected]>

* TC-ACE-2.1/2: Add commissioning step (#31715)

This is apparently what the TH is using to determine if a test
requires commissioning, so we best add it.

* Tweaks to evse test plans based on review(issue #31460) (#31901)

* Added support for test event triggers and handling of reading events into matter_testing_support.

* Made TC_EEVSE_Utils.py use the matter_testing_support instead of its own local copy.

* Restyled by isort

* Added TC_EEVSE_2_2, 2_4, 2_5 to tests.yaml. Fixed compile warning treated as error due to sign conversion.

* Updated default min_charge and max_charge in TC_EEVSE_Utils send_enable_charge_command to have sensible default values if not specified.

* Fixed test app name

* Moved test runs later in test yaml

* Fixed discriminator used in script to match that used in the app.

* Added --endpoint 1 so it tests the correct endpoint

* Code review comment fixes.

* Fixed trailing whitepace

* Merged TC_EEVSE tests back in

---------

Co-authored-by: Restyled.io <[email protected]>

* Cleanup a few more files that were not recognized by gn (#31999)

* Cleanup and fix some tests dependencies

* Fix test compilation. Header was forcing C-linkage of the name

* restyle

* Fix code lint

* Fix one more

* Fix dependencies for more common integ files

* Remove assert because this file is exercised in dependencies

* Add Mock events handling

* Remove TestOperationalDeviceProxy - this proxy does not seem to exist anymore and this test is never run

* One more file update

* Update linter

* Restyle

---------

Co-authored-by: Andrei Litvin <[email protected]>

* [Darwin] MTRDevice cache make use of controller storage for persistent cache (#31952)

* [Darwin] MTRDevice cache make use of controller storage for persistent cache

---------

Co-authored-by: Boris Zbarsky <[email protected]>

* Make MTRServerAttribute threadsafe. (#31970)

* Make MTRServerAttribute threadsafe.

If two API clients are both touching the same instance of MTRServerAttribute on
different threads, we should handle that correctly.

* Address review comments.

* [Python] CommissonWithCode support discoveryType (#31904)

* [Linux] fix memory leak

* [Python] call StopDiscovery after DiscoveryNodes

* [Python] CommissionWithCode support DiscoveryType

* fix param error

* add e2e test

* automatically run in CI

* Test different modes using different devices

* fix error manual code

* Microwave oven: Fix conformance (#32029)

* [IM] Remove the EMBER_ZCL_STATUS_DUPLICATE_EXISTS error code (#32017)

* Remove the EMBER_ZCL_STATUS_DUPLICATE_EXISTS error code

* fix comments

* [crypto] Add HKDF key handle and use it during PASE (#31311)

* [crypto] Add HKDF key handle and use it during PASE

Current SPAKE2+ interface assumes that raw shared secret
is extracted and used by the application to derive session
keys. This prevents using secure crypto APIs, such as PSA,
to perform SPAKE2+ and do the key derivation in a secure
environment, and isolate the application from key material.

1. Add Hkdf128KeyHandle type and add methods for deriving
   session keys from an HKDF key.
2. Change SPAKE2+ interface to return HKDF key handle
   instead of raw key secret.

A similar approach can be taken to improve CASE security
in the future though we would need 256-bit HKDF key support
in such a case.

* Change HKDF key handle to hold key of any length

* Code review

* Enable rvc python tests to run in ci (#31872)

* Replaced the vendor specific mode tag for the mapping mode with the mapping mode tag.

* Updated the rvc-app's RvcOperationalStateDelegate to allow setting of a callback furtion for when the GoHome commond in received.

* Implemented the GoHome handler for rvc-app.

* Updated the PICS file for the rvc-app.

* Fixed the Admin commissioning cluter's zap config for the rvc-app

* Renamed the PICS values file to be similar to the ci file. Updated the script that runs all the RVC yaml tests.

* Updated the rvc-app state machine diagram.

* Updated theh rvc-app README.

* Restyled by clang-format

* Restyled by prettier-markdown

* Restyled by shfmt

* Updated the rvc-app .matter file.

* Reduced the text of some errors as it was longer that allowed.

* Added an out-of-band message to reset the rvc-app to its start-up state.

* Updated a returend error following the spec change.

* Excluded the RVC state diagram png from the lint check for %zu.

* Added the PICS_SDK_CI_ONLY PICS to the rvc-app-pics-values to allow it to run tests in CI.

* Improved the TC_RVCCLEANM_2_1 test to allow the CI to run the tests against the rvc-app.

* Improved the TC_RVCRUNM_2_1 test to allow the CI to run the tests against the rvc-app.

* Improved the TC_RVCCLEAN_2_2 test to allow the CI to run the tests against the rvc-app.

* Improved the TC_RVCRUNN_2_2 test to allow the CI to run the tests against the rvc-app.

* Improved the TC_RVCOPSTATE_2_1 test to allow the CI to run the tests against the rvc-app.

* Improved the TC_RVCOPSTATE_2_3 test to allow the CI to run the tests against the rvc-app.

* Restyled by autopep8

* Restyled by isort

* Updated the rvc-app readme.

* Removed PIXIT settings from the rvc-app-pics values.

* Excluded all binary files from the lint check for %zu.

* Fixed typos from code review

Co-authored-by: Petru Lauric <[email protected]>

* Re-removed the OpenBasicCommissioningWindow command of the Administrator Commissioning cluster in the rvc-app due to security concerns.

* Updated the rvc-app .matter file.

* Removed sleeps between messages to the DUT as they are not needed.

* Restyled by isort

* Fixed extra imports in python tests.

---------

Co-authored-by: Restyled.io <[email protected]>
Co-authored-by: Petru Lauric <[email protected]>

* Delete ContentLaunch::SupportedProtocolsBitmap::kWebRTC (#32042)

Co-authored-by: Andrei Litvin <[email protected]>

* TC-SM-1.2: Use correct data type (#31644)

* TC-SM-1.2: Use correct data type

Credit to Manjunath for finding this.

Fixes: https://github.com/project-chip/matter-test-scripts/issues/105

* one more fix

* one more

* Pull this out and add a test

* linter

* add docstring

* Stop including af-enums.h in Darwin unit tests. (#32044)

These are Objective-C files, and should not be including potentially-C++
headers.

A bunch of "test that the code is 0" checks were replaced with "error is nil"
checks (and some were removed, if "error is nil" was already being tested).

The macro definition reformatting in MTRBackwardsCompatTests.m is just from
updates to our clang-format version, looks like.

* Add some more progress-style logging to Darwin server endpoints. (#32047)

Lets us track when endpoints/clusters/attributes are set up and attribute values
changed.

* Remove include InteractionModelEngine.h in reporting/Engine.h (#32027)

* [ICD] Add OperatingMode attribute to the LIT-ICD-app (#31997)

* [Interaction Model]Sync AmberAfStatus to InteractionModel::Status (#32016)

* Sync AmberAfStatus to InteractionModel::Status

* fix comments

* fix darwin build

* add TODO for enum class

* fix Darwin

* tracing: Added a macro to report the metric values from the sdk to the tracing framework. (#32032)

* Added metric support

* Addressed the review comments

* [CI] When the CI is starting the server (chip-tool or darwin-framework-tool) wait to see for the websocket message ready before trying to connect (#32006)

* [darwin-framework-tool] Do not use platform::LogV since this is a no-op now

* [CI] When the CI is starting the server (chip-tool or darwin-framework-tool) wait to see for the websocket message ready before trying to connect

* [TC-MWOxxx] Add MWO tests (#30856)

This PR adds test for the MWO clusters.
- Test for Microwave Oven Mode cluster
- Test for Microwave Oven Control cluster

Note: tests reflect spec [PR 8588](https://github.com/CHIP-Specifications/connectedhomeip-spec/pull/8588) and [PR 8715](https://github.com/CHIP-Specifications/connectedhomeip-spec/pull/8715)

This PR also:
- Adds a CI build target for the microwave oven example app
- Adds the python tests to CI
- Uses the example app for tests instead of all-clusters
- Fixes an SDK build problem for the microwave control cluster

* Bump third_party/ot-br-posix/repo from `9326cc3` to `c5a7a35` (#32069)

Bumps [third_party/ot-br-posix/repo](https://github.com/openthread/ot-br-posix) from `9326cc3` to `c5a7a35`.
- [Release notes](https://github.com/openthread/ot-br-posix/releases)
- [Commits](https://github.com/openthread/ot-br-posix/compare/9326cc38b6b6ce81958a96d7821c4cb21976d636...c5a7a35e3bd2f3da8cce1e2e2a3bbe5cdeedb729)

---
updated-dependencies:
- dependency-name: third_party/ot-br-posix/repo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump Wandalen/wretry.action from 1.3.0 to 1.4.4 (#32063)

Bumps [Wandalen/wretry.action](https://github.com/wandalen/wretry.action) from 1.3.0 to 1.4.4.
- [Release notes](https://github.com/wandalen/wretry.action/releases)
- [Commits](https://github.com/wandalen/wretry.action/compare/v1.3.0...v1.4.4)

---
updated-dependencies:
- dependency-name: Wandalen/wretry.action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [placeholder] Remove tests generated with zap (#32038)

* [placeholder] Remove examples/placeholder tests codegen

* Remove src/app/tests/suites/pics

* Remove src/app/tests/suites/include

* Remove src/app/tests/suites/templates

* Remove src/app/tests/suites/commands/[delay|discovery|log|system]

* Remove examples/darwin-framework-tool/commands/tests/TestCommandBridge.h

* [TI] CC2674 migration OTA support (#32026)

* ota support for cc2674

* Restyled by clang-format

* Restyled by prettier-markdown

---------

Co-authored-by: Restyled.io <[email protected]>

* Update src/app/util/ emberafstatus (#32054)

* 31599 DEMM & EVSEM FeatureMap list has to be updated as per test plan (should be 0) (#32057)

* Fixes: #31599 - Changed to remove kOnOff support in EEVSEM and DEMM clusters.

* Added a kNoFeatures enum to eevse and demm xml, and then regen_all

* Revert "Fixes: #31599 - Changed to remove kOnOff support in EEVSEM and DEMM clusters."

This reverts commit b79eec63fb35508772f852e5e402147de17df5fb.

* Fix threadsafety issue in MTRServerAttribute. (#32084)

An attempt to get the description could race with updates of _parentCluster.

* Add Electrical power measurement to energy management app (#31616)

* Hoist shared enums and bitmaps into detail namespace

* Regenerate

* Add electrical measurement clusters

* Add NumberOfMeasurements attribute

* Bump to latest spec

* Bump ZAP version

* Remove Electrical Measurement cluster

* Add initial Electrical Power Measurement cluster implementation

* Revert "Remove Electrical Measurement cluster"

This reverts commit 47f5298ad6d1ed5f18b3ae3768960adbf604965c.

* Fix incorrect min/max values on energy attributes

* Formatting electrical-power-measurement-server

* Regen after restoring deprecated electrical measurement cluster

* Re-add inexplicably important blank line to zap_execution.py

* De-alphabetize list of files to avoid breaking GH action

* Semi-realphabetize?

* Added EPM cluster to Energy Management App

* Restore strangely dropped events

* Better BitMask handling

* Change min/max on electrical measurements to be decimal instead of hex

* Rename meas-and-sense to measurement-and-sensing.xml

* Remove seemingly superfluous attribute requirements on Descriptor cluster on Electrical Measurement

* Updates to electrical-power-measurement-server based on comments

* Take all-clusters-zap from upstream-master.

* Added side=server into electrical-power and electrical-energy clusters XML so events can be enabled in ZAP

* Updated all-clusters.zap and reran autogen. Added EPM cluster to energy-management-app.zap

* Added initial version of EPM delegate and instance to energy-management-app

* Enabled Electrical Energy Measurement in example-energy-management-app ZAP and regen all.

* Added ElectricalEnergyMeasurement to chip-repl __init__.py

* Restyled by isort

* Changed feature map to indicate CUME and IMP support only

* Adding into __all__ some missing clusters which are causing flake8 issues.

* Removed out of date comment

* Added a test event trigger to fake energy reporting readings into the EEM cluster (hooks ready for EPM cluster)

* Added new Energy Reporting TE Trigger delegate

* Updated random calculation and scaled into mWh (divide by 3600)

* Restyled by whitespace

* Restyled by gn

* Removed accidental launch.json inclusion

* Fix for ARM linux etc builds due to gn dependency check error

* Added code review suggestions.

* More code review suggestions fixed.

* Hoist shared enums and bitmaps into detail namespace

* Regenerate

* Add electrical measurement clusters

* Add NumberOfMeasurements attribute

* Bump to latest spec

* Bump ZAP version

* Remove Electrical Measurement cluster

* Add initial Electrical Power Measurement cluster implementation

* Revert "Remove Electrical Measurement cluster"

This reverts commit 47f5298ad6d1ed5f18b3ae3768960adbf604965c.

* Fix incorrect min/max values on energy attributes

* Formatting electrical-power-measurement-server

* Regen after restoring deprecated electrical measurement cluster

* Re-add inexplicably important blank line to zap_execution.py

* De-alphabetize list of files to avoid breaking GH action

* Semi-realphabetize?

* Restore strangely dropped events

* Better BitMask handling

* Change min/max on electrical measurements to be decimal instead of hex

* Rename meas-and-sense to measurement-and-sensing.xml

* Remove seemingly superfluous attribute requirements on Descriptor cluster on Electrical Measurement

* Updates to electrical-power-measurement-server based on comments

* Remove defaults from MeasurementAccuracyRangeStruct to match spec update

* Restore side="server" to events

* Move common enums and bitmaps to detail:: instead of detail::Enums and detail::Bitmaps; remove superfluous using statement

* Assign ID to Electrical Sensor device type

* Removed EPM and EEM from Root Node Device

* Restyled formatting is different than clang-format

* Re-add FeatureMap to attributeAccessInterfaceAttributes for EEM and EPM

* Regen after merge

* Added electrical-energy-measurement-server to CMakelist to fix linker issue.

* Lock client on Electrical Sensor device type

* Remove unneeded using statement now that Enums are in detail::

* Check for null iterators and error

* Switch to ResourceExhausted from CHIP_ERROR_INTERNAL

* Re-enabled EEM in energy management app and regen all after previous merge

* Some refactoring to add EPM Instance into the EVSEManufacturer class to clean up containment. Added ability to fake voltage, power and current to the TE triggers.

* Missed one file.

* Fixed crash due to unassigned dg pointer. Power/Voltage/Current faking working too.

* Touch file since restyled crashed

* Restyled by gn

* Restyled by isort

* Add stub for EPM cluster

* Reverted whitespace change

* Did regen_all after merge from master to resolve conflicts.

* Put back line of clusters which somehow got deleted accidentally.

* Remerged ZAP file and regen all after resolving conflicts.

* Fixes for Python tests

* Correct name for Ember init callback

* Formatting

* Sync optional attributes list with .zap file for EPM

* Add missing features to EPM stub

* Revert FeatureMap in attributeAccessInterfaceAttributes

* Allow FeatureMap in EEM constructor; add all-clusters-app EEM stub

* Forgot zcl-with-test-extensions

* Unregister EEM attribute access in destructor

* Remove redundant returns to keep clang-tidy happy

* Fix for issue mentioned in code review on EEM cluster limiting the number of endpoints it allows.

* Refactoring to have a common EvseMain across all platforms to avoid making changes in multiple places

* Added electrical-power-measurement-server to ESP32 CMakeLists.txt

* Updated Matter device types to add EVSE

* Open and saved energy-management-app.zap and regen_all

* Removed duplicate ElectricalEnergyMeasurment class which was accidentally merged in. Fixed issue raised about ElectricalEnergyMeasurement array size not working on bridges.

* Added support for test event triggers and handling of reading events into matter_testing_support.

* Made TC_EEVSE_Utils.py use the matter_testing_support instead of its own local copy.

* Restyled by isort

* Cherry pick from Tweaks to EVSE Test plans (Issue #31460)

* Changed the random value generation to make the values +/- and handle sign conversion to avoid compile warnings

* Enabled cumulativeEnergyExported in Energy-management-app.

* Added initial electrical power measurement 2.2 test case

* Changed copyright date

* Code review comment fixes.

* Changed to c++ style cast

* Fixed trailing whitepace

* Added support for testing read of EEM attributes and change of values

* Corrected EPM references in TC_EEM_2_2. Added TC_EEM_2_3

* Added periodic energy reporting, and new cumulativeEnergyReset attribute into energy-management-app.zap

* Added periodic energy reading support and TC_EEM_2_3 to 2_5.

* Python removed unused logging and EventChangeCallback

* Updates to align to test plan PR #3949

* Added initial EEM_2_1 test script.

* Added example of setting EEM Accuracy and EEM CumulativeEnergyReset structure - TC_EEM_2_1 now passes

* Restyled by whitespace

* Restyled

* Removed extra spaces in TC_EEM_2_1.py

* Removed unused EnergyManagementManager.cpp/.h

* Fixed PowerMode = kAc

* Initial TC_EPM_2_1.py script

* Restyled by isort

* Merged TC_EEVSE tests back in

* Initialized NumberOfMeasurementTypes

* Added EEM 2.1,2.2,2.3,2.4,2.5 and EPM 2.1,2.2 into CI workflow tests.yaml

* Interim state - partially refactored how Measurement Structs are encoded similar to how ModeBase clusters are implemented. Needs tidy up. Will break all-clusters for now

* Removed SetNumberOfMeasurementTypes since this can be derived from the ArraySize(kMeasurementAccuracies). Added more stringent checking in test script of measurementTypes and ranges.

* Completed TC_EPM_2_1.py script

* Corrected test plan spec reference.

* Test EPM_2_1 now runs and passes. Allows checking that attributes are supported, and skips test if not. Validation of values ignores Nulls (which are allowed). Turned on Ranges attribute.

* Revert unintended change to tests.yaml

* Python test case code-review updates

* Removed old range iterator.

* Fixed lint issues and adjusted timings to match the test plan pr.

* Fixed all-clusters electrical-power-measurement cluster by using the energy-management-app/common Delegate

* Implemented HarmonicCurrents and HarmonicStructs (to return empty list for now)

* Changed the API to ensure that a delegate doesn't change the data mid-way through a read, so the cluster server signals with a StartxxxRead and EndxxxRead call

* Applying suggested changes

* Incorporated feedback from review to simplify the code

* Removed comment per code review

---------

Co-authored-by: Hasty Granbery <[email protected]>
Co-authored-by: Restyled.io <[email protected]>

* Darwin: Simplify test setup and teardown (#32061)

* Darwin: Simplify test setup and teardown

Avoid relying on dummy tests that are ordered first / last.

* fix unused variables

* Bump third_party/openthread/repo from `cf357d7` to `b212a0a` (#32067)

Bumps [third_party/openthread/repo](https://github.com/openthread/openthread) from `cf357d7` to `b212a0a`.
- [Release notes](https://github.com/openthread/openthread/releases)
- [Commits](https://github.com/openthread/openthread/compare/cf357d70be94e6f3f21d07b3c16e29bb7ec5cc7e...b212a0a748070ccbda765c3ebed2aab8b6b08fce)

---
updated-dependencies:
- dependency-name: third_party/openthread/repo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump third_party/mbedtls/repo from `6b36a5d` to `ede909f` (#32066)

Bumps [third_party/mbedtls/repo](https://github.com/ARMmbed/mbedtls) from `6b36a5d` to `ede909f`.
- [Release notes](https://github.com/ARMmbed/mbedtls/releases)
- [Commits](https://github.com/ARMmbed/mbedtls/compare/6b36a5db07ae0e299c9e67f526c28db93e586e25...ede909f99ab6e6a958a41e365251c2a1d2c4ed4d)

---
updated-dependencies:
- dependency-name: third_party/mbedtls/repo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump third_party/imgui/repo from `f50ddc4` to `5360903` (#32068)

Bumps [third_party/imgui/repo](https://github.com/ocornut/imgui) from `f50ddc4` to `5360903`.
- [Release notes](https://github.com/ocornut/imgui/releases)
- [Commits](https://github.com/ocornut/imgui/compare/f50ddc431e3b8840036e88abc4c3cf74500aa12b...536090303a8fca7d896f77d6d63dc59249bc87f4)

---
updated-dependencies:
- dependency-name: third_party/imgui/repo
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update chef.py (#32060)

* DNS-SD: Remove calls to set T flag (#32083)

* DNS-SD: Remove calls to set T flag

Nothing currently supports TCP, therefore nothing should be setting
this flag. Per the new spec text, it is now forbidden to have
the lowest bit marked. This will bring the SDK examples into compliance
with 1.3.

Note that this PR does not fix the advertising parameters API. We
will need a new API for this flag when TCP support lands. Leaving
this for a follow up PR as changing the API should happen separately
from bringing the examples into conformance as it may affect the
platforms, who have implementations outside of the SDK.

Test: tested with all-clusters and avahi. Also fixed tests to
      omit this flag and ensure it does not appear in the TXT
      record.
      Automated cert test for operational records is in progress
      and requires this PR to pass.

* Restyled by clang-format

---------

Co-authored-by: Restyled.io <[email protected]>

* [nrfconnect] Fix memory leak in Window Covering sample. (#32041)

We were leaking 8 bytes each time the new attribute change was
reported by the WindowCovering Server. It was resulting in
running out of heap when stressing the device (by sending multiple
up-or-open/down-or-close commands).

Signed-off-by: Marcin Kajor <[email protected]>

* [Silabs] Update Silabs ICD status LED functionality description within README.md's (#31888)

* Updated Silabs ICD status LED functionality description

* Restyled by prettier-markdown

* Updated style and spelling

* Updated style and spelling

* Updated to include ICD vs. non-ICD LED behavior description

* Removed unnecessary underscores

* Correct description/documentation to refactored location of Silabs lighting example

* Restyled by prettier-markdown

* Restyled by shfmt

---------

Co-authored-by: Restyled.io <[email protected]>

* Enabling wpa3 mode by default. (#31858)

* Mark PayloadTestRequest/Response provisional on Darwin for now. (#32085)

* [Examples] Remove EmberAfStatus from example files (#32056)

* Replace EmberAfStatus in examples files

* Fix Tv-app

* fix ci

* remove using in headers

* [Android] Add Status handling for onReport code path (#32082)

* [ICD]Convert the ICD DNS advertiser variable from optional bool to an enum class (#32080)

* Convert the ICD DNS advertiser variable from optional bool to an enum class

* Apply suggestions from code review

Co-authored-by: mkardous-silabs <[email protected]>

* default mICDModeAdvertise  to kNone

---------

Co-authored-by: mkardous-silabs <[email protected]>

* Update DGGEN_1_1 and DGGEN_2_3 to match latest testplan spec (#31998)

* Update DGGEN_1_1 and DGGEN_2_3 to match latest testplan spec

* Fix CI

* Fix CI

* Restyled by whitespace

* Restyled by prettier-yaml

* Fix CI

* Fix CI

* Quick fix

* Update based on PR comments

* Restyled by whitespace

---------

Co-authored-by: Restyled.io <[email protected]>

* Add test steps to IDM_1_4 to validate multiple InvokeResponseMessages (#31979)

* Add test steps to IDM_1_4 to validate multiple InvokeResponseMessages

* Restyled by autopep8

* Address PR comments and CI issues

* rename variable

* Fix CI

* Fix incorrect merge attempt

* Fix CI

---------

Co-authored-by: Restyled.io <[email protected]>

* [Tizen] Shink scope of `capi-system-peripheral-io` dep (#32048)

* [Diagnostic Logs] Followup for #31638 (#31833)

* [CI] Make it possible to specify the timeout when waiting for a specific string in scripts/tests/chiptest/test_definition.py since it may be longer than 10 seconds

* [CI] Add a second instance of the configured applications such that YAML can start the app multiple times if needed

* [BDX:DiagnosticLog] Update the server such that it supports multiple downloads in parallel

* [darwin-framework-tool] Address post-landing comments of #31638

[CI] Add some tests for bdx download with darwin-framework-tool

* Use `include-what-you-use` on lib/core (#32046)

* A first pass at running IWYU with some manual fixes

* Refert platform file changes

* Move one header up due to self-review

* Move self-header to top of file

* Another pass this time with -Xiwyu flags

* Start adding a IWYU mapping so we need less manual fixes

* Fix command line

* Update iwyu.imp

* Remove forward decl

* Fix for compile

* Fixes to compile locally ... several things could be cleaned

* One more cleanup, linux all-clusters compiles at least

---------

Co-authored-by: Andrei Litvin <[email protected]>

* DM XMLs: 1.3 0.7 recirculation ballot (#31980)

* DM XML: Scrape from 1.3 0.7 recrirculation ballot

* Manual fixes for aliased clusters (pending 1.2.4 fix in scraper)

* Manual fix for base device type

This broke again when I re-levelled the section headers. Will
fix in spec.

* Update API maturity where missing on 1.3 clusters (#32101)

- API maturity was not set properly on some clusters
- API maturity is being updated to provisional for new clusters

Fixes #32099

Testing done:
- Non functional change

* [IM] Remove EmberAfStatus from src/app/clusters (#32055)

* Remove EmberAfStatus from src/app/clusters

* fix ci

* fix specs compliance

* remove using Status from headers

* fix comments

* Remove using Status from headers

* fix comments

* fix ci

* fix door lock

* Skip binary files when checking for code patterns in the lint test. (#32102)

* [NXP][K32W] k32w1 sdk 2.12.6 updates & k32w0 small fixes (#31924)

* [common] Remove k32w1 device_platform, use nxp instead

Signed-off-by: Andrei Menzopol <[email protected]>
Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Build, OTA, Diagnostic changes

Signed-off-by: Doru Gucea <[email protected]>
Signed-off-by: Marius Tache <[email protected]>
Signed-off-by: Andrei Menzopol <[email protected]>

* [K32W1] Rename SNT files to ELEMU

* [K32W] Add OPENTHREAD_PLATFORM_CORE_CONFIG_FILE define

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Fix MBEDTLS build flags conflict between Matter vs. OpenThread

Matter uses a multithread flavor of MBEDTLS while OpenThread uses a
single thread flavor. This triggers a dangerous situation where
Matter, OpenThread and MBEDTLS don't agree on the size of various
data structures exchanged through the interface which later leads to
memory access violations.

This update fixes the build configuration so that OpenThread also
uses the multithread flavor of MBEDTLS.

Signed-off-by: Marian Chereji <[email protected]>

* [NXP] Update ot-nxp commit-id

Signed-off-by: Andrei Menzopol <[email protected]>

* [K32W0] Add necessary check for env variable

When computing the path for the signing script, the existence of
env variable NXP_K32W0_SDK_ROOT should be checked first to avoid
issues.

Signed-off-by: marius-alex-tache <[email protected]>

* [K32W1] Remove ResetWatermarks empty implementation

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Set rotating device id unique id length to max by default

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Fix an issue with __wrap_realloc

Current memory manager is MML, which has realloc support.
Removed old function that was relevant only in FreeRTOS
memory manager (heap4/5) context.

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Accomodate low power API update

PWR_AllowDeviceToSleep/PWR_DisallowDeviceToSleep API reintroduced in SDK.
power.c removed from ot-nxp.

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Clear keys from counter area when factory resetting

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Use MML API for heap memory consumption statistics

WTRMRK feature of the Software Diagnostic Cluster will be implemented
once the memory manager will implement the needed API.

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Remove duplicated code in crypto PAL

P256Keypair members were moved into protected scope, so
derived classes (P256KeypairSSS) can access these members.

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Call PLATFORM_InitTimerManager before PLATFORM_InitBLE since this function won't be initializing the timer manager anymore

* [K32W1] Post events from ISR correctly

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] MML realloc should be protected from task switching

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Add initial FactoryDataProviderImpl

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Update certification declaration in apps

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Update README files in apps

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Add DAC private key convert declaration

TBD

Signed-off-by: Marius Tache <[email protected]>

* [k32w1] Fix usage of deprecated factory data provider fields

Signed-off-by: marius-alex-tache <[email protected]>

* [COMMON] Add dac_key_use_sss_blob option

dac_key_use_sss_blob can be used to select which data
the private key area stores: plaintext/encrypted private key
or an SSS exported blob.

The option is False by default.

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Add SSS API usage

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Add chip_convert_dac_private_key option

chip_convert_dac_private_key can be used to enable one-time-only
conversion of the DAC private key to an SSS encrypted blob.

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Add jlink conversion script example

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Update readme to point to docs guide

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Remove unused mbedtls modules

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Factory data section should only be reserved in factory data context

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Add destructor to free SSS object context

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Add verbose logging for conversion steps

Signed-off-by: Marius Tache <[email protected]>

* [K32W1] Restore NVM sector number

 The underlying issue, for which the increase
 in NVM sectors was a workaround, was solved.

Signed-off-by: Andrei Menzopol <[email protected]>

* [K32W1] Add BLE ResetController function

Signed-off-by: Andrei Menzopol <[email protected]>

* [K32W1] Allocate OT buffers from SMU2

When using use_smu2_dynamic=true, OpenThread buffers
 will be allocated from a 13KB SMU2 region after a successful
 commissioning process until a factory reset is done.

 * Add SMU2 namespace in SMU2Manager.h/.cpp
 * Add build changes
 * Add allocator changes
 * Add necessary OpenThread config defines
 * Add gn parameter/defines for each SMU2 usecase

Signed-off-by: Andrei Menzopol <[email protected]>

* [K32W1] Offload SHA256 operations to S200
 * Offload simple sha256, simple hmac sha256,
   update/finish sha256, update/finish hmac sha256
   from Matter and OT.
 * Implement solution for long sha256 that uses
   context save/export/restore mechanism.
   This solution saves the intermediate data on heap
   and computes the hash on demand (by calling GetDigest).
 * Put changes under define/gn parameter use_hw_sha256
   as they increase timings (due to hardware
   accelerator initialization time) and use a significant
   amount of heap.

Signed-off-by: Andrei Menzopol <[email protected]>

* [K32W1] Simplify HW DRBG/TRNG usage

S200 TRNG is already used though otPlatEntropyGet from OT.

Simplify Matter and OT DRBG usage of HW TRNG by not using
mbedtls entropy.

Signed-off-by: Andrei Menzopol <[email protected]>

* [K32W1] Offload AES operations to S200
 * Offload AES-CCM from Matter.
 * Offload AES-ECB from OT.
 * Use software AES-CCM when Additional authentical
   data len is zero.
 * Put changes under define/gn parameter use_hw_aes
   as they increase timings (due to hardware
   accelerator initialization time).

Signed-off-by: Andrei Menzopol <[email protected]>

* [K32W1] Fix duplicated flag

Signed-off-by: Marius Tache <[email protected]>

* [COMMON] Add pw RPC support

The pw RPC integration should be usable by all NXP platforms
that support SerialManager, since the pw_sys_io backend uses
streamer_nxp.cpp for serial communication.

A scope is defined in pw_rpc_server.gni to be used by all apps
by forwarding the variables in the application executable scope:
   forward_variables_from(pw_rpc_server, "*")

Logging and RPC communication share the same serial port. Logging
should be inspected in chip-console, which manages the HDLC channels.

Signed-off-by: Marius Tache <[email protected]>

* [COMMON] Update streamer to read RX data ASAP

Moved reading the RX FIFO inside the actual interrupt handler,
to avoid time penalty when notifying the consumer task (RPC/App CLI).
The data is instead stored in a cache buffer and read once the task
is unblocked through notifying by the …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants