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.

CC2340R5: Is there an API to modify the rejoin timeout in ZBOSS?

Part Number: CC2340R5

Tool/software:

I am looking for a way to modify the rejoin timeout for end device in ZBOSS, i.e. how long does the end device keep trying to send poll request after a coordinator has gone. I found a macro ZB_NWK_REJOIN_TIMEOUT in zb_config_common.h, but I am not sure if I can change this macro directly to modify the timeout, because I am under an expression that the macro was already preprocessed when the static library was built, and changing the macro in the header file does not take effect to the function inside the static library. Is this the case in CC2340 Zigbee project?

If that statement is true I guess an API is needed to modify the rejoin timeout if needed. Is there such an API?

Best regards,

Shuyang

  • Hi Shuyang,

    I will check with RnD and get back to you.

    Meanwhile, in your tests, do you see something like this?

    1. End Device loses parent (parent could be ZB coordinator OR other ZB router)
    2. End Device detects event of parent is lost (determined by ZB_ZDO_PARENT_LINK_FAILURE_CNT)
    3. End Device searches for new parent
    4. Step 3 timeout after ZB_NWK_REJOIN_TIMEOUT 

    Thanks,
    Toby

  • I got update from RnD.

    The retry will be according to the application logic.

    Please see the following code snippets from 9.10 F3 SDK onoff_switch example (on_off_switch.c):

          case ZB_BDB_SIGNAL_DEVICE_FIRST_START:
            Log_printf(LogModule_Zigbee_App, Log_WARNING, "Device can not find any network on start, so try to perform network steering");
            ZB_SCHEDULE_APP_ALARM(restart_commissioning, 0, 10 * ZB_TIME_ONE_SECOND);
            break; /* ZB_BDB_SIGNAL_DEVICE_FIRST_START */

          case ZB_BDB_SIGNAL_STEERING:
            Log_printf(LogModule_Zigbee_App, Log_WARNING, "Steering failed, retrying again in 10 seconds");
            ZB_SCHEDULE_APP_ALARM(restart_commissioning, 0, 10 * ZB_TIME_ONE_SECOND);
            break; /* ZB_BDB_SIGNAL_STEERING */
    

    void restart_commissioning(zb_uint8_t param)
    {
      ZVUNUSED(param);
      bdb_start_top_level_commissioning(ZB_BDB_NETWORK_STEERING);
    }