微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > z-stack组播如何实现?z-stack组播组地址问题

z-stack组播如何实现?z-stack组播组地址问题

时间:10-02 整理:3721RD 点击:

    以前使用z-stack协议栈一直使用点播和广播方式。这两个方式没有问题。

现在刚接触z-stack协议栈组播。看了一下《z-stack Developer's Guids.pdf》和《z-stack API.pdf》两个文档。在文档中介绍设备属于哪个组需要使用aps_AddGroup()函数注册。

我按照第一个pdf中的样例将我的终端节点注册到组ID为0x0002的组中。然后我在协调器中使用AF_DataRequest函数发送一个字符串。发送的地址配置如下:

    my_DstAddr.addrMode       = (afAddrMode_t)AddrGroup;   // 无线发送的源地址
    my_DstAddr.endPoint       = GENERICAPP_ENDPOINT;       // 设置端口号
    my_DstAddr.addr.shortAddr = 0x0002;                    // 无线发送的目的地址

按我的理解。协调器发送的方式为组播发送。发送的地址是0x0002,而我的终端几点也将自己注册到了0x0002的组中。那么节点应该能和协调器广播发送数据一样接收到数据。

问题是!

我的节点根本没有接收到数据。然后我怀疑协调器没有把字符串发送出去。然后我在协调器的代码中打了个断点调试。发现AF_DataRequest函数返回成功,也就是数据发送出去。接着我用sniffer抓了一下数据包,却发现:

在网络层payload上看这个成功发出去的帧type居然是(cmd)命令帧。可是我明明是在APS层发送的字符串。

请问:我怎么设置能实现组播发送呢?是不是配置错了?

以上的问题我解决了。

是我的疏忽。我没有将协调器注册进0x0002的组播组。也就是将上面描述的代码在协调器的APS层任务初始化中再注册一边。

这个问题是解决了。可是我还是不明白。协调器既然没有注册到组播组中,那协调器应该发送失败或者直接发出去。为什么还要同步路由器呢?

这一帧数据具体是什么意思呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top