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.

CC1352R: How to increase delay between Data Request repeats?

Part Number: CC1352R
Other Parts Discussed in Thread: Z-STACK, SYSCONFIG

How to increase the delay between Data Requests if ACK is not received?

The delay is about 70-75 ms.

Is it possible to increase the delay? What parameter does it?

  • Please add more information. The question adds context, are you using your own protocol, one of  the stack etc? 

  • Actually yes, it is own protocol. The question is not about the exact time of the delay.

    Let's talk about it in context of the Z-Stack. The behavior would be the same. So, for example if we have ZED and ZC connected and then we turn off the ZC, then ZED will send Data Request and if it doesn't get ACK from the ZC (because ZC is off), ZED will send a few repeating Data Requests.

    So the questions are:

    1. How could we change the period between repeating Data Requests? How make it slower?

    2. What parameter does define the number of repeating Data Requests? How many times will ZED send Data Request? (I see 12 times)

  • Hey Alex,

    Using Z-Stack as an example:

    1. Retransmit delays are determined by nwk_adjustDelay and can be modified as such.

    2. Retries are configured in SysConfig -> Z-Stack -> Advanced -> Packet Sending, where MAC Frame Retries (ZMAC_MAX_FRAME_RETRIES) is the maximum number of MAC frame transmission attempts allowed (i.e. same MAC sequence number) and NWK Data Retries (NWK_MAX_DATA_RETRIES) is the number of attempts looking for the next hop address of a message (it will increment the MAC sequence number when trying again).  So a packet will attempt ZMAC_MAX_FRAME_RETRIES + 1 times before incrementing the MAC sequence number and trying again up to NWK_MAX_DATA_RETRIES times.  The formula is thus (ZMAC_MAX_FRAME_RETRIES +1 )x(NWK_MAX_DATA_RETRIES + 1), and for the default values this comes out to (3+1)x(2+1) which equals 12.

    Regards,
    Ryan

  • Thank you very much, it is very useful information!

    I also have another question.

    In the mac_cfg.c

    {offsetof(macPib_t, maxFrameTotalWaitTime), sizeof(uint16), 0x00, 0xFF},           /* MAC_MAX_FRAME_RESPONSE_TIME */

    means that the max value of the parameter is 255.

    But in the same file the structure "const macPib_t macPibDefaults {..}"

    is initialized with parameter: MAC_DEFAULT_FRAME_WAIT_TIME,                /* maxFrameTotalWaitTime */

    that has default value 8000 in the mac_api.h

    #define MAC_DEFAULT_FRAME_WAIT_TIME             8000    /* default maxFrameTotalWaitTime for 50kbps and 5kbps */

    But since the max value is 0xFF (255), the value 8000 will not work and cut down to 255.

    Did I understand it right? Is it a bug?

  • It's the same with eBeaconOrderNBPAN/MAC_EBEACON_ORDER_NBPAN, both bytes of the uint16 are filled with 0xFF so the max value is 65535 (0xFFFF).  The max value is mainly purposed for uint8 anyways.  You can find a description of the symbol calculations in this E2E post.

    Regards,
    Ryan

  • What about the parameter

    {offsetof(macPib_t, transactionPersistenceTime), sizeof(uint16), 0, 0},            /* MAC_TRANSACTION_PERSISTENCE_TIME */

    the default value is 1000

    Does 0,0 mean that there is no limit?

  • That means they are not checked, as explained in the comments above macPibTbl

    /* PIB access and min/max table.  min/max of 0/0 means not checked; if min/max are
     * equal, element is read-only
     */
    const macPibTbl_t macPibTbl[] =
    {

    Regards,
    Ryan