关于CC2530的若干疑问
TI的工程师,你们好!前段时间我买了一套CC2530 zigbee开发板来学习,在看Z_Stack协议栈的时候我有如下一些疑问,恳请你能帮帮我“解惑”。
1、 在Z_Stack中如何使用 路由记录命令 ,即如何设置才能把数据包在通过网络时所采取的路由记录在命令负载中,并发给目标设备。或者至少知道该数据包所经过的跳数?
2、 在接收到的数据包中 RSSI 值是指 源节点到目的节点的RSSI值 还是 上一个传输该数据包的节点到目前节点之间的RSSI 值? 我们在利用不带定位引擎的 zigbee 单片机(如 CC2530 )进行定位时如果接收到的数据包是经过多跳路由转发过来的话如何利用其中的RSSI值进行定位?
3、 Z_Stack 协议栈里面所带的那些工程(比如 SampleApp )一般所默认采用的网络结构是星形、网形还是树形的呢? 一般的工程默认的是采用 信标结构 还是 非信标结构 呢? 如果是 信标结构 的话如何控制网络中的所有节点在同一时间内做同一件应用层定义的事情呢?
4、 我在 GenericApp 实验当中找不到 zb_AllowBind() 这个函数,既然协调器都没有允许绑定,那么 协调器 和 路由器/终端节点 之间是如何建立绑定的呢?
5、 在按键回调函数中有如下的程序:
OnBoard_KeyCallback ( uint8 keys, uint8 state )
shift = (OnboardKeyIntEnable == HAL_KEY_INTERRUPT_ENABLE) ? false : ((keys & HAL_KEY_SW_6) ? true : false);
OnBoard_SendKeys( keys, shift )// 函数原型为 OnBoard_SendKeys( byte keys, byte state )
osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr ); // 函数原型为 osal_msg_send( uint8 destination_task, uint8 *msg_ptr )
osal_set_event( destination_task, SYS_EVENT_MSG );
在GenericApp_ProcessEvent中队该消息进行处理,如下:
GenericApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
然后就是GenericApp_HandleKeys的具体实现,但是整个过程当中我不是很明白其中参数 state(即 shift)的用途。能否帮忙解析一下呢?
你好,首先建议你与开发板的供应商取得联系,因为外面的供应商很多,我们无法判断有没有进行改动。
1, 在应用层获取不到这些信息,你只能从底层源于中得到。Z-stack实现会比较麻烦
2. 是转发节点的信号强度, 你可能从应用层加用户数据实现
3.一般默认的都是mesh网络,不支持信标的结构
4.binding有direct binding 和 indirect两种,很多底层代码是库封装,可能会找不到原型。
5. 那是一个特殊功能按键,如果不用的话可以忽略。