楼主: kennan

Zigbee中无线节点和端点的解释

[复制链接]
farbeyond 发表于 2012-5-12 23:48:15 | 显示全部楼层
kennan 发表于 2011-8-24 21:26
底层有一个函数负责接收所有的消息,但是会根据消息里面的ep来给相应ep对应的任务发消息,。如果多ep共用一 ...

刚才看了老师的文章,有些地方不敢苟同,请老师指正!
如下是葵花宝典中一段话:
Endpoints are the mechanism used to distinguish one application from another.
那么显然在端点用来区分不同的应用的,比如说在一个设备上有灯和空调,那么着两者就会有不同的端点号。这点是协议上规定的,端点是必须唯一的。
那么在协议栈的里面,就是在OSAL中,这两者是没有必要一定是建立在不同的任务下的。不同的端点属于不同的事件就可以了区分了,因为在协议栈里,同一个任务下可以建立多个事件(最大15个)。
至于关于消息和端点之间的关系:
我认为消息和端点之间的关系,对于OSAL来说,这个事没意义。当任务发生时,OSAL只为每个任务发送消息(这个消息是所有事件的),而不是为每个事件分配消息。而端点则是具体的是为了实现源设备和目标设备之间的连接,这个与协议栈无关,协议栈也不会去理会这些关系,协议栈只会去理会端点对应的事件发生的事情。
端点和消息这两者是各司其职的。如果说两者有关系,那么着就是端点对应的事件发生了,事件在进行处理的时候,会读取消息队列中消息。
希望毛毛老师能批评指正!
 楼主| kennan 发表于 2012-5-13 20:16:19 | 显示全部楼层
你要知道,如果一个节点管4个灯,那么每个灯的控制命令是完全相同的,你只能通过EP来区分。如果所有的EP用一个任务,那么你就要改ZDP底层函数才能区分开的。
wumj 发表于 2012-5-16 16:05:37 | 显示全部楼层
搞得有点复杂了
这样说,参与通信的主体是节点中的应用程序,而不是节点。因此,一个完整的地址形式是网络地址(节点)+EP(应用程序),可以把网络地址比做一个公司的总机号码,EP比做公司员工的分机号码。
一般讲,同一个profile中,不同的device(例如HA中的开关,灯等设备)功能,用不同的应用实现,也需要不同的EP来区分。
任务则是OSAL中基本的分时运行单元。一个任务中可以只处理一个应用,也可以处理多个应用。任务初始化时,需要为自己处理的每个应用注册一个EP,OSAL将这个EP和任务ID对应起来。实际上是告诉OSAL,凡是发送给这个EP的消息,交给我。
当OSAL收到有一个网络消息后,会根据消息中的EP,查找该EP对应的任务ID。如找不到,丢弃消息;如找到,则将该任务对应是系统事件标志置位,通知该任务处理。
憨不乎的 发表于 2012-6-9 16:07:33 | 显示全部楼层
kennan 发表于 2012-5-13 20:16
你要知道,如果一个节点管4个灯,那么每个灯的控制命令是完全相同的,你只能通过EP来区分。如果所有的EP用一 ...

请问Endpoint是在哪边定义的,没有找到代码
wxsjy 发表于 2012-7-19 13:10:11 | 显示全部楼层
我是个新手,最近几天看了论坛的精华文章,受益匪浅。我的理解是,以前在单片机中,我们是自己编制不同的命令码来做不同的事情,现在,在ZigBee中,是不是对我们新手来说,就老老实实地一个任务对应一个端点,然后再结合簇的应用来区分不同的命令码?请高手指教。
lizheng86312 发表于 2012-8-29 12:11:55 | 显示全部楼层
学到东西了。顶。。。
linjiawei 发表于 2012-10-9 11:59:09 | 显示全部楼层
非常给力的解释!菜鸟受教了!
wafush 发表于 2012-12-6 15:13:23 | 显示全部楼层
mark,正在努力学习中。感谢分享!
风景阔 发表于 2012-12-30 09:45:09 | 显示全部楼层
总结的很好  豁然开朗
jianmin1107 发表于 2013-1-7 17:01:29 | 显示全部楼层
kennan 发表于 2011-7-29 19:25
多个EP可以在同一个任务注册,但是来消息的时候这个任务会收到对应他所注册的所有EP的消息,你在程序处理上 ...

老师,我一共是2个endpoint而且分别建立了一个任务直接短地址发到协调器的,发送方设置断点的时候这两个endpoint都是定时任务,而且都有执行到,可协调器只能接受到优先级高的那个endpoint的任务却执行不到剩下的那个。不知道是什么情况?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表