<p><strong>5.1.4 同步</strong></p>
<p> 本节介绍协调器产生信标以及设备与协调器同步的过程。对于支持信标的 PAN,同步是通过接收信标帧并对其解码完成的;对于不支持信标的 PAN,同步是由设备向协调器轮询数据完成的。</p>
<p><strong>5.1.4.1 带有信标的同步</strong></p>
<p> 在信标使能的 PAN 中(即 macBeaconOrder < 15),所有的设备应该都具有获取信标并进行同步的能力,以检测是否存在未处理数据或者对信标进行跟踪。只有当信标中包含的 PAN 标识符等于 macPANId 时,设备才使用该信标进行同步。如果 macPANId 指定的是广播 PAN 标识符,设备则不进行同步。</p>
<p> 设备通过 MLME-SYNC.request 原语来获取信标。如果该原语中指定对信标跟踪,设备将通过有规律且适时的激活接收机来试图获得信标并对其进行跟踪;否则,设备将只试图获取信标一次或者如果在前一次请求中进行了跟踪,则在下一个信标之后结束跟踪。</p>
<p> 要获取信标并进行同步,设备将打开接收机,并使之持续最多 [aBaseSuperframeDuration × (2n + 1)],其中 n 是 macBeaconOrder 的值。如果设备没有接收到包含当前 PAN 标识符的信标帧,其 MLME 将重复这个过程。一旦丢失信标帧的次数达到 aMaxLostBeacons,MLME 将用 MLME-SYNC-LOSS.indication 原语通知上层,并将丢失原因参数设置为 BEACON_LOST。</p>
<p> MLME 将在每一个所接收的信标帧的相同的符号边界处加上时间戳,其中符号的位置由属性 macSyncSymbolOffset 指定,且应当与存储在 macBeaconTxTime 中的输出信标帧所使用的时间戳相等。时间戳指的是在达到符号边界时的设备本地时钟时间。时间戳是一个相对的时间测量,即它可能是绝对的,也可能不是绝对的,这依赖于具体的实现。</p>
<p> 如果收到了受保护信标帧(即帧控制字段中的安全使能子字段为 1),设备将对信标帧进行如 7.2.3 节所述的非安全处理。</p>
<p> 如果非安全处理返回的状态不是 SUCCESS,MLME 将发送 MLME-COMM-STATUS.indication 原语(参考 6.2.4.2 节)来指示错误,并将其状态参数设置为非安全处理过程返回的状态。</p>
<p> 信标相应的 PAN 描述符(参考表 17)的安全相关部分应设置为由非安全处理过程返回的相应参数。若非安全处理过程的状态为 SUCCESS,PAN 描述符的 SecurityFailure 部分将设置为 SUCCESS,否则设置为非安全处理过程中指示的错误码。</p>
<p> 如果接收到了信标帧,但是其 MHR 中的源地址和源 PAN 标识符与协调器的源地址(macCoordShortAddress 或 macCoordExtendedAddress,具体选择哪一个依赖于寻址模式)和设备的 PAN 标识符不匹配,MLME 将丢弃该帧。</p>
<p> 如果收到有效信标帧,并且 macAutoRequest 设置为 FALSE,MLME 将通过发送 MLME-BEACON-NOTIFY.indication 原语把信标参数传递给上层。如果收到信标帧,且 macAutoRequest 设置为 TRUE,MLME 将首先发送 MLME-BEACON-NOTIFY.indication 原语(如果信标包含有效载荷),然后把它的地址同信标帧地址列表字段中的那些地址进行比较。如果地址列表字段中包含设备的短地址或者扩展地址,并且源 PAN 标识符和 macPANId 匹配,设备将从协调器中提取待处理的数据(参考 5.1.6.3 节)。</p>
<p> 如果信标跟踪被激活,MLME 将在下一个信标帧发送之前打开它的接收机,即在下一个超帧的已知开始时间之前打开接收机。如果 MLME 连续的丢失信标的数目达到 aMaxLostBeacons,MLME 将过 MLME-SYNC-LOSS.indication 原语作出响应,并将丢失原因设置为 BEACON_LOST。</p>
<p> 在图 21 中,上层发出了一个同步请求,并将 TrackBeacon 设为 FALSE,接着 MLME 将搜索信标帧。如果发现了信标帧,将判断协调器是否包含待处理数据。如果包含有待处理数据,将按照 5.1.6.3 节所述方法请求数据。</p>
<img alt="图 21. 与信标使能 PAN 的协调器同步(不跟踪信标)" data-align="center" data-entity-type="file" data-entity-uuid="266b83d2-c201-45a7-a5b6-96388d390b05" src="/sites/default/files/inline-images/%E5%9B%BE%2021.%20%E4%B8%8E%E4%BF%A1%E6%A0%87%E4%BD%BF%E8%83%BD%20PAN%20%E7%9A%84%E5%8D%8F%E8%B0%83%E5%99%A8%E5%90%8C%E6%AD%A5%28%E4%B8%8D%E8%B7%9F%E8%B8%AA%E4%BF%A1%E6%A0%87%29.png" />
<p>在图 22 中,上层发出了一个同步请求,并将 TrackBeacon 设为 TRUE,接着 MLME 将搜索信标帧。如果发现了信标帧,设备将使用一个定时器(预计下一个信标到来的前一刻)跟踪信标。</p>
<img alt="图 22. 与信标使能 PAN 的协调器同步(跟踪信标)" data-align="center" data-entity-type="file" data-entity-uuid="f965d547-9966-4199-acf4-3d98d6093697" src="/sites/default/files/inline-images/%E5%9B%BE%2022.%20%E4%B8%8E%E4%BF%A1%E6%A0%87%E4%BD%BF%E8%83%BD%20PAN%20%E7%9A%84%E5%8D%8F%E8%B0%83%E5%99%A8%E5%90%8C%E6%AD%A5%28%E8%B7%9F%E8%B8%AA%E4%BF%A1%E6%A0%87%29.png" />
<p><strong>5.1.4.2 不带有信标的同步</strong></p>
<p> 所有工作在不支持信标的 PAN (即 macBeaconOrder = 15)中的设备应能够根据上层的要求轮询协调器的数据。</p>
<p> 当 MLME 接收到 MLME-POLL.request 原语(参考 6.2.14.1 节)后,设备开始轮询协调器,并按照 5.1.6.3 节所述的方法从协调器中提取待处理数据。</p>
<p><strong>5.1.4.3 孤立设备重新连接</strong></p>
<p> 如果上层在请求发送数据之后接收到重复的通信失败信息,它将认为自己已被孤立。当设备事务未能到达协调器,即设备试图发送数据 macMaxFrameRetries 次后仍没有收到确认帧,则认为通信失败。如果上层得出自己已成为孤立设备,它将命令 MLME 执行孤立设备重新连接过程,或者复位 MAC 子层执行连接过程。</p>
<p> 如果上层决定执行孤立设备重新连接过程,它将发送 MLME-SCAN.request 原语,并将参数 ScanType 设置为孤立扫描、将参数 ScanChannel 设置为待扫描的信道列表。收到此原语后,MAC 子层立即开始按照 5.1.2.3 节所述的方式进行孤立扫描。</p>
<p> 如果孤立扫描成功(即 PAN 已被定位),设备将用包含在协调器重新连接命令中的 PAN 信息来更新它的 MAC PIB(参考 5.3.8 节)。</p>
<p>文章来源:http://iot-fans.xyz</p>
<ul>
</ul>