在CC2430上使终端设备依据特定的PANID入网
引 言ZigBee是一种崭新的,专注于低功耗、低成本、低复杂度、低速率的近程无线网络通信技术,也是目前嵌入式应用的一个大热点。近年来,ZigBee无线数据网络在我国应用越来越多。在很多地方取代了局域网。实际应用于楼宇监控系统、无线方式集中抄表以及矿山救援系统和家电控制等等。文中谈及在我国有较多客户使用的TI公司的产品CC2430。1 问题的提出在一片不大的区域内,有数个信道相同的协调器,但是PAN ID不同。当设置了终端的PAN ID后,终端只加入和其上存储的PAN ID相同的协调器。目前本无线组网项目使用的是TI公司的CC2430,其上的ZigBee协议栈为TI的Z-STACK 1.4.3-1.2.1。由于TI公司的策略是终端比较随机的加入其中的一个协调器,即使其上已经定义了特定的PAN ID。从少量的实验来看,CC2430作为终端优先加入PAN ID号比较小的协调器。用户一般无法让终端选择,并且终端扫描网络和请求入网的过程都没有给出源代码。这样便给这类实际应用带来不便。2 问题分析关于CC2430/2431网络的形成,可以参考《ZigBee技,术实践教程》一书。该书为北京航空航天大学出版社出版,高守玮和吴灿阳主编。路由器和终端试图加入一个网络时,首先调用NLME_NetworkDiscoveryRequest()函数。该函数将进行网络扫描,其结果由函数ZDO_NetworkDiscoveryConfirmCB()返回。而发现网络存在后,将调用NLME_OrphanJoinRequest()函数试图加入网络。其结果由函数ZDO_JoinIndicationCB()返回。遗憾的是,网络扫描和请求入网两个函数都没有源代码,造成无法修改的困境。客观地说,在TI公司的ZSTACK上修改某些参数常常是比较困难的。只好从提供了源代码的ZDO_NetworkDiscoveryConfirmCB()函数和ZDO_JoinIndicationCB()函数来想办法。检测ZDO_NetworkDiscoveryConfirmCB()的代码,发现其最终调用ZDO_FinishProcessingMgmtNwkDiscReq()函数。而在该函数中,有对路由器的特殊处理。条件编译变量RTR_NWK代表有路由器功能的设备,虽然协调器可以兼做路由器,但执行这段代码的只可能是普通的路由器。#if defined(RTR_NWK)……#endif……中的代码检索返回的网络信息描述结构,查看有没有和存储的PAN ID相同的协调器。观察ZDObject.c文件中的ZDO_StartDevice()函数,当启动设备模式为“再继续”时,即startMode==MODE_RESUME,终端设备以孤点方式请求加入网络。再继续模式实际上是标识非协调器设备处于网络扫描完成,准备请求入网的状态。分析到此,可以想出办法了。首先定义一个检查是否有PAN ID相同的协调器的全局变量bool变量p_matching。初始化时设其为FALSE。
- 最火10月14日台州塑料PVC市场参考价格皮带电热元件气缸体水床垫分析仪Frc
- 最火玖龙再降价白板纸降100牛卡瓦楞降150杀蚤驱虫崇州机顶盒汽车把手电脑硬件Frc
- 最火1月16日涂料成品网上行情最新快报外圆磨床蒸汽轮机打蜡机饲料机械折射计Frc
- 最火世界各国对PET啤酒瓶的开发阆中铁钉首饰盒空心铆钉办公设备Frc
- 最火协同应用闯三关纯平电视鞋扣渗碳炉石材栏杆仿木砖Frc
- 最火徐工机械欲入股江西稀土深入参与产业整合光固机纯水器镇流器分体空调旋片泵Frc
- 最火临沂市12301旅游服务热线呼叫中心近日塑料油墨X型展架植绒纸干油泵健身器Frc
- 最火蒸球预处理动态挤压法生产化机浆游戏摇杆朝阳弹簧管水泥钉连接件Frc
- 最火越南威雄环保包装材料厂新平工业区竣工电路板蹲便器双龙配件汽车窗帘版权转让Frc
- 最火俄罗斯成功发射两颗通信卫星北京海绵床垫货车布料杆气动马达Frc