ZStack API解读

网络层(NWK) 
网络层为高层提供下面函数功能: 
· 网络管理 
· 地址管理 
· 网络变量和效能函数 
除了管理功能外,NWK还提供数据服务,只是应用不能访问数据服务。应用需要通过AF数据接口AF_DataRequest()来发送数据。 
网络管理 

ZStatus_t NLME_NetworkDiscoveryRequest( uint32 ScanChannels,byte ScanDuration ); 
用来请求网络层发现邻居路由器。在加入操作执行网络扫描前应该调用此函数。扫描确认(结果)将以回调函数ZDO_NetworkDiscoveryConfirmCB()返回。推荐用户使用ZDO_StartDevice()来代替此函数。(除非你清楚的知道网络加入过程) 
ScanChannels -执行发现的通道,2.4GHz条件下只能使用通道11-26(0x07FFF800) 
ScanDuration -新网络启动前,每个通道被其他网络扫描的时间 
BEACON_ORDER_15_MSEC 0 15.36 milliseconds 
BEACON_ORDER_30_MSEC 1 30.72 milliseconds 
BEACON_ORDER_60_MSEC 2 61.44 milliseconds 
BEACON_ORDER_120_MSEC 3 122.88 milliseconds 
BEACON_ORDER_240_MSEC 4 245.76 milliseconds 
BEACON_ORDER_480_MSEC 5 491.52 milliseconds 
BEACON_ORDER_1_SECOND 6 983.04 milliseconds 
BEACON_ORDER_2_SECONDS 7 1966.08 milliseconds 
BEACON_ORDER_4_SECONDS 8 3932.16 milliseconds 
BEACON_ORDER_7_5_SECONDS 9 7864.32 milliseconds 
BEACON_ORDER_15_SECONDS 10 15728.64 milliseconds 
BEACON_ORDER_31_SECONDS 11 31457.28 milliseconds 
BEACON_ORDER_1_MINUTE 12 62914.58 milliseconds 
BEACON_ORDER_2_MINUTES 13 125829.12 milliseconds 
BEACON_ORDER_4_MINUTES 14 251658.24 milliseconds 
BEACON_ORDER_NO_BEACONS 15 No Beacons transmitted 
返回值:ZStatus_t -ZComDef.h中定义的状态值 
ZStatus_t NLME_NwkDiscReq2( NLME_ScanFields_t* fields ); 
用来请求网络层发现邻居路由器。用此函数来执行一个网络扫描,但是不加入网络。扫描确认(结果)将以回调函数ZDO_NetworkDiscoveryConfirmCB()返回。回调函数执行以后通过调用NLME_NwkDiscTerm()清除此活动。 
fields – 扫描结构体 
typedef struct 

uint32 channels; 
uint8 duration; 
} NLME_ScanFields_t; 
void NLME_NwkDiscTerm( void ); 
ZStatus_t NLME_NetworkFormationRequest( uint16 PanId, uint32 ScanChannels, 
byte ScanDuration, byte BeaconOrder, 
byte SuperframeOrder, byte BatteryLifeExtension ); 
函数允许上层请求设备构成网络并成为网络中的协调器。执行结果返回回调函数ZDO_NetworkFormationConfirmCB()。推荐用户使用ZDO_StartDevice()来代替此函数。 
PanId -此设备建立网络所使用的ID,值范围:0~0x3FFF。如果0xFFFF被使用,则网络层将为网络选择此PanID。如果发现网络的PAN ID相同,则增加PAN ID直到其唯一。 
BeaconOrder – Zigbee 2006中此参数为:BEACON_ORDER_NO_BEACONS. 
SuperframeOrder –Zigbee 2006中此参数为:BEACON_ORDER_NO_BEACONS. 
BatteryLifeExtension -为TRUE则请求协调器支持电池寿命扩展模式 
ZStatus_t NLME_StartRouterRequest( byte BeaconOrder, byte SuperframeOrder, 
byte BatteryLifeExtension ); 
函数允许上层请求设备以路由器功能启动。执行结果返回回调函数 ZDO_StartRouterConfirmCB()。推荐用户使用ZDO_StartDevice()来代替此函数。 
BeaconOrder – Zigbee 2006中此参数为:BEACON_ORDER_NO_BEACONS. 
SuperframeOrder –Zigbee 2006中此参数为:BEACON_ORDER_NO_BEACONS. 
BatteryLifeExtension -为TRUE则请求协调器支持电池寿命扩展模式 
ZStatus_t NLME_JoinRequest( uint8 *ExtendedPANID, uint16 PanId, 
byte Channel, byte CapabilityInfo ); 
函数允许上层发送设备加入网络的请求。执行结果返回回调函数 ZDO_JoinConfirmCB()。推荐用户使用ZDO_StartDevice()来代替此函数。 
ExtendedPANID -想要加入的网络的扩展PAN ID 
CapabilityInfo -加入设备的操作性能 
CAPINFO_ALTPANCOORD 0x01 
CAPINFO_DEVICETYPE_FFD 0x02 
CAPINFO_POWER_AC 0x04 
CAPINFO_RCVR_ON_IDLE 0x08 
CAPINFO_SECURITY_CAPABLE 0x40 
CAPINFO_ALLOC_ADDR 0x80 
ZStatus_t NLME_ReJoinRequest( void ); 
已加入设备的重新加入。执行结果返回到回调函数ZDO_JoinConfirmCB() 
ZStatus_t NLME_OrphanJoinRequest( uint32 ScanChannels, byte ScanDuration ); 
请求网络层孤儿节点的加入。此函数是一个暗含加入的扫描。执行结果返回到回调函数ZDO_JoinConfirmCB()。推荐用户使用ZDO_StartDevice()来代替此函数。 
以上的几个函数基本上是被ZDO_StartDevice()的执行所取代了,呵呵! 

ZStatus_t NLME_PermitJoiningRequest( byte PermitDuration ); 
定义了协调器或路由器在一个固定的周期内如何允许设备加入。 
PermitDuration -在这个指定的时间(单位为秒)内允许设备关联。0x00和0xff表示分别禁止或允许设备关联。 
ZStatus_t NLME_DirectJoinRequest( byte *DevExtAddress, byte capInfo ); 
请求协调器或路由器设备的网络层加入一个设备作为其子设备。 
DevExtAddress -指向设备的IEEE地址 
ZStatus_t NLME_LeaveReq( NLME_LeaveReq_t* req ); 
请求自己或者其他设备脱离网络,执行此函数不会导致其父节点重新分配设备地址。 
req – 脱离请求数据结构: 
typedef struct 

uint8* extAddr; 
uint8 removeChildren; 
uint8 rejoin; 
uint8 silent; 
} NLME_LeaveReq_t; 
extAddr -要脱离的设备的扩展地址 
removeChildren -true 子设备也脱离,false只脱离当前设备。目前只能用false 
rejoin -true 允许设备重新加入网络,false 不允许设备重新加入网络 
silent – true will. false if the。 
void NLME_RemoveChild( uint8* extAddr, uint8 dealloc ); 
dealloc – true will. false if the. 
ZMacStatus_t NwkPollReq( byte securityEnable ); 
手动发送一个MAC数据请求(此函数只适用于终设备(end devices))。正常情况下终设备的数据检测(poll)由网络层自动处理,应用可以通过调用NLME_SetPollRate()来改变速率,如果速率设为0则可以调用此函数来手动推送数据。 
securityEnable – 设为false. 
返回值:ZMacStatus_t is the same as ZStatus_t –status values defined in ZComDef.h 
void NLME_SetPollRate( uint16 newRate ); 
(此函数只适用于终设备(end devices)) 
newRate -单位为ms,数据推送到父设备的时间。 
void NLME_SetQueuedPollRate( uint16 newRate ); 
设置/改变队列推送(poll)速率。(此函数只适用于终设备(end devices)),如果一个数据推送产生了数据消息,则数据推送率马上设置到 Queued Poll Rate以排空父设备的队列数据。 
newRate -有效值为:0x01-0xff,0为禁止队列推送。 
void NLME_SetResponseRate( uint16 newRate ); 
设置/改变应答推送(poll)速率。(此函数只适用于终设备(end devices)),我们可以让应答快一些。 
newRate -有效值为:0x01-0xff,0为禁止队列推送。 
地址管理 

地址管理模块提供底层的地址管理,用户不能直接访问这个模块。APSME_LookupExtAddr和APSME_LookupNwkAddr提供本地地址查找,ZDP_IEEEAddrReq和ZDP_NwkAddrReq提供远程地址查找。 
byte *NLME_GetExtAddr( void ); 
返回指向设备64位IEEE地址的指针。 
uint16 NLME_GetShortAddr( void ); 
返回设备的16位网络地址(短地址)。 
uint16 NLME_GetCoordShortAddr( void ); 
返回设备父亲的网络地址(16位短地址),注意这个地址不是Zigbee协调器的短地址(总为0x0000) 
void NLME_GetCoordExtAddr( byte *buf ); 
返回设备父亲的IEEE地址(64位),注意这个地址不是Zigbee协调器的扩展地址 
ZStatus_t NLME_SetRequest( ZNwkAttributes_t NIBAttribute, 
uint16 Index, 
void *Value ); 
设置NIB属性的值。 
NIBAttribute -只支持nwkProtocolVersion属性 
ZStatus_t NLME_GetRequest( ZNwkAttributes_t NIBAttribute, 
uint16 Index, void *Value ); 
NIBAttribute -只支持如下属性: 
nwkCapabilityInfo 
nwkNumNeighborTableEntries 
nwkNeighborTable 
nwkNumRoutingTableEntries 
nwkRoutingTable 
addr_filter_t NLME_IsAddressBroadca st(uint16 shortAddress); 
基于设备性能,这个函数评估参数中提供的地址,决定是否是广播地址 
shortAddress -要测试的地址 
addr_filter_t - ADDR_NOT_BCA ST 不是一个广播地址 
ADDR_BCA ST_FOR_ME 是一个广播地址,且这个设备是正确的设备类型 
ADDR_BCA ST_NOT_ME 是一个广播地址,这个设备是不是正确的目标 
byte NLME_GetProtocolVersion(); 
获得NIB中的协议版本 
返回值: ZB_PROT_V1_0 1 
ZB_PROT_V1_1 2 
void NLME_SetBroadca stFilter(byte capabilities); 
基于设备的性能设置位掩码,用来处理有效的广播地址 
capabilities -用来决定设备能处理哪些广播消息 
网络的非易失性储存 

若设置了NV_RESTORE,当设备加入时网络信息(NIB)会自动储存。当设备启动时会自动执行NIB NV初始化和恢复。如果用户应用改变NIB(_NIB)则必须调用NLME_UpdateNV() 
void NLME_UpdateNV( byte enables ); 
enables -位掩码 
NWK_NV_NIB_ENABLE 0x01 粗存网络层NIB 
NWK_NV_DEVICELIST_ENABLE 0x02 储存设备列表 
NWK_NV_BINDING_ENABLE 0x04 储存绑定表 
NWK_NV_ADDRMGR_ENABLE 0x08 储存地址管理表 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值