Zigbee MAC层 服务功能描述
?
?
MAC层管理服务一: 关联原语上面步骤为设备和协调器同步的流程。其中I是同步单个信标的情况,设备找到信标后判断协调器中是否有需要传送给自己的数据,如果有,就请求获取数据。
II是跟踪信标的情况,设备在找到一个信标后,设置定时器刚好技术到下一个信标预期出现的时间之前以跟踪信标,在收到信标后,设备同样检查协调器上是否要递交给自己的数据。
十二:轮询原语MLME-POLL?????? 定义设备向协调器请求数据的过程。各种类型设备都应该支持轮询原语。轮询原语包括轮询请求和轮询证实。
?????? 轮询请求原语由设备上层发送给MLME,用以向协调器请求数据。语法为
?????? MLME-POLL.request(CoordAddrMode,CoordPANId,CoordAddress,SecurityEnable)
?????? 接收到MLME-POLL,request原语,MLME产生并发送一个数据请求命令。如果是向PAN协调器请求数据,则数据请求命令中不含任何目的地址信息;否则数据请求命令携带参数CoordPANId和CoordAddress中的目的地址信息。
?????? 如果CSMA算法失败而不能发送数据请求命令,MLME就向上层发出状态为CHANNEL_ACCESS_FAILURE的轮询证实原语MLME-POLL.confirm
?????? 设备向协调器请求数据流程步骤:
I
(1)??????AH 向AL发送MLME-POLL.request
(2)??????AL向协调器发送数据请求
(3)??????协调器向AL发送ACK(无数据)
(4)??????AL向AH发送MLME-POLL.confirm
II
(5)?????AH 向AL发送MLME-POLL.request
(6)??????AL向协调器发送数据请求
(7)??????协调器向AL发送ACK(有数据)
(8)??????协调器向AL发送数据帧
(9)??????AL向协调器发送ACK
(10)??AL向AH发送MLME-POLL.confirm
十二 事务处理?????? 功率受限的设备可能要求由设备来传输事务而不是协调器。换句话说,要么当协调器中有数据传输等待设备接收时就在信标中指示。要么需要设备自身轮询协调器以探测是否有数据要接收。这两种方式称作“间接传输”;
?????? 当协调器收到数据请求原语或收到来自MLME的发送MAC命令请求,如关联响应原语,就开始处理接收间接传输请求的事务,事务处理完成后,MAC层要向其高层指示一个状态值,如果是请求原语启动的间接传输,则相应的证实原语用来传递状态信息,相反,如果是相应原语启动的间接传输,则用通信状态指示原语MLME-COMM-STATUS.indication来传递状态信息。
?????? 包含在间接传输请求中的信息构成一个事物,协调器至少能够存储一个事物。当接收到间接传输请求时,如果协调器没有足够的空间来存储事物,则MAC层向上层发出状态为TRANSACTION-OVERFLOW(事务溢出)的MLME-COMM-STATUS.indication原语。
?????? 如果协调器能够存储多个事物,则同一个设备的多个事物应该按照他们到达MAC层先后顺序发送,每发送一个事物,如果列表中还有同一个色还不的其他事物,则MAC层置待处理帧子域为1,表示协调器中还有数据等待该设备接收。
?????? 每个事物在协调器中驻留的时间最多为macTransactionPersistenceTime。如果事务在这个时间内没有被响应的设备取走,则事务信息将被废弃,并且MAC层向其上层发出状态为TRANSACTION_EXPIRED(事务过期)的MLME-COMM-STATUS.indication原语
?????? 如果协调器发送信标。它就把每个事务关联的地址存放在信标帧的地址列表字段中,把总的地址数存放在待处理地址配置字段中。如果协调器能够存储7个以上的事务,则它以先到先服务的原则在信标中指示这些事务,以保证信标帧地址列表最多只有7个地址。对要求GTS的事务,PAN协调器不应该把它的地址加入信标帧地址列表中,而是在分配给相应设备的GTS上传输这些事务。
?????? 在支持信标的PAN中。当设备接收到的信标帧的地址列表中有该设备的地址时,设备将向协调器索取数据,在不支持信标的PAN中,当接收到轮询请求原语时,设备就尝试向协调器索取数据。
?????? 事务处理完成后,从协调器存储空间中删除事务相关信息,并向MAC上层报告数据传输的结果。如果事务要求确认但还没收到确认,则MAC层指示状态为NO_ACK;如果事务传输成功,则MAC层指示状态为SUCCESS;
?