一.Link Layer学习笔记
1. 广播间隔(Adv Interval)
图1 使用AdvDelay的广播时间
如图1所示,为使用AdvDelay的广播事件的时间图。由图中可知,
T_AdvEvent = AdvInteval + AdvDelay.其中AdvInteval的时间是固定的,必须为0.625ms的整数倍,范围在20ms-10.24s之间。
(1) Advertisingevent type为scannable undirected event或者non-connectable undirected event 时Adv Interval最好在100ms以上。
(2)对于connectable undirected 或connectable directed event而言使用low duty cycle时,AdvInterval的范围至少在20ms,AdvDelay则在0-10ms之间。
2. 数据发送(Flow control)
(1) 每个Connection event的Header都包含四个基本的元素:LLID、SN、NESN、MD。
LLID:逻辑链路标识符。
SN:***
NESN:下一个期望***
MD:更多数据。
(2) SN、NESN在连接过程中的应用。
当连接建立之后,SN和NESN的初始值为0.以后SN的由Host(Master)端维护,NESN由Client(slave)维护。具体control flow如下:
图2 Transmit and Receive SN and NESN flow diagram
如图2所示,Host主要维护SN这个元素,Client维护NESN这个元素,在connectionevent内收到数据包,都要将SN与NESN进行比较。如图3所示,为一些正常的连接时间SN和NESN的状态。
图3 connectionevents
在Host端,SN不等于NESN,则认为收到了来自Client发来的正确的ack包,然后(SN + 1)&1,下一个connect event发新的data,否则则认为收到错误的ack包,下一个event继续发之前的数据。Host拿到NESN后,在新的data中会继续使用。
在Clent端,SN等于NESN,则认为收到了来自Host发来的正确的包,然后(NESN + 1)&1,收到Host的包,否则则认为是前一个包而被忽略。Client拿到SN中,在发ack包的时候会继续使用。