蓝牙4.0会话层问题请教
可是按照第一张图,slave接收到一数据包后,立即回一个ACK,然后这样再发送数据包,这样让人在时序上很难理解。
不知道为什么会出现这2个不同的时序,盼高人指教,谢谢。
※ FROM: 180.168.40.34]
※ 来源:·水木社区 http://www.newsmth.net·[FROM: 180.168.40.34]
.34
.34
我的理解是:
第二张图是硬件上的收发概念,第一张图是软件上的收发
在硬件上就是一次发,然后接着就是收,收发中间会等一段时间(参数配置)
软件上发一个data packet,收一个ack,这只是说符合一个协议栈的收发数据而已
具体在硬件层就是第二张图了
第一个是MSC,即message sequence chart,上面只是表明了消息的顺序,并不表明中间的时间范围。每个包的发送间隔是由在连接时的latency和interval来决定的。
何况,第二张图是连接的过程,第一个是已经连接好发送数据的过程,俩不是一样的。
还是有点不明白,你的意思是MASTER发送完一个包后,SLAVE必须发送完一个ACK再接着发送一个数据包吗,这样相邻包的发送时间间隔就不一样了啊。
.34
link layer里面有control和data两种数据包类型。你的第一个图是data package,第二个是control package,俩不是一回事儿。
先抛开这个不说。当你发送数据的时候,link layer是有LL的包头的,和网络包差不多,这个包头里面定义了SN,NESN等等,这个里面的内容可以相当于ack。
回到你的问题,SLAVE想发送数据包时,不用先发ACK,可以直接返回数据包,注意这个数据包是由LL的包头的,所以可以视作是上一个MASTER包的ACK。
当然,这是理论性质的,SLAVE的stack不可能马上就把数据准备好发出去。所以还会有个空的ACK发出去先。
那发送数据包还有传输窗口,2个数据包相邻必须多长时间的问题吗,谢谢
.34