This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2652R: When end-device receives NWK-Leave command with Rejoin-flag-Enabled, BDB_Reporting will become crazy

Part Number: CC2652R
Other Parts Discussed in Thread: SIMPLELINK-CC13X2-26X2-SDK

I have try to send NWK-Leave command with Rejoin-flag to my end-device. It leaves its current parent node, and rejoin to a new parent.

But after it rejoin success, its BDB Reporting become much more faster, and in ZCL-Report-Command packet, the reporting attribute appear for twice in same packet.

NWK Key: 3C AA CD 62 66 0F 2A CD 3C 50 66 55 60 FB DD 6B

bdb reporting issue.zip

  • Hey Aries,

    I did not encounter a similar issue with the thermostat & temperature sensor example applications, nor when using sample application with Temperature Sensor and Thermostat Device Types.  But when asked to Leave, the ZED rejoined the same ZC parent.  Can you please clarify what is required to recreate the behavior?

    Regards,
    Ryan

  • I found this issue on SDK-5.10.

    ZED will rejoin any valid parent every where after receives Leave-rejoin command, but its reporting packet become crazy.

  • you can try to send ZDO-MGMT-Leave-Req command with rejoin-flag "TRUE" to ZED.

  • I used SIMPLELINK-CC13X2-26X2-SDK v5.10 and sent a Zstackapi_ZdoMgmtLeaveReq with options.rejoin = TRUE, but did not experience the situation you've described.

    Regards,
    Ryan

  • 1, The ZED should has any attribute to be send by BDB-Reporting. And the maxReportInt and minReportInt must be valid.

    2, The reporting-attribute will be reported when ZDE is normally working, both attribute changed and period timeout.

  • I am using a ZED exactly as you've described.  Please evaluate the out-of-box thermostat/temperature sensor examples and let me know what changes are necessary in order to make the problem occur.

    Regards,
    Ryan

  • I have done this. And I have given the sniffer file.

    上报异常2.zip

    Tow same attributes are contain in one packet

  • When I send Rejoin-Leave to ZED for 4 times, 5 same attributes appear in one packet.

    异常.zip

  • Hi Aries,

    I was able to observe this behavior as well, which differs from the original issue stated on this E2E post.  I noticed that the ZED temperature sensor will return to reporting only one attribute (i.e. no duplicates) once a reset is performed.  This issue appears to be resolved if SysCtrlSystemReset is added to the end of ZDO_ProcessMgmtLeaveReq, although I have not extensively tested this solution.  I will check the upcoming v5.20 release and notify the Software Development Team to get a formal workaround recommendation.

    Edit: This issue still exists in v5.20

    Regards,
    Ryan

  • If this issue happen and "reportableChange" will become invalid.  "Zstackapi_bdbRepChangedAttrValueReq" will send reporting whatever attribute value is changed or not. So the reporting become faster.

    Duplicate attribute is loaded into same reporting packet by "bdb_RepConstructReportingData", if try to prevent "bdb_RepConstructReportingData" when rejoin, this issue can be fixed

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //bdb_RepConstructReportingData can be execute only once, luoyiming 2021-07-08
    bool bdb_repConstructReporting = false;
    void bdb_RepConstructReportingData( void )
    {
    if( bdb_repConstructReporting == true )
    {
    return;
    }
    // bdb_RepConstructReportingData can be execute only once, luoyiming 2021-07-08
    bdb_repConstructReporting = true;
    //Don't accept anymore default attribute configurations entries
    bdb_reportingAcceptDefaultConfs = BDBREPORTING_FALSE;
    //Construct the attr cfg records
    bdb_RepInitAttrCfgRecords( );
    //Construct the endpoint-cluster array
    bdb_repAttrBuildClusterEndPointArrayBasedOnConfRecordsArray( );
    //Delete reporting configuration array, it's saved in NV
    bdb_repAttrCfgRecordsArrayFreeAll( );
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • I see your point, ZDApp_LeaveReset -> bdb_resetStateMachine will reset bdb_initialization to zero and thus bdb_StartCommissioning will repeat bdb_RepConstructReportingData even though it has already done so after a power cycle.

    Regards,
    Ryan