3.0.2协议栈
1.MAC ACK默认是启用的,从哪里可以看到是启用的?重试的次数是哪个参数设定的?
2.APS ACK怎么启用,AF_DataRequest 的options 里如何启用啊?下面的options 里启用了吗?
#if defined ( INTER_PAN )
if ( StubAPS_InterPan( destAddr->panId, destAddr->endPoint ) )
{
options = AF_TX_OPTIONS_NONE;
}
else
#endif
{
options = zclGetClusterOption( srcEP, clusterID );
// The cluster might not have been defined to use security but if this message
// is in response to another message that was using APS security this message
// will be sent with APS security
if ( !( options & AF_EN_SECURITY ) )
{
afIncomingMSGPacket_t *origPkt = zcl_getRawAFMsg();
if ( ( origPkt != NULL ) && ( origPkt->SecurityUse == TRUE ) )
{
options |= AF_EN_SECURITY;
}
}
}
3.APSC_ACK_WAIT_DURATION_POLLED
这个参数对于睡眠设备来说重发间隔是多长时间?非睡眠设备重发间隔是多长时间?
下面的描述没看明白,3000是什么意思?
/* This number is used by polled devices, since the spec'd formula
* doesn't work for sleeping end devices. For non-polled devices,
* a formula is used. Value is in 2 milliseconds periods
*/
-DAPSC_ACK_WAIT_DURATION_POLLED=3000
4.hold的话,只是针对睡眠设备,非睡眠设备是不是也会hold?
5.hold的时长是7秒,最大hold的消息个数在哪设置呢?
/* Default indirect message holding timeout value:
* 1-65535 (0 -> 65536) X CNT_RTG_TIMER X RTG_TIMER_INTERVAL
*/
-DNWK_INDIRECT_MSG_TIMEOUT=7
YiKai Chen:
1. maxFrameRetries inside macpibdefauls in mac_pib.c
2. 參考 sunmaysky.blogspot.com/…/how-to-check-aps-ack-in-ti-z-stack.html
3. 沒收到APS ACK時要等多久作polling
4. RX ALWAYS ON设备/ZR/ZC不会hold
5. 調整下面參數
// in nwk_globals.c
// doubling the size of all the buffers:// Maximums for the data buffer queue
#define NWK_MAX_DATABUFS_WAITING16 //8// Waiting to be sent to MAC
#define NWK_MAX_DATABUFS_SCHEDULED10 //5// Timed messages to be sent
#define NWK_MAX_DATABUFS_CONFIRMED10 //5// Held after MAC confirms
#define NWK_MAX_DATABUFS_TOTAL24 //12// Total number of buffers
Viki Shi:
1、#define MAC_MAX_FRAME_RETRIES0x59/* The maximum number of retries allowed after a transmission failure */mac_api.c
2、AF_ACK_REQUEST开启APS ACK
3、以2ms为单位
4、非睡眠设备可以直接发送
5、这个发过了,见:e2echina.ti.com/…/189986
user5367314:
回复 YiKai Chen:
APSC_ACK_WAIT_DURATION_POLLED
例如终端1是allways on终端2是low power
假如由于信号不好,协调器给终端1发送的时候没有收到APS ACK,会间隔多久再次尝试发送?2ms吗?
协调器给终端2发送的时候没有收到APS ACK,会间隔多久再次尝试发送?3000ms吗?
下面的描述没看明白,3000是什么意思?
/* This number is used by polled devices, since the spec'd formula
* doesn't work for sleeping end devices. For non-polled devices,
* a formula is used. Value is in 2 milliseconds periods
*/
-DAPSC_ACK_WAIT_DURATION_POLLED=3000
YiKai Chen:
回复 user5367314:
PSC_ACK_WAIT_DURATION_POLLED 只作用於polling ZED、你從ZC發message 出來就和PSC_ACK_WAIT_DURATION_POLLED 沒有什麼關聯
user5367314:
回复 YiKai Chen:
APS ACK大概是个什么流程啊?没太明白
发送的时候使能AF_ACK_REQUEST如下
options |= AF_ACK_REQUEST;
status = AF_DataRequest( destAddr, epDesc, clusterID, msgLen, msgBuf,&APS_Counter, options, zcl_radius );
如果对方收到了,发送方怎么知道?发送方会收到AF_DATA_CONFIRM_CMD?
那我怎么知道有没有发送成功呢?以及重发是怎么重发的?
YiKai Chen:
回复 user5367314:
去看一下
user5367314:
回复 YiKai Chen:
打不开啊?有别的方法可以看吗?复制后回复给我?
YiKai Chen:
回复 user5367314:
試試用VPN去連
user5367314:
回复 YiKai Chen:
3.0.2协议栈里CC2538的串口使用,有没有参考的例程提供下?
YiKai Chen:
回复 user5367314:
看看ZNP例程
TI中文支持网
