查看: 6437|回复: 3

Fragmentation

[复制链接]

1

主题

0

回帖

19

积分

积分
19
发表于 2024-10-11 14:35:17 | 显示全部楼层 |阅读模式 来自 美国
Hello,


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?

Thank you.

30

主题

372

回帖

1188

积分

积分
1188
发表于 2024-10-11 15:49:11 | 显示全部楼层 来自 上海
Hi,
This parameter APS_MAX_WINDOW_SIZE does not need to be modified.
When sending a message, simply set its corresponding bit to 1, like as
epInfo_t dstEpInfo;
memset((u8 *)&dstEpInfo, 0, sizeof(epInfo_t ));

dstEpInfo.txOptions |= APS_TX_OPT_FRAG_PERMITTED;

...

af_dataSend(...);



3

主题

3

回帖

117

积分

积分
117
发表于 2026-6-13 19:05:22 | 显示全部楼层 来自 美国
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.

30

主题

372

回帖

1188

积分

积分
1188
发表于 2026-8-7 10:12:56 | 显示全部楼层 来自 上海
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.

本版积分规则

关注公众号
隐私政策|Telink forum

相关侵权、举报、投诉及建议等,请发 E-mail:forum@telink-semi.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|沪ICP备17008231号-1 |沪公网安备31011502403548号

在本版发帖返回顶部
公告×