调用AF_DataRequest发送数据,会在AF_DATA_CONFIRM_CMD中得到该次调用的状态值,其中调用AF_DataRequest的Tx options参数为AF_ACK_REQUEST.
测试得到的afDataConfirm->hdr.status的值有以下值:
0x00(ZSuccess),
0x01(ZFailure),
0xcd(ZNwkNoRoute),
0xb7(ZApsNoAck),
0x1a(MAC_NO_RESOURCES),
0xe1(ZMacChannelAccessFailure),
0xe9(ZMacNoACK)
请问有哪些情况会导致返回状态值0x01(ZFailure)?
Viki Shi:
是否是多次发送以后出现该错误?可能是内存不够了
YiKai Chen:
会导致AF_DATA_CONFIRM_CMD的状态值为0x01的狀況有很多,你可以搜尋一下源碼內會回覆ZFailure的部份
zhimin xie:
回复 YiKai Chen:
这部分应该是没有源代码的,我是想知道具体是什么导致的ZFailure
zhimin xie:
回复 Viki Shi:
程序有做了下限制,最多允许有4次AF_DataRequest调用,但是还是偶尔出现状态值为0x01(ZFailure)
#define INT_HEAP_LEN(3072 + 200)
zhimin xie:
回复 Viki Shi:
在申请不到内存时,会打印消息,试验了下,内存没申请失败也还是会出现AF_DATA_CONFIRM_CMD的状态值为0x01