谈谈这个函数
1,AF_DataRequest()的参数options设置的各个取值有什么特点和要求
#define AF_PREPROCESS 0x04 // Will force APS to callback to preprocess before calling NWK layer
#define AF_LIMIT_CONCENTRATOR 0x08
#define AF_ACK_REQUEST 0x10
#define AF_DISCV_ROUTE 0x20 // This option is no longer used, and will be taken out later
#define AF_EN_SECURITY 0x40
#define AF_SKIP_ROUTING 0x80
2,ack流程
一般数据的发送是由AF_DataRequest来完成的。AF_DataRequest 函数的调用会触发afDataConfirm(...)函数,数据的发送结果也由afDataConfirm(...)函数返回.
当数据到了接收方的MAC层,对方会回复一个MAC ACK,然后发送方在收到这个MAC ACK以后,会从底层发送一个AF_DATA_CONFIRM_CMD到应用层。 当数据到了接受放的应用层,则会回复一个APS ACK。MAC ACK是默认常开的,而APS ACK需要使能AF_ACK_REQUEST
3,探究配置细节
当调用AF_DataRequest()函数的option中并没有使能AF_ACK_REQUEST时,表明只需要MAC层的ACK,那么此时不会再有AF_DATA_CONFIRM_CMD事件。 只有当option中使能了AF_ACK_REQUEST时,才会有AF_DATA_CONFIRM_CMD事件返回
这些api文档不是都有讲吗,zb学习思路,仿真+抓包
无他
|