您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > ZigBee学习之17—ZStackAPI解读5
#1楼主:【原创】ZigBee学习之17——ZStackAPI解读5文章发表于:2010-02-0710:43网络层(NWK)网络层为高层提供下面函数功能:·网络管理·地址管理·网络变量和效能函数除了管理功能外,NWK还提供数据服务,只是应用不能访问数据服务。应用需要通过AF数据接口AF_DataRequest()来发送数据。网络管理ZStatus_tNLME_NetworkDiscoveryRequest(uint32ScanChannels,byteScanDuration);用来请求网络层发现邻居路由器。在加入操作执行网络扫描前应该调用此函数。扫描确认(结果)将以回调函数ZDO_NetworkDiscoveryConfirmCB()返回。推荐用户使用ZDO_StartDevice()来代替此函数。(除非你清楚的知道网络加入过程)ScanChannels-执行发现的通道,2.4GHz条件下只能使用通道11-26(0x07FFF800)ScanDuration-新网络启动前,每个通道被其他网络扫描的时间BEACON_ORDER_15_MSEC015.36millisecondsBEACON_ORDER_30_MSEC130.72millisecondsBEACON_ORDER_60_MSEC261.44millisecondsBEACON_ORDER_120_MSEC3122.88millisecondsBEACON_ORDER_240_MSEC4245.76millisecondsBEACON_ORDER_480_MSEC5491.52millisecondsBEACON_ORDER_1_SECOND6983.04millisecondsBEACON_ORDER_2_SECONDS71966.08millisecondsBEACON_ORDER_4_SECONDS83932.16millisecondsBEACON_ORDER_7_5_SECONDS97864.32millisecondsBEACON_ORDER_15_SECONDS1015728.64millisecondsBEACON_ORDER_31_SECONDS1131457.28millisecondsBEACON_ORDER_1_MINUTE1262914.58millisecondsBEACON_ORDER_2_MINUTES13125829.12millisecondsBEACON_ORDER_4_MINUTES14251658.24millisecondsBEACON_ORDER_NO_BEACONS15NoBeaconstransmitted返回值:ZStatus_t-ZComDef.h中定义的状态值ZStatus_tNLME_NwkDiscReq2(NLME_ScanFields_t*fields);用来请求网络层发现邻居路由器。用此函数来执行一个网络扫描,但是不加入网络。扫描确认(结果)将以回调函数ZDO_NetworkDiscoveryConfirmCB()返回。回调函数执行以后通过调用NLME_NwkDiscTerm()清除此活动。fields–扫描结构体typedefstruct{uint32channels;uint8duration;}NLME_ScanFields_t;voidNLME_NwkDiscTerm(void);ZStatus_tNLME_NetworkFormationRequest(uint16PanId,uint32ScanChannels,byteScanDuration,byteBeaconOrder,byteSupeRFrameOrder,byteBatteryLifeExtension);函数允许上层请求设备构成网络并成为网络中的协调器。执行结果返回回调函数ZDO_NetworkFormationConfirmCB()。推荐用户使用ZDO_StartDevice()来代替此函数。PanId-此设备建立网络所使用的ID,值范围:0~0x3FFF。如果0xFFFF被使用,则网络层将为网络选择此PanID。如果发现网络的PANID相同,则增加PANID直到其唯一。BeaconOrder–Zigbee2006中此参数为:BEACON_ORDER_NO_BEACONS.SuperframeOrder–Zigbee2006中此参数为:BEACON_ORDER_NO_BEACONS.BatteryLifeExtension-为TRUE则请求协调器支持电池寿命扩展模式ZStatus_tNLME_StartRouterRequest(byteBeaconOrder,byteSuperframeOrder,byteBatteryLifeExtension);函数允许上层请求设备以路由器功能启动。执行结果返回回调函数ZDO_StartRouterConfirmCB()。推荐用户使用ZDO_StartDevice()来代替此函数。BeaconOrder–Zigbee2006中此参数为:BEACON_ORDER_NO_BEACONS.SuperframeOrder–Zigbee2006中此参数为:BEACON_ORDER_NO_BEACONS.BatteryLifeExtension-为TRUE则请求协调器支持电池寿命扩展模式ZStatus_tNLME_JoinRequest(uint8*ExtendedPANID,uint16PanId,byteChannel,byteCapabilityInfo);函数允许上层发送设备加入网络的请求。执行结果返回回调函数ZDO_JoinConfirmCB()。推荐用户使用ZDO_StartDevice()来代替此函数。ExtendedPANID-想要加入的网络的扩展PANIDCapabilityInfo-加入设备的操作性能CAPINFO_ALTPANCOORD0x01CAPINFO_DEVICETYPE_FFD0x02CAPINFO_Power_AC0x04CAPINFO_RCVR_ON_IDLE0x08CAPINFO_SECURITY_CAPABLE0x40CAPINFO_ALLOC_ADDR0x80ZStatus_tNLME_ReJoinRequest(void);已加入设备的重新加入。执行结果返回到回调函数ZDO_JoinConfirmCB()ZStatus_tNLME_OrphanJoinRequest(uint32ScanChannels,byteScanDuration);请求网络层孤儿节点的加入。此函数是一个暗含加入的扫描。执行结果返回到回调函数ZDO_JoinConfirmCB()。推荐用户使用ZDO_StartDevice()来代替此函数。以上的几个函数基本上是被ZDO_StartDevice()的执行所取代了,呵呵!ZStatus_tNLME_PermitJoiningRequest(bytePermitDuration);定义了协调器或路由器在一个固定的周期内如何允许设备加入。PermitDuration-在这个指定的时间(单位为秒)内允许设备关联。0x00和0xff表示分别禁止或允许设备关联。ZStatus_tNLME_DirectJoinRequest(byte*DevExtAddress,bytecapInfo);请求协调器或路由器设备的网络层加入一个设备作为其子设备。DevExtAddress-指向设备的IEEE地址ZStatus_tNLME_LeaveReq(NLME_LeaveReq_t*req);请求自己或者其他设备脱离网络,执行此函数不会导致其父节点重新分配设备地址。req–脱离请求数据结构:typedefstruct{uint8*extAddr;uint8removeChildren;uint8rejoin;uint8silent;}NLME_LeaveReq_t;extAddr-要脱离的设备的扩展地址removeChildren-true子设备也脱离,false只脱离当前设备。目前只能用falserejoin-true允许设备重新加入网络,false不允许设备重新加入网络silent–truewill.falseifthe。voidNLME_RemoveChild(uint8*extAddr,uint8dealloc);dealloc–truewill.falseifthe.ZMacStatus_tNwkPollReq(bytesecurityEnable);手动发送一个MAC数据请求(此函数只适用于终设备(enddevices))。正常情况下终设备的数据检测(poll)由网络层自动处理,应用可以通过调用NLME_SetPollRate()来改变速率,如果速率设为0则可以调用此函数来手动推送数据。securityEnable–设为false.返回值:ZMacStatus_tisthesameasZStatus_t–statusvaluesdefinedinZComDef.hvoidNLME_SetPollRate(uint16newRate);(此函数只适用于终设备(enddevices))newRate-单位为ms,数据推送到父设备的时间。voidNLME_SetQueuedPollRate(uint16newRate);设置/改变队列推送(poll)速率。(此函数只适用于终设备(enddevices)),如果一个数据推送产生了数据消息,则数据推送率马上设置到QueuedPollRate以排空父设备的队列数据。newRate-有效值为:0x01-0xff,0为禁止队列推送。voidNLME_SetResponseRate(uint16newRate);设置/改变应答推送(poll)速率。(此函数只适用于终设备(enddevices)),我们可以让应答快一些。newRate-有效值为:0x01-0xff,0为禁止队列推送。地址管理地址管理模块提供底层的地址管理,用户不能直接访问这个模块。APSME_LookupExtAddr和APSME_LookupNwkAddr提供本地地址查找,ZDP_IEEEAddrReq和ZDP_NwkAddrReq提供远程地址查找。byte*NLME_GetExtAddr(void);返回指向设备64位IEEE地址的指针。uint16NLME_GetShortAddr(void);返回设备的16位网络地址(短地址)。uint16NLME_GetCoordShortAddr(void);返回设备父亲的网络地址(16位短地址),注意这个地址不是Zigbee协调器的短地址(总为0x0000)voidNLME_GetCoordExtAddr(byte*buf);返回设备父亲的IEEE地址(64位),注意这个地址不是Zigbee协调器的扩展地址ZStatus_tNLME_SetRequest(ZNwkAttributes_tNIBAttribute,uint16Index,void*Value);设置NIB属性的值。NIBAttribute-只支持nwkProtocolVersion属性ZStatus_tNLME_GetRequest(ZNwkAttributes_tNIBAttribute,uint16Index,void*Value);NIBAttribute-只支持如下属性:nwkCapabilityInfonwkNumNeighborTableEntriesnwkNeighborTablenwkNumRoutingTableEntriesnwkRoutingTableaddr_filter_tNLME_IsAddressBroADCast(uint16shortAddress);基于设备性能,这个函数评估参数中提供的地址,决定是否是广播地址shortAddress-要测试的地址addr_filter_t-ADDR_N
本文标题:ZigBee学习之17—ZStackAPI解读5
链接地址:https://www.777doc.com/doc-2829770 .html