TI论坛
直播中

李帅

8年用户 178经验值
私信 关注
[问答]

EasyLink_enableRxAddrFilter使用时增加地址长度返回错误状态

我想使用EasyLink_enableRxAddrFilter来过滤接收到的数据包,我想使用芯片8位IEEE MAC地址来作为过滤地址。
因此我使用一个uint8_t addrFilter[8]数组存放MAC地址,然后如下调用:
EasyLink_enableRxAddrFilter(addrFilter, 8, 1),发现返回错误状态:EasyLink_Status_Param_Error
然后调试跟踪,发现有个变量默认设置为1,
//Addr size for Filter and Tx/Rx operations
//Set default to 1 byte addr to work with SmartRF
//studio default settings
static uint8_t addrSize = 1;
请问一下,这里所说的smartRF studio defaultsettings也是1,如果用8字节地址作为过滤的话,是不是需要对应修改smartrf_settings.c文件呢?

回帖(9)

李帅

2020-3-27 08:59:33
说一下我自己的测试结果吧,
我设置一个node的发送地址为:8字节全0x00
collector的地址过滤数组为一个16字节数组:a[16],当然为了方便查看,实际定义的是一个结构体,里面放了两个8字节的一维数组,然后调用:EasyLink_enableRxAddrFilter((uint8_t *)(a), 8, 2);这样就设置了两个8字节的过滤地址。
如果直接这么调用,按帖子所说,会返回错误,需要同时修改EasyLink.c文件里面的addrSize,有两个地方将该变量赋值为1,同步改为8。
做如下测试:
当数组a[]前8字节或后8字节全为0时,collector可以接收node的发送数据;
当数组a[]前8直接为0XBB,后8字节为非0数据时,不能收到node的发送数据。
仅供参考。
举报

李维兴

2020-3-27 09:15:15
引用: dlkmad 发表于 2020-3-27 15:23
说一下我自己的测试结果吧,
我设置一个node的发送地址为:8字节全0x00
collector的地址过滤数组为一个16字节数组:a[16],当然为了方便查看,实际定义的是一个结构体,里面放了两个8字节的一维数组,然后调用:EasyLink_enableRxAddrFilter((uint8_t *)(a), 8, 2);这样就设置了两个8字节的过滤地址。

当数组a[]前8直接为0XBB,后8字节为非0数据时,其实是可以收到node的发送数据,只不过你需要在node的那边修改发送地址
举报

李帅

2020-3-27 09:27:10
hi,
Eggsy Pang,我是这么设置的,node的发送地址为依然为8字节全0, collector过滤地址a[]的前8字节为8个0XBB, 后8字节为8个0xAA,这样collector收不到node发送的数据。
按照你的意思是需要修改node的发送地址为其他数据?为什么我设置node的地址全为0时,collector是搜索不到数据的呢 ?
举报

李维兴

2020-3-27 09:47:02
引用: dlkmad 发表于 2020-3-27 15:51
hi,
Eggsy Pang,我是这么设置的,node的发送地址为依然为8字节全0, collector过滤地址a[]的前8字节为8个0XBB, 后8字节为8个0xAA,这样collector收不到node发送的数据。
按照你的意思是需要修改node的发送地址为其他数据?为什么我设置node的地址全为0时,collector是搜索不到数据的呢 ? ...

你把node的发送地改为collector的过滤地址,试试看
举报

更多回帖

发帖
×
20
完善资料,
赚取积分