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

Add OCW verifier, pass params between fabric bridge & admin #34209

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

samadDotDev
Copy link
Contributor

This introduces an optional PAKE passcode verifier arg in the commissioning window opener to support the pass-through of this parameter to the device via admin from the OCW request received on the bridge (fabric-bridge -RPC-> fabric-admin --> device). The RPC contract update between fabric admin and fabric bridge app to pass the OCW params and use of the new function arg is done in a separate commit.

Note that the OCW command which is being proxied here doesn't contain the setup pin code to compute the verifier with included iterations count.

Fixes #33763

Copy link

github-actions bot commented Jul 5, 2024

PR #34209: Size comparison from 82b1e1b to 1672d94

Full report (85 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, mbed, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section 82b1e1b 1672d94 change % change
bl602 lighting-app bl602 FLASH 1271026 1271026 0 0.0
RAM 95328 95328 0 0.0
bl602+mfd FLASH 1285284 1285284 0 0.0
RAM 95472 95472 0 0.0
bl602+rpc FLASH 1309986 1309986 0 0.0
RAM 103752 103752 0 0.0
bl702 lighting-app bl702 FLASH 1091924 1091924 0 0.0
RAM 15265 15265 0 0.0
bl702+mfd FLASH 1102618 1102618 0 0.0
RAM 15417 15417 0 0.0
bl702+rpc FLASH 1181734 1181734 0 0.0
RAM 24285 24285 0 0.0
bl706-eth FLASH 875196 875196 0 0.0
RAM 27376 27376 0 0.0
bl706-wifi FLASH 1127270 1127270 0 0.0
RAM 14709 14709 0 0.0
bl702l lighting-app bl702l FLASH 1078806 1078806 0 0.0
RAM 21836 21836 0 0.0
bl702l+mfd FLASH 1090068 1090068 0 0.0
RAM 21996 21996 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 797084 797084 0 0.0
RAM 106636 106636 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 816000 816000 0 0.0
RAM 116956 116956 0 0.0
lock-mtd LP_EM_CC1354P10_6 FLASH 807452 807452 0 0.0
RAM 111236 111236 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 760308 760308 0 0.0
RAM 105336 105336 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 746036 746036 0 0.0
RAM 105576 105576 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 605706 605706 0 0.0
RAM 204508 204508 0 0.0
lock CC3235SF_LAUNCHXL FLASH 650734 650734 0 0.0
RAM 204780 204780 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 666225 666225 0 0.0
RAM 75100 75100 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 686077 686077 0 0.0
RAM 77732 77732 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 686077 686077 0 0.0
RAM 77732 77732 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 643013 643013 0 0.0
RAM 70168 70168 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 608745 608745 0 0.0
RAM 70804 70804 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 628389 628389 0 0.0
RAM 73348 73348 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 628389 628389 0 0.0
RAM 73348 73348 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 624273 624273 0 0.0
RAM 73820 73820 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 643989 643989 0 0.0
RAM 76364 76364 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 643989 643989 0 0.0
RAM 76364 76364 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 592845 592845 0 0.0
RAM 67788 67788 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 612689 612689 0 0.0
RAM 70428 70428 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 612689 612689 0 0.0
RAM 70428 70428 0 0.0
efr32 lighting-app BRD4187C FLASH 923344 923344 0 0.0
RAM 134984 134984 0 0.0
lock-app BRD4338a FLASH 739812 739812 0 0.0
RAM 204000 204000 0 0.0
window-app BRD4187C FLASH 1012048 1012048 0 0.0
RAM 129620 129620 0 0.0
esp32 all-clusters-app c3devkit DRAM 88332 88332 0 0.0
FLASH 1467674 1467674 0 0.0
IRAM 75570 75570 0 0.0
m5stack DRAM 114868 114868 0 0.0
FLASH 1536675 1536675 0 0.0
IRAM 125403 125403 0 0.0
linux air-purifier-app debug unknown 4592 4592 0 0.0
FLASH 2529008 2529008 0 0.0
RAM 125072 125072 0 0.0
all-clusters-app debug unknown 5368 5368 0 0.0
FLASH 5582574 5582574 0 0.0
RAM 488144 488144 0 0.0
all-clusters-minimal-app debug unknown 5288 5288 0 0.0
FLASH 5052856 5052856 0 0.0
RAM 232992 232992 0 0.0
bridge-app debug unknown 5256 5256 0 0.0
FLASH 4477208 4477208 0 0.0
RAM 212744 212744 0 0.0
chip-tool debug unknown 5728 5728 0 0.0
FLASH 11713207 11713591 384 0.0
RAM 543386 543386 0 0.0
chip-tool-ipv6only arm64 unknown 20008 20008 0 0.0
FLASH 10829612 10829964 352 0.0
RAM 592192 592192 0 0.0
fabric-admin debug unknown 5616 5616 0 0.0
FLASH 10796615 10797719 1104 0.0
RAM 540226 540226 0 0.0
fabric-bridge-app debug unknown 4528 4528 0 0.0
FLASH 4242760 4244408 1648 0.0
RAM 198808 198808 0 0.0
lighting-app debug+rpc+ui unknown 5936 5936 0 0.0
FLASH 5372450 5372450 0 0.0
RAM 221600 221600 0 0.0
lock-app debug unknown 5192 5192 0 0.0
FLASH 4540776 4540776 0 0.0
RAM 200240 200240 0 0.0
ota-provider-app debug unknown 4576 4576 0 0.0
FLASH 4196616 4196616 0 0.0
RAM 194520 194520 0 0.0
ota-requestor-app debug unknown 4512 4512 0 0.0
FLASH 4322152 4322152 0 0.0
RAM 199176 199176 0 0.0
shell debug unknown 4112 4112 0 0.0
FLASH 2795981 2795981 0 0.0
RAM 150504 150504 0 0.0
thermostat-no-ble arm64 unknown 9144 9144 0 0.0
FLASH 4167132 4167132 0 0.0
RAM 235640 235640 0 0.0
tv-app debug unknown 5472 5472 0 0.0
FLASH 5604696 5604696 0 0.0
RAM 341760 341760 0 0.0
tv-casting-app debug unknown 5096 5096 0 0.0
FLASH 9882974 9882974 0 0.0
RAM 400816 400816 0 0.0
mbed lock-app-release cy8cproto_062_4343w FLASH 1502292 1502292 0 0.0
RAM 226640 226640 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 881364 881364 0 0.0
RAM 139573 139573 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 951880 951880 0 0.0
RAM 138001 138001 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 826896 826896 0 0.0
RAM 138487 138487 0 0.0
nxp contact k32w0+release FLASH 575916 575916 0 0.0
RAM 70004 70004 0 0.0
k32w1+release FLASH 591144 591144 0 0.0
RAM 74056 74056 0 0.0
light k32w0+release FLASH 610016 610016 0 0.0
RAM 69480 69480 0 0.0
k32w1+release FLASH 674728 674728 0 0.0
RAM 82816 82816 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1613700 1613700 0 0.0
RAM 207148 207148 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1534468 1534468 0 0.0
RAM 204036 204036 0 0.0
light cy8ckit_062s2_43012 FLASH 1460972 1460972 0 0.0
RAM 197308 197308 0 0.0
lock cy8ckit_062s2_43012 FLASH 1462828 1462828 0 0.0
RAM 224380 224380 0 0.0
qpg lighting-app qpg6105+debug FLASH 651052 651052 0 0.0
RAM 104560 104560 0 0.0
lock-app qpg6105+debug FLASH 611168 611168 0 0.0
RAM 99228 99228 0 0.0
stm32 light STM32WB5MM-DK FLASH 472440 472440 0 0.0
RAM 141660 141660 0 0.0
telink air-quality-sensor-app tlsr9528a_retention FLASH 632486 632486 0 0.0
RAM 50424 50424 0 0.0
all-clusters-app tlsr9118bdk40d FLASH 657232 657232 0 0.0
RAM 145760 145760 0 0.0
all-clusters-minimal-app tlsr9528a FLASH 777548 777548 0 0.0
RAM 110580 110580 0 0.0
bridge-app tlsr9258a FLASH 675472 675472 0 0.0
RAM 95200 95200 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 634070 634070 0 0.0
RAM 50468 50468 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a FLASH 719860 719860 0 0.0
RAM 77044 77044 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 612288 612288 0 0.0
RAM 142000 142000 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 800074 800074 0 0.0
RAM 100404 100404 0 0.0
lock-app-dfu tlsr9528a FLASH 665634 665634 0 0.0
RAM 69756 69756 0 0.0
ota-requestor-app tlsr9258a FLASH 694802 694802 0 0.0
RAM 94924 94924 0 0.0
pump-app tlsr9518adk80d FLASH 616334 616334 0 0.0
RAM 56848 56848 0 0.0
pump-controller-app tlsr9518adk80d FLASH 606718 606718 0 0.0
RAM 56648 56648 0 0.0
shell tlsr9518adk80d FLASH 466150 466150 0 0.0
RAM 72460 72460 0 0.0
smoke_co_alarm-app tlsr9528a_retention FLASH 640684 640684 0 0.0
RAM 52096 52096 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d FLASH 650544 650544 0 0.0
RAM 60284 60284 0 0.0
thermostat tlsr9518adk80d FLASH 625608 625608 0 0.0
RAM 56980 56980 0 0.0
window-covering tlsr9118bdk40d FLASH 518834 518834 0 0.0
RAM 97696 97696 0 0.0
tizen all-clusters-app arm unknown 1584 1584 0 0.0
FLASH 1633868 1633868 0 0.0
RAM 46004 46004 0 0.0
chip-tool-ubsan arm unknown 2384 2384 0 0.0
FLASH 16153886 16154446 560 0.0
RAM 7097212 7097524 312 0.0

Copy link
Contributor

@andy31415 andy31415 left a comment

Choose a reason for hiding this comment

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

Requesting changes on making arguments to functions readable and argument count reasonable.

CHIP_ERROR tlvError = DataModel::Decode(handlerContext.mPayload, commandData);
SuccessOrExit(tlvError);

commissioningTimeout = commandData.commissioningTimeout;
Copy link
Contributor

Choose a reason for hiding this comment

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

why do you separate declaration of variables from assignment? I assume because of successOrExit... can we avoid that pattern?

Do we need separate variables? why not use commandData.discriminator and such directly and not have separate variables?

Copy link
Contributor Author

@samadDotDev samadDotDev Jul 5, 2024

Choose a reason for hiding this comment

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

Fixed in d29e4fc

@samadDotDev
Copy link
Contributor Author

@andy31415 I intentionally held off on doing the argument refactor / params class introduction since that's already done by @yufengwangca in #33799. However, since that PR is blocked due to other reasons and this is requested here, I can pull in those changes here if that's okay.

Additionally, I can go either way with breaking/maintaining ABI compatibility. Most of the callers of this function are currently passing around NullOptional and unnamed args so it may be useful for everyone to just use the new and only function with params class.

@@ -104,8 +106,8 @@ class CommissioningWindowOpener
*/
CHIP_ERROR OpenCommissioningWindow(NodeId deviceId, System::Clock::Seconds16 timeout, uint32_t iteration,
uint16_t discriminator, Optional<uint32_t> setupPIN, Optional<ByteSpan> salt,
Callback::Callback<OnOpenCommissioningWindow> * callback, SetupPayload & payload,
bool readVIDPIDAttributes = false);
Optional<ByteSpan> verifier, Callback::Callback<OnOpenCommissioningWindow> * callback,
Copy link
Contributor

Choose a reason for hiding this comment

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

This makes no sense. There is never a situation in which you would both pass in the PIN and pass in the verifier, so why do we have a method that lets you pass both?

It sounds like we need to have two separate methods, and the impl gets the verifier (provided or generated) and then calls a common impl method.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

With the params refactor, here's the new shape of the two functions I'm thinking of, let me know your feedback

    struct CommissioningWindowParams
    {
        // The device Id of the node.
        NodeId deviceId;
        // The duration for which the commissioning window should remain open.
        System::Clock::Seconds16 timeout;
        // The PAKE iteration count associated with the PAKE Passcode ID and ephemeral PAKE passcode verifier to be used for this
        // commissioning.
        uint32_t iteration;
        // The long discriminator for the DNS-SD advertisement.
        uint16_t discriminator;
        // The salt to use, or NullOptional to use a randomly-generated one. If provided, must be at least
        // kSpake2p_Min_PBKDF_Salt_Length bytes and at most kSpake2p_Max_PBKDF_Salt_Length bytes in length.
        Optional<ByteSpan> salt = NullOptional;
        // Should the API internally read VID and PID from the device while opening the commissioning window.  If this argument is
        // `true`, the API will read VID and PID from the device and include them in the setup payload passed to the callback.
        bool readVIDPIDAttributes = false;
        Callback::Callback<OnOpenCommissioningWindow> *
            callback; // The function to be called on success or failure of opening the commissioning window.
    };

    /**
     * @brief
     *   Try to look up the device attached to our controller with the given
     *   node id and ask it to re-enter commissioning mode with a PASE verifier
     *   derived from the given information and the given discriminator. The
     *   device will exit commissioning mode after a successful commissioning,
     *   or after the given `timeout` time.
     *
     * @param[in] params        The common parameters required to open the commissioning window.
     * @param[in] setupPIN      The setup PIN to use, or NullOptional to use a randomly-generated one.
     * @param[out] payload      The setup payload, not including the VID/PID bits,
     *                          even if those were asked for, that is generated
     *                          based on the passed-in information.  The payload
     *                          provided to the callback function, unlike this
     *                          out parameter, will include the VID/PID bits if
     *                          readVIDPIDAttributes is true.
     */
    CHIP_ERROR OpenCommissioningWindow(const CommissioningWindowParams & params, Optional<uint32_t> setupPIN,
                                       SetupPayload & payload);

    /**
     * @brief
     *   Try to look up the device attached to our controller with the given
     *   node id and ask it to re-enter commissioning mode with a PASE verifier
     *   derived from the given information and the given discriminator. The
     *   device will exit commissioning mode after a successful commissioning,
     *   or after the given `timeout` time.
     *
     * @param[in] params        The common parameters required to open the commissioning window.
     * @param[in] verifier      The PAKE passcode verifier to use, or NullOptional to generate verifier based on randomly generated
     *                          PIN and other parameters.
     * @param[out] payload      The setup payload, not including the VID/PID bits,
     *                          even if those were asked for, that is generated
     *                          based on the passed-in information.  The payload
     *                          provided to the callback function, unlike this
     *                          out parameter, will include the VID/PID bits if
     *                          readVIDPIDAttributes is true.
     */
    CHIP_ERROR OpenCommissioningWindow(const CommissioningWindowParams & params, Optional<ByteSpan> verifier,
                                       SetupPayload & payload);

Copy link
Contributor

Choose a reason for hiding this comment

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

I think there are a few issues. First, optional for salt (which means "use a random one" if not provided) does not make sense with a verifier, because the salt needs to match the verifier.

I think there are two ways of presenting the "things verifier will be derived from":

  1. Iteration count, optional passcode (mis-named PIN in this API), optional salt.
  2. Iteration count, salt, verifier that corresponds to the provided iteration count and salt and some not-provided passcode.

In terms of modeling this in the API, seems like the cleanest thing are two separate object classes to encapsulate those two separate pieces of information, right? Whether then we do some sort of static dispatch via overloads or have them inherit from a class that has a pure virtual method that outputs the iteration count, salt, and verifier is something to think about.

Second issue: there is no way to create a SetupPayload from a verifier: the whole point of a SetupPayload is to know the passcode so you can do PASE. So the API version that takes a verifier can't have a SetupPayload outparam.

Third issue: The version of the API with a verifier can't pass a SetupPayload to the callback function, for exactly the same reasons.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for detailing these. Indeed I came across the second issue during the refactor and that led to digging in for the third one which seems to be even more problematic.

For the first one, I'm leaning towards just taking the salt out of common params class, and making it part of first API (with passcode) as optional, and second one (with verifier) as required.

Second: the setup payload doesn't need to be an outparam for the second API, and the current consumer of it (fabric-admin) just ignores that anyway so we can safely remove this.

Third: This is where I'm torn between either introducing two different callback functions or just making the setup payload optional in the existing one. Essentially either

typedef void (*OnOpenCommissioningWindowWithPasscode)(void * context, NodeId deviceId, CHIP_ERROR status, SetupPayload payload);
typedef void (*OnOpenCommissioningWindowWithVerifier)(void * context, NodeId deviceId, CHIP_ERROR status);
typedef void (*OnOpenBasicCommissioningWindow)(void * context, NodeId deviceId, CHIP_ERROR status);

(we could also keep the default OnOpenCommissioningWindowWithPasscode as OnOpenCommissioningWindow to keep the diff small)

or

typedef void (*OnOpenCommissioningWindow)(void * context, NodeId deviceId, CHIP_ERROR status, Optional<SetupPayload payload>);
typedef void (*OnOpenBasicCommissioningWindow)(void * context, NodeId deviceId, CHIP_ERROR status);

Callback function can then also be taken out of common params depending on the solution opted for (3)

Copy link
Contributor

Choose a reason for hiding this comment

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

At that point, it seems like we might just want to have two different params classes (which perhaps have a common superclass for the shared bits if desired). Having different callback function types for the two cases makes the most sense to me.

Keeping the existing API working on top of the new one seems pretty easy and would reduce the amount of code churn SDK clients have to have.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Addressed these changes in 5d4ce20, LMK if there's anything else missing or if it should be done differently.

Copy link

github-actions bot commented Jul 6, 2024

PR #34209: Size comparison from 5a634f5 to d29e4fc

Full report (85 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, mbed, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section 5a634f5 d29e4fc change % change
bl602 lighting-app bl602 FLASH 1271026 1271026 0 0.0
RAM 95328 95328 0 0.0
bl602+mfd FLASH 1285284 1285284 0 0.0
RAM 95472 95472 0 0.0
bl602+rpc FLASH 1309986 1309986 0 0.0
RAM 103752 103752 0 0.0
bl702 lighting-app bl702 FLASH 1091924 1091924 0 0.0
RAM 15265 15265 0 0.0
bl702+mfd FLASH 1102618 1102618 0 0.0
RAM 15417 15417 0 0.0
bl702+rpc FLASH 1181734 1181734 0 0.0
RAM 24285 24285 0 0.0
bl706-eth FLASH 875196 875196 0 0.0
RAM 27376 27376 0 0.0
bl706-wifi FLASH 1127270 1127270 0 0.0
RAM 14709 14709 0 0.0
bl702l lighting-app bl702l FLASH 1078806 1078806 0 0.0
RAM 21836 21836 0 0.0
bl702l+mfd FLASH 1090068 1090068 0 0.0
RAM 21996 21996 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 797972 797972 0 0.0
RAM 109180 109180 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 816000 816000 0 0.0
RAM 116956 116956 0 0.0
lock-mtd LP_EM_CC1354P10_6 FLASH 807452 807452 0 0.0
RAM 111236 111236 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 760308 760308 0 0.0
RAM 105336 105336 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 746036 746036 0 0.0
RAM 105576 105576 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 605706 605706 0 0.0
RAM 204508 204508 0 0.0
lock CC3235SF_LAUNCHXL FLASH 650734 650734 0 0.0
RAM 204780 204780 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 667113 667113 0 0.0
RAM 77644 77644 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 686957 686957 0 0.0
RAM 80276 80276 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 686957 686957 0 0.0
RAM 80276 80276 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 643901 643901 0 0.0
RAM 72712 72712 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 608745 608745 0 0.0
RAM 70804 70804 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 628389 628389 0 0.0
RAM 73348 73348 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 628389 628389 0 0.0
RAM 73348 73348 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 624273 624273 0 0.0
RAM 73820 73820 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 643989 643989 0 0.0
RAM 76364 76364 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 643989 643989 0 0.0
RAM 76364 76364 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 592845 592845 0 0.0
RAM 67788 67788 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 612689 612689 0 0.0
RAM 70428 70428 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 612689 612689 0 0.0
RAM 70428 70428 0 0.0
efr32 lighting-app BRD4187C FLASH 924208 924208 0 0.0
RAM 137516 137516 0 0.0
lock-app BRD4338a FLASH 733068 733068 0 0.0
RAM 207996 207996 0 0.0
window-app BRD4187C FLASH 1012016 1012016 0 0.0
RAM 129620 129620 0 0.0
esp32 all-clusters-app c3devkit DRAM 90860 90860 0 0.0
FLASH 1468736 1468736 0 0.0
IRAM 75570 75570 0 0.0
m5stack DRAM 117412 117412 0 0.0
FLASH 1537631 1537631 0 0.0
IRAM 125403 125403 0 0.0
linux air-purifier-app debug unknown 4592 4592 0 0.0
FLASH 2529008 2529008 0 0.0
RAM 125072 125072 0 0.0
all-clusters-app debug unknown 5368 5368 0 0.0
FLASH 5588686 5588686 0 0.0
RAM 490864 490864 0 0.0
all-clusters-minimal-app debug unknown 5288 5288 0 0.0
FLASH 5060696 5060696 0 0.0
RAM 235488 235488 0 0.0
bridge-app debug unknown 5256 5256 0 0.0
FLASH 4477208 4477208 0 0.0
RAM 212744 212744 0 0.0
chip-tool debug unknown 5728 5728 0 0.0
FLASH 11720407 11720807 400 0.0
RAM 543610 543610 0 0.0
chip-tool-ipv6only arm64 unknown 20008 20008 0 0.0
FLASH 10835356 10835628 272 0.0
RAM 592416 592416 0 0.0
fabric-admin debug unknown 5616 5616 0 0.0
FLASH 10804871 10807223 2352 0.0
RAM 540450 540450 0 0.0
fabric-bridge-app debug unknown 4528 4528 0 0.0
FLASH 4242760 4244488 1728 0.0
RAM 198808 198808 0 0.0
lighting-app debug+rpc+ui unknown 5936 5936 0 0.0
FLASH 5381570 5381570 0 0.0
RAM 224096 224096 0 0.0
lock-app debug unknown 5192 5192 0 0.0
FLASH 4540776 4540776 0 0.0
RAM 200240 200240 0 0.0
ota-provider-app debug unknown 4576 4576 0 0.0
FLASH 4196616 4196616 0 0.0
RAM 194520 194520 0 0.0
ota-requestor-app debug unknown 4512 4512 0 0.0
FLASH 4322152 4322152 0 0.0
RAM 199176 199176 0 0.0
shell debug unknown 4112 4112 0 0.0
FLASH 2803773 2803773 0 0.0
RAM 153000 153000 0 0.0
thermostat-no-ble arm64 unknown 9144 9144 0 0.0
FLASH 4167132 4167132 0 0.0
RAM 235640 235640 0 0.0
tv-app debug unknown 5472 5472 0 0.0
FLASH 5604696 5604696 0 0.0
RAM 341760 341760 0 0.0
tv-casting-app debug unknown 5096 5096 0 0.0
FLASH 9889950 9889950 0 0.0
RAM 400816 400816 0 0.0
mbed lock-app-release cy8cproto_062_4343w FLASH 1502292 1502292 0 0.0
RAM 226640 226640 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 882144 882144 0 0.0
RAM 142109 142109 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 952748 952748 0 0.0
RAM 140537 140537 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 827748 827748 0 0.0
RAM 141023 141023 0 0.0
nxp contact k32w0+release FLASH 575916 575916 0 0.0
RAM 70004 70004 0 0.0
k32w1+release FLASH 591144 591144 0 0.0
RAM 74056 74056 0 0.0
light k32w0+release FLASH 610016 610016 0 0.0
RAM 69480 69480 0 0.0
k32w1+release FLASH 674728 674728 0 0.0
RAM 82816 82816 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1614804 1614804 0 0.0
RAM 209692 209692 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1535700 1535700 0 0.0
RAM 206580 206580 0 0.0
light cy8ckit_062s2_43012 FLASH 1462348 1462348 0 0.0
RAM 199852 199852 0 0.0
lock cy8ckit_062s2_43012 FLASH 1462828 1462828 0 0.0
RAM 224380 224380 0 0.0
qpg lighting-app qpg6105+debug FLASH 651052 651052 0 0.0
RAM 104560 104560 0 0.0
lock-app qpg6105+debug FLASH 611168 611168 0 0.0
RAM 99228 99228 0 0.0
stm32 light STM32WB5MM-DK FLASH 473376 473376 0 0.0
RAM 144204 144204 0 0.0
telink air-quality-sensor-app tlsr9528a_retention FLASH 632484 632484 0 0.0
RAM 50424 50424 0 0.0
all-clusters-app tlsr9118bdk40d FLASH 658250 658250 0 0.0
RAM 148296 148296 0 0.0
all-clusters-minimal-app tlsr9528a FLASH 778648 778648 0 0.0
RAM 113116 113116 0 0.0
bridge-app tlsr9258a FLASH 675470 675470 0 0.0
RAM 95200 95200 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 634068 634068 0 0.0
RAM 50468 50468 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a FLASH 719858 719858 0 0.0
RAM 77044 77044 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 613438 613438 0 0.0
RAM 144532 144532 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 801224 801224 0 0.0
RAM 102936 102936 0 0.0
lock-app-dfu tlsr9528a FLASH 665632 665632 0 0.0
RAM 69756 69756 0 0.0
ota-requestor-app tlsr9258a FLASH 694800 694800 0 0.0
RAM 94924 94924 0 0.0
pump-app tlsr9518adk80d FLASH 616332 616332 0 0.0
RAM 56848 56848 0 0.0
pump-controller-app tlsr9518adk80d FLASH 606716 606716 0 0.0
RAM 56648 56648 0 0.0
shell tlsr9518adk80d FLASH 466150 466150 0 0.0
RAM 72460 72460 0 0.0
smoke_co_alarm-app tlsr9528a_retention FLASH 640682 640682 0 0.0
RAM 52096 52096 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d FLASH 650542 650542 0 0.0
RAM 60284 60284 0 0.0
thermostat tlsr9518adk80d FLASH 625606 625606 0 0.0
RAM 56980 56980 0 0.0
window-covering tlsr9118bdk40d FLASH 518832 518832 0 0.0
RAM 97696 97696 0 0.0
tizen all-clusters-app arm unknown 1584 1584 0 0.0
FLASH 1637576 1637576 0 0.0
RAM 48540 48540 0 0.0
chip-tool-ubsan arm unknown 2384 2384 0 0.0
FLASH 16168382 16171766 3384 0.0
RAM 7103620 7105668 2048 0.0

@@ -32,13 +32,24 @@ constexpr uint16_t kFabricAdminServerPort = 33001;
*/
CHIP_ERROR InitRpcClient(uint16_t rpcServerPort);

struct CommissioningWindowParams
Copy link
Contributor

Choose a reason for hiding this comment

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

please make this a builder pattern. It should read code like:

OCW(
CommisioningWindowParams()
   .SetNodeId(1234)
   .SetDiscriminator(123)
   .SetIterations(100)
   )
  • make sure all members have initializers (if you do not know or they are required, set to 0 just in case)
  • make this fluent builders to make it readable and not require pre-declaration
  • It seems that @bzbarsky-apple mentioned some things are not supposed to work together. Add tests for that in the setters (probably VerifyOrDie is fine to avoid mis-use ... but at a minimum class coments describing use should exist here)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added fluent builder pattern, initialized some of the member variables, and added some commentary in 16bf72c, LMK if we need to go further in this route.

@@ -47,6 +48,61 @@ class CommissioningWindowOpener
mDeviceConnectionFailure(&OnDeviceConnectionFailureCallback, this)
{}

struct CommissioningWindowCommonParams
{
// The device Id of the node.
Copy link
Contributor

Choose a reason for hiding this comment

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

This should not be called "deviceId" if it's a nodeId. Please call this nodeId.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Remnants from previous args, updated in the new parameters class here: 16bf72c

* out parameter, will include the VID/PID bits if
* readVIDPIDAttributes is true.
*/
CHIP_ERROR OpenCommissioningWindow(const CommissioningWindowPasscodeParams & params, SetupPayload & payload);
Copy link
Contributor

Choose a reason for hiding this comment

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

Why have a passcode version? The verifier version beloew is sufficient.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is to move off the previous function with growing number of args (for the passcode version) as requested in #34209 (comment). The existing API is there only to reduce the external SDK client churn (could potentially mark it as deprecated in some form, or note for consumers to move off that?)

* @param[in] params The parameters required to open an enhanced commissioning window
* with the provided PAKE passcode verifier.
*/
CHIP_ERROR OpenCommissioningWindow(const CommissioningWindowVerifierParams & params);
Copy link
Contributor

Choose a reason for hiding this comment

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

Please add tests that cover the new methods.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added some tests for the new methods mostly focused on the args: 5a9ae85

Copy link

github-actions bot commented Jul 8, 2024

PR #34209: Size comparison from 5a634f5 to 16bf72c

Full report (85 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, mbed, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section 5a634f5 16bf72c change % change
bl602 lighting-app bl602 FLASH 1271026 1271026 0 0.0
RAM 95328 95328 0 0.0
bl602+mfd FLASH 1285284 1285284 0 0.0
RAM 95472 95472 0 0.0
bl602+rpc FLASH 1309986 1309986 0 0.0
RAM 103752 103752 0 0.0
bl702 lighting-app bl702 FLASH 1091924 1091924 0 0.0
RAM 15265 15265 0 0.0
bl702+mfd FLASH 1102618 1102618 0 0.0
RAM 15417 15417 0 0.0
bl702+rpc FLASH 1181734 1181734 0 0.0
RAM 24285 24285 0 0.0
bl706-eth FLASH 875196 875196 0 0.0
RAM 27376 27376 0 0.0
bl706-wifi FLASH 1127270 1127270 0 0.0
RAM 14709 14709 0 0.0
bl702l lighting-app bl702l FLASH 1078806 1078806 0 0.0
RAM 21836 21836 0 0.0
bl702l+mfd FLASH 1090068 1090068 0 0.0
RAM 21996 21996 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 797972 797972 0 0.0
RAM 109180 109180 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 816000 816000 0 0.0
RAM 116956 116956 0 0.0
lock-mtd LP_EM_CC1354P10_6 FLASH 807452 807452 0 0.0
RAM 111236 111236 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 760308 760308 0 0.0
RAM 105336 105336 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 746036 746036 0 0.0
RAM 105576 105576 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 605706 605706 0 0.0
RAM 204508 204508 0 0.0
lock CC3235SF_LAUNCHXL FLASH 650734 650734 0 0.0
RAM 204780 204780 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 667113 667113 0 0.0
RAM 77644 77644 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 686957 686957 0 0.0
RAM 80276 80276 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 686957 686957 0 0.0
RAM 80276 80276 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 643901 643901 0 0.0
RAM 72712 72712 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 608745 608745 0 0.0
RAM 70804 70804 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 628389 628389 0 0.0
RAM 73348 73348 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 628389 628389 0 0.0
RAM 73348 73348 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 624273 624273 0 0.0
RAM 73820 73820 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 643989 643989 0 0.0
RAM 76364 76364 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 643989 643989 0 0.0
RAM 76364 76364 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 592845 592845 0 0.0
RAM 67788 67788 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 612689 612689 0 0.0
RAM 70428 70428 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 612689 612689 0 0.0
RAM 70428 70428 0 0.0
efr32 lighting-app BRD4187C FLASH 924208 924208 0 0.0
RAM 137516 137516 0 0.0
lock-app BRD4338a FLASH 733068 733068 0 0.0
RAM 207996 207996 0 0.0
window-app BRD4187C FLASH 1012016 1012016 0 0.0
RAM 129620 129620 0 0.0
esp32 all-clusters-app c3devkit DRAM 90860 90860 0 0.0
FLASH 1468736 1468738 2 0.0
IRAM 75570 75570 0 0.0
m5stack DRAM 117412 117412 0 0.0
FLASH 1537631 1537631 0 0.0
IRAM 125403 125403 0 0.0
linux air-purifier-app debug unknown 4592 4592 0 0.0
FLASH 2529008 2529008 0 0.0
RAM 125072 125072 0 0.0
all-clusters-app debug unknown 5368 5368 0 0.0
FLASH 5588686 5588686 0 0.0
RAM 490864 490864 0 0.0
all-clusters-minimal-app debug unknown 5288 5288 0 0.0
FLASH 5060696 5060696 0 0.0
RAM 235488 235488 0 0.0
bridge-app debug unknown 5256 5256 0 0.0
FLASH 4477208 4477208 0 0.0
RAM 212744 212744 0 0.0
chip-tool debug unknown 5728 5728 0 0.0
FLASH 11720407 11721671 1264 0.0
RAM 543610 543610 0 0.0
chip-tool-ipv6only arm64 unknown 20008 20008 0 0.0
FLASH 10835356 10836540 1184 0.0
RAM 592416 592416 0 0.0
fabric-admin debug unknown 5616 5616 0 0.0
FLASH 10804871 10809559 4688 0.0
RAM 540450 540450 0 0.0
fabric-bridge-app debug unknown 4528 4528 0 0.0
FLASH 4242760 4245992 3232 0.1
RAM 198808 198808 0 0.0
lighting-app debug+rpc+ui unknown 5936 5936 0 0.0
FLASH 5381570 5381570 0 0.0
RAM 224096 224096 0 0.0
lock-app debug unknown 5192 5192 0 0.0
FLASH 4540776 4540776 0 0.0
RAM 200240 200240 0 0.0
ota-provider-app debug unknown 4576 4576 0 0.0
FLASH 4196616 4196616 0 0.0
RAM 194520 194520 0 0.0
ota-requestor-app debug unknown 4512 4512 0 0.0
FLASH 4322152 4322152 0 0.0
RAM 199176 199176 0 0.0
shell debug unknown 4112 4112 0 0.0
FLASH 2803773 2803773 0 0.0
RAM 153000 153000 0 0.0
thermostat-no-ble arm64 unknown 9144 9144 0 0.0
FLASH 4167132 4167132 0 0.0
RAM 235640 235640 0 0.0
tv-app debug unknown 5472 5472 0 0.0
FLASH 5604696 5604696 0 0.0
RAM 341760 341760 0 0.0
tv-casting-app debug unknown 5096 5096 0 0.0
FLASH 9889950 9889950 0 0.0
RAM 400816 400816 0 0.0
mbed lock-app-release cy8cproto_062_4343w FLASH 1502292 1502292 0 0.0
RAM 226640 226640 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 882144 882144 0 0.0
RAM 142109 142109 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 952748 952748 0 0.0
RAM 140537 140537 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 827748 827748 0 0.0
RAM 141023 141023 0 0.0
nxp contact k32w0+release FLASH 575916 575916 0 0.0
RAM 70004 70004 0 0.0
k32w1+release FLASH 591144 591144 0 0.0
RAM 74056 74056 0 0.0
light k32w0+release FLASH 610016 610016 0 0.0
RAM 69480 69480 0 0.0
k32w1+release FLASH 674728 674728 0 0.0
RAM 82816 82816 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1614804 1614804 0 0.0
RAM 209692 209692 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1535700 1535700 0 0.0
RAM 206580 206580 0 0.0
light cy8ckit_062s2_43012 FLASH 1462348 1462348 0 0.0
RAM 199852 199852 0 0.0
lock cy8ckit_062s2_43012 FLASH 1462828 1462828 0 0.0
RAM 224380 224380 0 0.0
qpg lighting-app qpg6105+debug FLASH 651052 651052 0 0.0
RAM 104560 104560 0 0.0
lock-app qpg6105+debug FLASH 611168 611168 0 0.0
RAM 99228 99228 0 0.0
stm32 light STM32WB5MM-DK FLASH 473376 473376 0 0.0
RAM 144204 144204 0 0.0
telink air-quality-sensor-app tlsr9528a_retention FLASH 632484 632484 0 0.0
RAM 50424 50424 0 0.0
all-clusters-app tlsr9118bdk40d FLASH 658250 658250 0 0.0
RAM 148296 148296 0 0.0
all-clusters-minimal-app tlsr9528a FLASH 778648 778648 0 0.0
RAM 113116 113116 0 0.0
bridge-app tlsr9258a FLASH 675470 675470 0 0.0
RAM 95200 95200 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 634068 634068 0 0.0
RAM 50468 50468 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a FLASH 719858 719858 0 0.0
RAM 77044 77044 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 613438 613438 0 0.0
RAM 144532 144532 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 801224 801224 0 0.0
RAM 102936 102936 0 0.0
lock-app-dfu tlsr9528a FLASH 665632 665632 0 0.0
RAM 69756 69756 0 0.0
ota-requestor-app tlsr9258a FLASH 694800 694800 0 0.0
RAM 94924 94924 0 0.0
pump-app tlsr9518adk80d FLASH 616332 616332 0 0.0
RAM 56848 56848 0 0.0
pump-controller-app tlsr9518adk80d FLASH 606716 606716 0 0.0
RAM 56648 56648 0 0.0
shell tlsr9518adk80d FLASH 466150 466150 0 0.0
RAM 72460 72460 0 0.0
smoke_co_alarm-app tlsr9528a_retention FLASH 640682 640682 0 0.0
RAM 52096 52096 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d FLASH 650542 650542 0 0.0
RAM 60284 60284 0 0.0
thermostat tlsr9518adk80d FLASH 625606 625606 0 0.0
RAM 56980 56980 0 0.0
window-covering tlsr9118bdk40d FLASH 518832 518832 0 0.0
RAM 97696 97696 0 0.0
tizen all-clusters-app arm unknown 1584 1584 0 0.0
FLASH 1637576 1637576 0 0.0
RAM 48540 48540 0 0.0
chip-tool-ubsan arm unknown 2384 2384 0 0.0
FLASH 16168382 16173350 4968 0.0
RAM 7103620 7106476 2856 0.0

Copy link

github-actions bot commented Jul 9, 2024

PR #34209: Size comparison from ecfa07a to 5a9ae85

Full report (47 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, mbed, nrfconnect, nxp, psoc6, qpg, stm32, tizen)
platform target config section ecfa07a 5a9ae85 change % change
bl602 lighting-app bl602 FLASH 1271226 1271226 0 0.0
RAM 95328 95328 0 0.0
bl602+mfd FLASH 1285484 1285484 0 0.0
RAM 95472 95472 0 0.0
bl602+rpc FLASH 1310186 1310186 0 0.0
RAM 103752 103752 0 0.0
bl702 lighting-app bl702 FLASH 1092064 1092064 0 0.0
RAM 15265 15265 0 0.0
bl702+mfd FLASH 1102758 1102758 0 0.0
RAM 15417 15417 0 0.0
bl702+rpc FLASH 1181874 1181874 0 0.0
RAM 24285 24285 0 0.0
bl706-eth FLASH 875396 875396 0 0.0
RAM 27376 27376 0 0.0
bl706-wifi FLASH 1127492 1127492 0 0.0
RAM 14709 14709 0 0.0
bl702l lighting-app bl702l FLASH 1078946 1078946 0 0.0
RAM 21836 21836 0 0.0
bl702l+mfd FLASH 1090208 1090208 0 0.0
RAM 21996 21996 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 798236 798236 0 0.0
RAM 109180 109180 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 816272 816272 0 0.0
RAM 116956 116956 0 0.0
lock-mtd LP_EM_CC1354P10_6 FLASH 807732 807732 0 0.0
RAM 111236 111236 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 760588 760588 0 0.0
RAM 105336 105336 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 746300 746300 0 0.0
RAM 105576 105576 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 605970 605970 0 0.0
RAM 204508 204508 0 0.0
lock CC3235SF_LAUNCHXL FLASH 651014 651014 0 0.0
RAM 204780 204780 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 667377 667377 0 0.0
RAM 77644 77644 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 687221 687221 0 0.0
RAM 80276 80276 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 687221 687221 0 0.0
RAM 80276 80276 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 644165 644165 0 0.0
RAM 72712 72712 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 609009 609009 0 0.0
RAM 70804 70804 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 628653 628653 0 0.0
RAM 73348 73348 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 628653 628653 0 0.0
RAM 73348 73348 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 624529 624529 0 0.0
RAM 73820 73820 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 644245 644245 0 0.0
RAM 76364 76364 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 644245 644245 0 0.0
RAM 76364 76364 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 593109 593109 0 0.0
RAM 67788 67788 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 612953 612953 0 0.0
RAM 70428 70428 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 612953 612953 0 0.0
RAM 70428 70428 0 0.0
mbed lock-app-release cy8cproto_062_4343w FLASH 1502420 1502420 0 0.0
RAM 226640 226640 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 882276 882276 0 0.0
RAM 142109 142109 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 952864 952864 0 0.0
RAM 140537 140537 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 827876 827876 0 0.0
RAM 141023 141023 0 0.0
nxp contact k32w0+release FLASH 576012 576012 0 0.0
RAM 70004 70004 0 0.0
k32w1+release FLASH 591280 591280 0 0.0
RAM 74056 74056 0 0.0
light k32w0+release FLASH 610128 610128 0 0.0
RAM 69480 69480 0 0.0
k32w1+release FLASH 674864 674864 0 0.0
RAM 82816 82816 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1615060 1615060 0 0.0
RAM 209692 209692 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1535972 1535972 0 0.0
RAM 206580 206580 0 0.0
light cy8ckit_062s2_43012 FLASH 1462612 1462612 0 0.0
RAM 199852 199852 0 0.0
lock cy8ckit_062s2_43012 FLASH 1463124 1463124 0 0.0
RAM 224380 224380 0 0.0
qpg lighting-app qpg6105+debug FLASH 651140 651140 0 0.0
RAM 104560 104560 0 0.0
lock-app qpg6105+debug FLASH 611256 611256 0 0.0
RAM 99228 99228 0 0.0
stm32 light STM32WB5MM-DK FLASH 473464 473464 0 0.0
RAM 144204 144204 0 0.0
tizen all-clusters-app arm unknown 1584 1584 0 0.0
FLASH 1638016 1638016 0 0.0
RAM 48540 48540 0 0.0
chip-tool-ubsan arm unknown 2384 2384 0 0.0
FLASH 16170894 16177522 6628 0.0
RAM 7104636 7108548 3912 0.1

Copy link

github-actions bot commented Jul 9, 2024

PR #34209: Size comparison from ecfa07a to b154a1b

Full report (85 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, mbed, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section ecfa07a b154a1b change % change
bl602 lighting-app bl602 FLASH 1271226 1271226 0 0.0
RAM 95328 95328 0 0.0
bl602+mfd FLASH 1285484 1285484 0 0.0
RAM 95472 95472 0 0.0
bl602+rpc FLASH 1310186 1310186 0 0.0
RAM 103752 103752 0 0.0
bl702 lighting-app bl702 FLASH 1092064 1092064 0 0.0
RAM 15265 15265 0 0.0
bl702+mfd FLASH 1102758 1102758 0 0.0
RAM 15417 15417 0 0.0
bl702+rpc FLASH 1181874 1181874 0 0.0
RAM 24285 24285 0 0.0
bl706-eth FLASH 875396 875396 0 0.0
RAM 27376 27376 0 0.0
bl706-wifi FLASH 1127492 1127492 0 0.0
RAM 14709 14709 0 0.0
bl702l lighting-app bl702l FLASH 1078946 1078946 0 0.0
RAM 21836 21836 0 0.0
bl702l+mfd FLASH 1090208 1090208 0 0.0
RAM 21996 21996 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 798236 798236 0 0.0
RAM 109180 109180 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 816272 816272 0 0.0
RAM 116956 116956 0 0.0
lock-mtd LP_EM_CC1354P10_6 FLASH 807732 807732 0 0.0
RAM 111236 111236 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 760588 760588 0 0.0
RAM 105336 105336 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 746300 746300 0 0.0
RAM 105576 105576 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 605970 605970 0 0.0
RAM 204508 204508 0 0.0
lock CC3235SF_LAUNCHXL FLASH 651014 651014 0 0.0
RAM 204780 204780 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 667377 667377 0 0.0
RAM 77644 77644 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 687221 687221 0 0.0
RAM 80276 80276 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 687221 687221 0 0.0
RAM 80276 80276 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 644165 644165 0 0.0
RAM 72712 72712 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 609009 609009 0 0.0
RAM 70804 70804 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 628653 628653 0 0.0
RAM 73348 73348 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 628653 628653 0 0.0
RAM 73348 73348 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 624529 624529 0 0.0
RAM 73820 73820 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 644245 644245 0 0.0
RAM 76364 76364 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 644245 644245 0 0.0
RAM 76364 76364 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 593109 593109 0 0.0
RAM 67788 67788 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 612953 612953 0 0.0
RAM 70428 70428 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 612953 612953 0 0.0
RAM 70428 70428 0 0.0
efr32 lighting-app BRD4187C FLASH 924336 924336 0 0.0
RAM 137516 137516 0 0.0
lock-app BRD4338a FLASH 733124 733116 -8 -0.0
RAM 207900 207900 0 0.0
window-app BRD4187C FLASH 1012180 1012180 0 0.0
RAM 129620 129620 0 0.0
esp32 all-clusters-app c3devkit DRAM 90860 90860 0 0.0
FLASH 1468876 1468876 0 0.0
IRAM 75570 75570 0 0.0
m5stack DRAM 117412 117412 0 0.0
FLASH 1537859 1537859 0 0.0
IRAM 125403 125403 0 0.0
linux air-purifier-app debug unknown 4592 4592 0 0.0
FLASH 2529504 2529504 0 0.0
RAM 125072 125072 0 0.0
all-clusters-app debug unknown 5368 5368 0 0.0
FLASH 5589310 5589310 0 0.0
RAM 490864 490864 0 0.0
all-clusters-minimal-app debug unknown 5288 5288 0 0.0
FLASH 5061232 5061232 0 0.0
RAM 235488 235488 0 0.0
bridge-app debug unknown 5256 5256 0 0.0
FLASH 4477824 4477824 0 0.0
RAM 212744 212744 0 0.0
chip-tool debug unknown 5728 5728 0 0.0
FLASH 11721383 11722871 1488 0.0
RAM 543610 543746 136 0.0
chip-tool-ipv6only arm64 unknown 20008 20016 8 0.0
FLASH 10836092 10837612 1520 0.0
RAM 592416 592552 136 0.0
fabric-admin debug unknown 5616 5616 0 0.0
FLASH 10805543 10810567 5024 0.0
RAM 540450 540594 144 0.0
fabric-bridge-app debug unknown 4528 4528 0 0.0
FLASH 4243376 4246624 3248 0.1
RAM 198808 198808 0 0.0
lighting-app debug+rpc+ui unknown 5936 5936 0 0.0
FLASH 5382210 5382210 0 0.0
RAM 224096 224096 0 0.0
lock-app debug unknown 5192 5192 0 0.0
FLASH 4541312 4541312 0 0.0
RAM 200240 200240 0 0.0
ota-provider-app debug unknown 4576 4576 0 0.0
FLASH 4197232 4197232 0 0.0
RAM 194520 194520 0 0.0
ota-requestor-app debug unknown 4512 4512 0 0.0
FLASH 4322768 4322768 0 0.0
RAM 199176 199176 0 0.0
shell debug unknown 4112 4112 0 0.0
FLASH 2804461 2804461 0 0.0
RAM 153000 153000 0 0.0
thermostat-no-ble arm64 unknown 9144 9144 0 0.0
FLASH 4167580 4167580 0 0.0
RAM 235640 235640 0 0.0
tv-app debug unknown 5472 5472 0 0.0
FLASH 5605504 5605824 320 0.0
RAM 341760 341888 128 0.0
tv-casting-app debug unknown 5096 5096 0 0.0
FLASH 9890878 9890878 0 0.0
RAM 400816 400816 0 0.0
mbed lock-app-release cy8cproto_062_4343w FLASH 1502420 1502420 0 0.0
RAM 226640 226640 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 882276 882276 0 0.0
RAM 142109 142109 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 952864 952864 0 0.0
RAM 140537 140537 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 827876 827876 0 0.0
RAM 141023 141023 0 0.0
nxp contact k32w0+release FLASH 576012 576012 0 0.0
RAM 70004 70004 0 0.0
k32w1+release FLASH 591280 591280 0 0.0
RAM 74056 74056 0 0.0
light k32w0+release FLASH 610128 610128 0 0.0
RAM 69480 69480 0 0.0
k32w1+release FLASH 674864 674864 0 0.0
RAM 82816 82816 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1615060 1615060 0 0.0
RAM 209692 209692 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1535972 1535972 0 0.0
RAM 206580 206580 0 0.0
light cy8ckit_062s2_43012 FLASH 1462612 1462612 0 0.0
RAM 199852 199852 0 0.0
lock cy8ckit_062s2_43012 FLASH 1463124 1463124 0 0.0
RAM 224380 224380 0 0.0
qpg lighting-app qpg6105+debug FLASH 651140 651140 0 0.0
RAM 104560 104560 0 0.0
lock-app qpg6105+debug FLASH 611256 611256 0 0.0
RAM 99228 99228 0 0.0
stm32 light STM32WB5MM-DK FLASH 473464 473464 0 0.0
RAM 144204 144204 0 0.0
telink air-quality-sensor-app tlsr9528a_retention FLASH 632600 632600 0 0.0
RAM 50424 50424 0 0.0
all-clusters-app tlsr9118bdk40d FLASH 658400 658400 0 0.0
RAM 148296 148296 0 0.0
all-clusters-minimal-app tlsr9528a FLASH 778766 778766 0 0.0
RAM 113116 113116 0 0.0
bridge-app tlsr9258a FLASH 675586 675586 0 0.0
RAM 95200 95200 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 634184 634184 0 0.0
RAM 50468 50468 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a FLASH 720058 720058 0 0.0
RAM 77044 77044 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 613588 613588 0 0.0
RAM 144532 144532 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 801340 801340 0 0.0
RAM 102936 102936 0 0.0
lock-app-dfu tlsr9528a FLASH 665750 665750 0 0.0
RAM 69756 69756 0 0.0
ota-requestor-app tlsr9258a FLASH 694916 694916 0 0.0
RAM 94924 94924 0 0.0
pump-app tlsr9518adk80d FLASH 616448 616448 0 0.0
RAM 56848 56848 0 0.0
pump-controller-app tlsr9518adk80d FLASH 606832 606832 0 0.0
RAM 56648 56648 0 0.0
shell tlsr9518adk80d FLASH 466316 466316 0 0.0
RAM 72460 72460 0 0.0
smoke_co_alarm-app tlsr9528a_retention FLASH 640802 640802 0 0.0
RAM 52096 52096 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d FLASH 650658 650658 0 0.0
RAM 60284 60284 0 0.0
thermostat tlsr9518adk80d FLASH 625722 625722 0 0.0
RAM 56980 56980 0 0.0
window-covering tlsr9118bdk40d FLASH 518982 518982 0 0.0
RAM 97696 97696 0 0.0
tizen all-clusters-app arm unknown 1584 1584 0 0.0
FLASH 1638016 1638016 0 0.0
RAM 48540 48540 0 0.0
chip-tool-ubsan arm unknown 2384 2384 0 0.0
FLASH 16170894 16177522 6628 0.0
RAM 7104636 7108548 3912 0.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: In Progress
Development

Successfully merging this pull request may close these issues.

[Feature] Using ECM instead of BCM for Fabric Sync
5 participants