We have a working Zigbee router application and need to support to transmit larger packets which will require adding fragmentation. How can we enable fragmentation? Is there any documentation on this?
I'm guessing I need to change APS_MAX_WINDOW_SIZE from 1 to a larger value. Anything else?
Hello, I’m dealing with this exact same scenario! I am trying to send a 120-byte message to my coordinator.
At first, I only set the flags: dstEpInfo.txOptions |= (APS_TX_OPT_ACK_TX | APS_TX_OPT_FRAG_PERMITTED); but the transmission still failed.
I finally got it working, but only after I changed my APS_MAX_WINDOW_SIZE setting to 2.
Does anyone know why modifying the window size was the magic fix for this? I want to make sure I understand the underlying APS logic so I don't run into memory or routing issues down the road.
This parameter APS_MAX_WINDOW_SIZE controls how many data blocks are sent before an ACK is needed, otherwise the fragment sending will fail.
From what you're describing, it seems like the coordinator only sends an ACK after receiving 2 blocks. You can check if the APS_MAX_WINDOW_SIZE on the coordinator side is 2.
It would be great if you could provide a packet capture.