ti zigbee endpoint理解

摘自:http://blog.sina.com.cn/s/blog_7ca994b80100tsg5.html


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即可。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值