zigbee3.0学习笔记@开发指导书@设备&地址

#设备
##协调器
作用:启动网络和管理密钥
1.组建zigbee网络,选择通道和PAN ID
2.创建集中安全网络和授权可信任网络
3.分发密钥,允许设备加入网络
4.路由功能
##路由
作用:
1.允许其他设备加入网络
2.Multi-hop多跳路由(信号跳传)
3.协助终端设备通讯
4.创建分布式网络安全能力
##终端
作用:
1.休眠模式或者唤醒

#协议栈
配置文件可以被修改,修改后称为“stack specific”stack profile

协议栈版本的标识符在设备传输的beacon中,加入网络之前确认协议栈

协议栈版本配置: STACK_PROFILE_ID 在nwk_golbals.h 文件中
#define NETWORK_SPECIFIC 0 特殊网络
#define HOME_CONTROLS 1 传统网络
#define ZIGBEEPRO_PROFILE 2 zigbee3.0
#define GENERIC_STAR 3
#define GENERIC_TREE 4

#地址

64-bit IEEE address called MAC地址or 扩展地址
作用:生产地址

16-bit address called 逻辑地址 or 短地址or网络地址
作用:用于识别设备和在网络中发送数据

##网络地址

###分配网络地址方式:随机寻址方案

判断地址冲突机制:新设备从父节点获得随机地址–新设备发送“设备通知”–冲突设备(路由)发送冲突广播–新设备改地址–新设备发送“设备通知”(循环)
如果终端地址有冲突–父节点发送重新连接响应更改终端地址–终端发送“设备通知”
路由接收到设备通知,绑定表更新,路由表不更新
父节点接收到的设备通知来自于自己的子节点,但是又不是子节点直接发出来的,认为这个子节点被加入其他的父节点了

###协议栈中的地址

发送数据函数 AF_DataRequest()
目标设备数据包类型afAddTpye_t (defined in profile – AF.h)

typedef struct
{
    union
    {
		uint16     		shortAddr;
		ZLongAddr_t    extAddr;
	}addr;
	afAddrMode_t		addrMode;
	byte endPoint;
}afAddrTpye_t;

无线发送地址类型 AF address modes (defined in profile – AF.h)

tpyedef enum
{
	afAddrNotPresent = AddrNotPresent,            //间接传播(用于绑定表)
	afAddr16Bit      = Addr16Bit,                 //单播
	afAddr64Bit      = Addr64Bit,               
	afAddrGroup      = AddrGroup,                 //组播
	afAddBroadcast   = AddrBroadcast              //广播
} afAddMode_t;

####unicast单播
作用:向网络中单个设备发数据包
addMode设置为Addr16Bit,目标地址在数据包中携带

####inderect间接传播(绑定)
不知道目的地。模式设置为AddrNotPresent。目的地在绑定表中查找。找到后一个以上的设备,则转为类似单播的规则向每个设备发出。

####Broadcast广播
作用:向网络中所有设备发数据包
a.目标地址设置为NWK_BROADCAST_SHORTADDR_DEVALL(0XFFFF)发送到所有设备
对于睡眠设备,消息保持在父设备上,直到睡眠设备轮询到消息或者超时,间接消息超时时间设置NWK_INDIRECT_MSG_TIMEOUT (in f8wConfig.cfg)
b.目标地址设置为NWK_BROADCAST_SHORTADDR_DEVRXON(0XFFFD)发送到所有闲置状态设备(除了睡眠状态的设备)
c.目标地址设置为NWK_BROADCAST_SHORTADDR_DEVZCZR(0XFFFC)发送到所有路由设备(包括协调器)

####Gruop组播
作用:向网络中一组设备发数据包
addMode设置为AddrNotPresent,addr.shortAddr 设置为组标识符
定义组方法:aps_AddGroup()
组也可以与间接寻址一起使用。绑定表中的目标地址可以是单播也可以是组播地址。其实广播只是一种特殊的组寻址。
添加设备到标识符为1的组代码:

aps_Group_t group;
group.ID = 0x0001;
group.name[0] = 6;    //第一个字节是字符串长度
osal_memcpy(&(group.name[1]),"Gruop1",6);
aps_AddGroup(SAMPLEAPP_ENDPOINT,&gruop);

###重要设备地址
查询设备地址和子设备地址函数:
NLME_GetShortAddr() --返回设备16位网络短地址
NLME_GetExtAddr() --返回设备64位长地址
NLME_GetCoordShortAddr() --返回父设备16位网络短地址
NLME_GetCoordExtAddr() --返回父设备64位长地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值