Board logo

标题: 请教:zigbee中,coordinator向end device发送数据时必须用indirect模式吗? [打印本页]

作者: yolandazhao    时间: 2006-9-12 16:56     标题: 请教:zigbee中,coordinator向end device发送数据时必须用indirect模式吗?

请教:zigbee中,coordinator向end device发送数据时必须用indirect模式吗?可以用direct模式吗?
作者: seuafu2005    时间: 2006-9-12 17:42

必须用indirect模式,这是spec所规定的
除非是广播,用direct模式
作者: yolandazhao    时间: 2006-9-12 17:47

哦,这样啊
那如果device和coordinator关联后关机了的话,coordinator收到此device的数据后就发不出去了,就只能等到device再开机poll它为止,这样的话就有可能导致coordinator的内存空间占满,其它消息就申请不到空间了
有什么办法可以解决啊?
作者: yolandazhao    时间: 2006-9-12 18:06

我这边资料上在介绍indirect 时,这么说:This requires that the coordinator send its data indirectly. That is, the
coordinator sends its data and the data is buffered until the device polls for it.
这样的话数据一直在,就会造成内存占满,以后的消息申请不到内存
有什么办法可以解决这个问题呢?
作者: seuafu2005    时间: 2006-9-13 09:08

在freescale的802。15。4程序中应该有个时间限制的。我记得spec上也规定有时间限制的,一定时间device不取就丢弃了
作者: yolandazhao    时间: 2006-9-13 09:18

呵呵,要是这样就好了
但是我这现在device不取的话就一直存在,导致后面再发数据时申请不到内存
看来我只有修改mac层的函数了?在应用层有什么办法处理吗?我想用purge原语清除,但是不知道怎么判断是device没有取数据?
作者: jimmytan    时间: 2006-9-14 09:47

在MAC层,如果在规定时间内,数据没有取走的话,coordinator就会把数据丢弃掉。在802。15。4里面,是这样规定的:If there is capacity to store the transaction, the coordinator will add the
information to the list. If the transaction is not handled within macTransactionPersistenceTime, the
transaction information will be discarded and the MAC sublayer will issue the MCPS-DATA.confirm
primitive with a status of TRANSACTION_EXPIRED.
作者: yolandazhao    时间: 2006-9-14 10:14

呵呵,协议是这么规定的
但是我刚才又测试了一下,如果end device和coordinator关联上之后,将end device关掉,这时coordinator向此end device发数据时,就没有任何从mac层返回的消息,结果连续发几次之后,coordinator这边就申请不到空间了
一直不知道是怎么回事?
作者: seuafu2005    时间: 2006-9-14 10:18

应该是你程序的问题,我以前做过这种操作,大概10秒左右coordinator会丢弃数据,返回一个信息来了。
关于这个问题,已经在很多帖子中做过说明了,肯定是你程序的问题,不可能coordinator会申请不到空间的。在发送不成功的情况下,需要耐心的等待其返回信息上来。

另外,上下层之间是消息队列的方式(这个和SMAC是不同的,感觉你一会儿用smac,一会儿用802。15。4),这个要特别消息,要耐心仔细的看demo程序和用户手册,理解其中的过程
作者: yolandazhao    时间: 2006-9-14 10:34

呵呵,既然版主这么肯定了,我就仔细检查一下我的程序
我是在802.15.4的MAC/PHY软件上做的,只是现在用想用smac重新做一遍,找找问题在哪?
作者: seuafu2005    时间: 2006-9-14 10:52

smac和802。15。4基本上不同,smac简单的多,没有协议
没办法从那里找问题的
作者: yolandazhao    时间: 2006-9-14 11:05

哦,这样啊,我还真的没有搞清楚他们之间的区别,能给解释一下吗?谢谢![em12][em12]
作者: seuafu2005    时间: 2006-9-14 14:29

吐血先,没有弄清楚也敢拿smac去验证802。15。4mac

802。15。4MAC/PHY有时候也叫full mac,是完全遵循IEEE802.15.4标准的程序
smac就是simple mac,不遵循任何协议标准,简单的说就是13192的驱动加上一些简单的应用函数
这两者之间代码量都可以看出来,一个齐全的15.4的mac有30k左右,一个smac才3k不到

感觉你性子可能比较急,想一步做出来,但这是不可能的。在做之前,首先要了解一些基本的东西,比如freescale的平台,有硬件sard,evb,ncb....软件smac,full mac,z-stack等,还有其调试工具BDM Multilink。这些都先要知道个大概,了解其基本的功能。

对于软件也先应该下载运行里面的demo程序,知道如何下载调试,程序如何运行,再进入下一步的开发。一开始懵懵懂懂,结果每天都有问题,每天都问一堆的问题,每天到最后不知道问题在哪里。
作者: yolandazhao    时间: 2006-9-14 14:46

[em09],不好意思,让您见笑了
我接触这个时间很短,领导又天天催着要实现什么什么功能,根本就没有时间看资料,并且我这的资料也不全,很多东西都没有,还是从你这知道不少东西,这一段不少麻烦你,多谢了![em23]
作者: strongchen    时间: 2006-9-14 15:25

欲速则不达。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0