据包处一在发送状态当之前发出的数据包返回状态不为成功时或者物理层协议栈处于忙碌状态txFsm会保持空闲状态如果启动时发生错误会尝试重发数据直至超过设定的最大重试次数则不再处理进入空闲状态在启动正常的情况下如果收到应答帧或数据帧不要求应答则直接进入空闲状态如果超时后尚未收到应答帧则返回相应指示后进入空闲状态。
图313mac层发送状态机txFsm
主状态机macFsm的设计如图314所示主要是对命令和一些请求作出响应。该状态机负责发出各种类型的命令帧和数据帧。
接收到命令后状态机进入命令启动状态如果是上层
f要求发送普通的数据帧则交给底层等待发送确定发送完成后回到空闲状态如果收到的是错误的服务请求也即虚拟服务则不作处理直接回到空闲状态。
接收到的其它类型信令帧主要分为三种信标帧、孤儿节点请求加入帧和网络请求加入帧。
如果网络中有节点由于掉电等原因而重启子节点将会断开与之前绑定的父节点之间的连接成为孤儿节点这时需要重新与父节点进行绑定发出的信令帧即孤儿请求。收到孤儿请求后状态机进入处理孤儿请求状态如果该孤儿节点的地址不在父节点的邻居表中说明这不是该父节点的孤儿父节点不予处理进入空闲状态如果是该父节点的孤儿则记录该孤儿节点的地址发出应答等待孤儿节点的回应。不论是收到孤儿节点成功加入的回应或者超时后仍没收到孤儿节点的应答状态机均进入空闲状态。
如果收到的是信标帧说明有RFd希望加入网络。RFd由于不能作为父节点对收到的消息不予处理。FFd和Router收到信标帧后从mac_pib中查找
macassociatio
permit参数这个参数决定了该节点是否允许其它节点加入如果可以有节点加入就进入发送信标响应的状态然后将自已的pa
id和短地址等信息发送给请求加入的节点。
另外一种信令帧是网络请求加入帧用于从星形网络建
f立树簇网络的过程中。RFd不具有建立网络间连接的能力收到这种信令帧后不作处理。FFd和Router收到加入请求后从mac_pib中查找控制本节点是否可以加入其它网络的macassociatio
permit参数若参数设置为允许加入则进入发送加入响应的状态。然后以信令帧的来源长地址为目标地址将自己的pa
id发送给请求加入的节点并进入等待加入请求回应的状态。这时不论在限定时间内收到了应答或者由于超时等因素致使加入失败状态机都会进入空闲状态等待下一个任务。
图314mac层主状态机macFsm
mac层使用csmaca机制解决信道访问时的冲突需要做信道选择和连接建立等工作同时还要处理和维护保护时隙gtsguara
teedtimeslot检测冲突r