网络层数据流程原语说明
1.数据发送部分原语
APSDE-DATA.request(
DstAddrMode, //目的地址寻址模式,0x01=16位短地址
DstAddress, //ASDU目的实体设备地址
DstEndPoint, //ASDU目的实体的断点地址
ProfiledId, //该帧应配置的文件标识
ClusterId, //间接寻址时绑定操作中所用对象的标识
SrcEndpoint, //发送ASDU源端点地址
asduLength, //ASDU长度字节数
asdu, //
TxOptions //发送选项
DiscoverRounter,//指定路由发现时采取的措施
RadiusCounter //允许广播帧在网络中传播的跳数
)
APSDE-SAP服务接口实现了在对等的应用实体之间传输应用协议数据单元。APS数据请求原语APSDE-DATA.request请求吧本地NHLE的一个PDU(即ASDU)传输到对等的NHLE实体。当本地NHLE有数据(PDU)需要传输时,就会产生该原语,数据可以采用直接寻址方式发送以及数据加密服务。
NLDE-DATA.request(
DstAddr, //NSDU目的设备地址
NsduLength, //NSDU字节数
Nsdu, //要发送的NSDU
NsduHandle, //NSDU相关句柄
BroadcastRadius, //允许广播帧传输距离
DiscoverRoute, //路由发现
SeurityEnable //信息安全处理
)
本地应用支持层生成该原语,用来传送一个NSDU数据包到对等的应用支持层,原语参数如上所示。
本地网络层数据实体收到该原语后,为传送NSDU包,需要先构造一个NPDU包(网络层协议数据单元)DstAddr的值不为0xFFFF将忽略BroadcastMode和BrocastRadiuds这两个参数。构造好NSDU包后将为NSDU包确定传输路由,确定了NSDU包的传输路由后,通过MCPS-DATA.request原语来发送NSDU包。该原语定义如下:
MCPS-DATA.request(
SrcAddrMode, //MPDU源地址模式0x02=16位短地址
SrcPANId, //源MSDU实体16位PAN标识符
SrcAddr, //源MSDU实体的独立设备地址
DstAddrMode, //MPDU目标地址模式,0x02=16位短地址
DstPanId, //目标MSDU实体的16位PAN标识符
DstAddr, //目标MSDU实体的独立设备地址
msduLength, //MAC层实体发送的MSDU字节数
msdu, //MSDU,MAC层数据服务单元
msduHandle, //MAC层实体发送的MSDU相关句柄
TxOptions, //MSDU传输选项,0x01=应答模式
)
在本原语中,参数SrcAddrMode和DstAddrMode都设为0x02,即使用16为网络地址;SrcPanId和DstPanId参数应设为MAC PIB中的macPANId的值;SrcAddr参数值设为MAC PIB中的macShortAddr值;DstAddr参数值为由由程序所决定的下一跳的地址;TxOptions参数与0X01或运算,所得到的结果非零,表示此次发送需要确认。在网络层实体接收到MCPS-DATA.confirm原语后,网络层实体发送NLDE-DATA.confirm原语,该原语中的参数状态为MAC层所接受到的状态。
如果网络层信息数据库(NIB)中所确定的网络安全级别为一个标准为非零值,并且SecurityEnable值为TRUE,则在帧发送之前,网络层将会对帧进行安全处理。否则,网络层不对该帧进行安全处理。
MAC层数据实体在接收到MSDU后,将构造MPDU(MAC层协议数据单元),具体方法是在MSDU前加上帧头MHR,在MSDU后加上帧尾,即MPDU=MHR+MSDU+MFR
在发送连接请求之前,MAC层管理实体先向网络层发送一个带有TX_On的PLME_STE_TRX_STATE.request原语以激活发射机,当MAC层管理实体收到带有SUCCESS或TX_ON状态的PLME_STE_TRX_STATE.confirm原语后,MAC层实体将向物理层发送PD-DATA.request原语发送MPDU。
PD-DATA.request(
psduLength, //PSDU字节数
psdu, //PSDU
)
物理层实体在接收到PSDU后,物理层实体将构造网络层协议数据单元PPDU,然后通过发射机将PPDU送出。具体方法是PPDU=SHR+PHR。其中:MHR是同步码序列,PHR是PSDU的长度。
2.数据接收部分原语
PD-DATA.indication(
psduLength, //网络层实体接包PSDU字节数
psdu, //网络层实体接收字节构成的PSDU
ppduLinkQuality //PPDU接收中测试链路品质(LQ)
)
物理层利用PD-DATA.indication原语想本地MAC层实体传送一个MPDU(即PSDU),其中:参数psduLength=0或者psduLength>aMaxPHYPacketSize时,表示没有数据或数据有误,就不会生产该原语。
MCPS-DATA.indication(
SrcAddrMode, //MPDU源地址模式0x02=16位短地址
SrcPANId, //源MSDU实体16位PAN标识符
SrcAddr, //源MSDU实体的独立设备地址
DstAddrMode, //MPDU目标地址模式,0x02=16位短地址
DstPanId, // MSDU目的实体的16位PAN标识符
DstAddr, //MSDU目的实体的独立设备地址
msduLength, //MAC层实体发送的MSDU字节数
msdu, //MAC层和实体所指定的MSDU
msduLinkQuality, //接受MSDU时所测得的LQ值
SecurityUse, //是否使用安全机制
ACLEntry //与数据端相关的ACL入口的maxSecurutyMode参数值,如果在ACL中未找到数据帧的发送方,此值设为0x08
)
当MAC层管理实体接收到远方传来的数据帧后,通过该原语MAC层将接收到的数据帧进行适当的信息过滤后,发送至服务协议汇聚层(SSCS)。当服务协议汇聚层(SSCS)收到MCPS-DATA.indication原语时,就能够得知所发生的数据已到达设备,并表示已经成功地接受到来远方发送来的数据信息。
NLDE-DATA.indication(
DstAddress, //生成NSDU包的设备地址
NsduLength, //NSDU字节数
Nsdu, //要发送的NSDU
LinkQuality //链路质量指示,来自MAC层
)
当本地MAC层实体接收到一个适当的地址数据帧时,就生成该原语,并发送给应用支持层。
APSDE-DATA. indication(
DstEndPoint, //ASDU目的实体的断点地址
SrcAddrMode, //源地址寻址模式,0x01=16位短地址
SrcAddress, //ASDU实体设备地址
SrcEndpoint, //发送ASDU源端点地址
ProfiledId, //该帧应配置的文件标识
ClusterId, //间接寻址时绑定操作中所用对象的标识
asduLength, //ASDU长度字节数
asdu, //ASDU内容
WasBroadcast //枚举,广播=TRUE;其它=FALSE
SecurityStatus //枚举,加密
)
本原语用来指示一个数据PDU从APS子层传送到本地应用层实体。
3.应答原语
如果最终接收方收到的帧的确认请求(AR=1)子域为1,则它需要对接收帧进行确认。如果接收方正确接收到要求确认的帧,它将产生并向发送方发送一个确认帧。如果是间接传输模式,则Zigbee协调器将产生并向此次数据发送的发起方发送一个确认帧,然后在每一次信息转发时都把数据帧帧控制字段的确认请求子域置为1,要求接收者对于转发的帧进行确认。
对于发送据发送的应答(ACK)时从APS应用子层开始的。APS确认帧只有帧头部分,它包含帧控制、簇标识和配置文件标识字段。
PD-DATA.indication(
psduLength, //PSDU字节数
psdu, //PSDU
psduLinkQuality //从接受数据单元中测试链路品质
)
当物理层收到远方发送过来的确认帧(ACK)后,通过该原语吧收到的数据送给MAC层,MAC层收到PD-DATA.indication原语后,即可获得物理层所接收到的额数据信息。
MCPS-DATA.confirm(
msduHandle, //MAC层实体发送的MSDU字节数
Status, //最后一次传输MSDU的结果状态
)
本语句有MAC层实体生成,并发给MAC层的服务协议汇聚层实体,该原语返回一个对MCPS-DATA.request的响应,指示发送请求状态为成功(SUCCESS)。
NLDE-DATA. confirm(
NsduHandle, //NSDU相关句柄
Status //相应请求的状态
)
该原语为本地网络层数据实体对对接受到的NLDE-DATA. request原语而参数的响应,指示发送请求状态为成功(SUCCESS)。
APSDE-DATA.confirm(
DstAddrMode, //目的地址寻址模式,0x01=16位短地址
DstAddress, //ASDU目的实体设备地址
DstEndPoint, //ASDU目的实体的断点地址
SrcEndpoint, //发送ASDU源端点地址
Status //请求状态(SUCCESS)
)
APSDE-DATA.confirm原语由APS子层实体产生,作为对APSDE-DATA.request的相应。SUCCESS状态指示请求发送成功。