已经第三次在交流群里面看到有人问ACK的问题了,其实我之前也不知道,有次群里面有人偶然提到,然后我就去看了一下,顿时发现自己看书多么的不仔细。明明都已经看过好几遍的结构体,还是没记住,不过那次之后就一直没忘了就是。
afStatus_t AF_DataRequest(afAddrType_t *dstAddr, //目的地址指针
endPointDesc_t *srcEP, //发送节点的端点描述符指针
uint16cID, //ClusID 簇ID号
uint16len, //发送数据的长度
uint8*buf, //指向存放发送数据的缓冲区指针
uint8*transID,//传输序列号,该序列号随着信息的发送而增加
uint8 options, //发送选项
uint8 radius //最大传输半径(发送的跳数)
)
修改ACK验证,重要的还是 uint8 options, //发送选项 这个参数,它有以下几个值。
#define AF_FRAGMENTED 0x01
#defineAF_ACK_REQUEST 0x10 //要求APS应答,这是应用层的应答,只在直接发送(单播)时使用。
#defineAF_DISCV_ROUTE 0x20 //总要包含这个选项
#defineAF_EN_SECURITY
0x40
#defineAF_SKIP_ROUTING 0x80 //设置这个选项将导致设备跳过路由而直接发送消息。终点设备将不向其父亲发送消息。在直接发送(单播)和广播消息时很好用。
如果需要关闭ACK,直接用AF_DISCV_ROUTE 就可以了
结构体代码直接复制http://blog.sina.com.cn/s/blog_6184e67b01018xzv.html的,我也懒得敲了