1. 解决方法:
这个问题可以在应用层加超时机制和重传解决。
2. 根本原因猜想:
AF_DataRequest只是把数据包打包后到达MAC层的Queue等待发送,
802.15.4中有一个原语purge,这个原语的作用对象是协调器,作用是删除发送Queue中的一个消息,
所以可能由于某种原因这个原语被使用了。
3. 测试思路建议:
purge接口在 mac_api.h 中描述如下:
/**************************************************************************************************
* @fn MAC_McpsPurgeReq
*
* @brief This function purges and discards a data request from the
* MAC data queue. When the operation is complete the MAC sends
* a MAC_MCPS_PURGE_CNF.
*
* input parameters
*
* @param msduHandle - The application-defined handle value
*
* output parameters
*
* None.
*
* @return None.
**************************************************************************************************
*/
extern void MAC_McpsPurgeReq(uint8 msduHandle);
从描述中可以看到这个原语有confirm,所以可以在CNF回掉函数中进行测试打印。
4. 如果有进行测试希望可以分享结果哈,谢谢!