OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6082|回复: 1

zigbee有不理解endpoint的,看一下这里,这也是我从帖子里找到的,通俗易懂

[复制链接]

39

主题

598

帖子

0

精华

高级会员

Rank: 4

积分
875
金钱
875
注册时间
2013-12-18
在线时间
41 小时
发表于 2015-7-28 10:01:02 | 显示全部楼层 |阅读模式
有不理解endpoint的,看一下这里,这也是我从帖子里找到的,不是我写的,之所以不敢发网址,是怕又有人说是不是病毒啊,什么的,让我无语
内容我看过了,通俗易懂,写的很好的。


内容:
今天看了毛毛老师关于端口的一些心得,他的思路写的很清楚,唯一的不足是没有结合代码来说明。
    ENDPOINT。很多资料将其翻译为“端点”,我们不如也这么叫。不过问题的关键不是它如何称呼,而是如何认识它。我们来研究这样一个事实:outman在看我的帖子的同时他又使用QQ和别人聊天。假设他的电脑IP地址为192.168.1.2。那么当他的QQ好友向他发送了一句话的时候,这个信息里面包含了目的IP地址,所以通过TCP/TP协议可以到达outman的电脑。但是问题随之而来。当outman电脑上的操作系统接收到此条信息时,它将把这个信息交给浏览器(我们刚才说了,他在看帖子,所以肯定开着浏览器)呢,还是交给QQ?操作系统通过怎么样的方法作出裁决呢?显然,只通过IP地址是没有办法决定的,所以这条消息除了包含IP地址以外,还要告诉目的机,这条消息应该交由哪个应用程序来处理。于是端口(Port)的概念产生了。操作系统为应用程序提供了很多端口,消息由IP地址到达操作系统,再由端口找到处理消息的应用程序。同样的道理,在ZigBee的应用程序框架里(结构图请看《深入浅出Z-Stack 2006 OSAL多任务资源分配机制》)包含了最多240个应用程序对象,每个应用程序对象在OSAL中对应了一个任务,当网络层接收到信息以后如何决定将此信息传递给哪个任务呢?ENDPOINT决定了传递方向,于是我们可以说ENDPOINT的作用与TCP/IP协议中的端口的作用是一样的。
Cluster。中文翻译为“簇”。我们如何去理解“簇”这个概念呢?当一个任务接收到消息(这里所说的消息是指无线网络之中的数据)之后,一定会对消息进行处理。但是我们的应用肯定不会盲目的处理所有消息,消息一定会被分门别类。“簇”代表了消息的类型,为与相同簇的消息具有相同的类型,而这个类型可以被用户自定义。
   以上摘自飞比论坛《z-stack简单应用开发》,个人认为把端点的概念说的很清楚,唯一不足是没有从代码层面来说明。
 当空气中有数据过来,通过物理层,mac层,网络层,在网络层中最终会调用AF.c中afIncomingDate()函数,在该函数中会调用afBuildMSGIncoming(),该函数又调用osal-msg-send(),即osal_msg_send( *(epDesc->task_id), (uint8 *)MSGpkt );
  对于osal-msg-send()最终会触发应用层任务处理函数,还是ZDo层,要看task-id
    afRegister( (endPointDesc_t *)&SerialApp_epDesc );//在应用层初始化函数中
    afRegister( (endPointDesc_t *)&ZDApp_epDesc );//在zdo中初始化函数中
端点号和任务id是怎么联系起来的,我的理解是这样的,两者是不分家的,端点号,和任务id都包括在端点描述符中,在发送的信息中包含了端点号和任务id。在代码编写过程中之需要用到task-id即可。



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-7-16
在线时间
3 小时
发表于 2015-7-28 10:26:04 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 12:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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