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?
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.
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
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