📄 hh_nwk.c
字号:
#include "include.h"
UINT8 NLDEDATA_request(WORD nwkFrameControlField, WORD destAddr, WORD srcAddr, BYTE radiusCounter, BYTE dataSeqNumber, UINT8 nsduLength, BYTE *nsdu, BYTE txOption)
{
// while(gMACTxFrameInfo.msduStatus);
gMACTxFrameInfo.msdu[0] = nwkFrameControlField;
gMACTxFrameInfo.msdu[1] = nwkFrameControlField >> 8;
gMACTxFrameInfo.msdu[2] = destAddr;
gMACTxFrameInfo.msdu[3] = destAddr >> 8;
gMACTxFrameInfo.msdu[4] = srcAddr;
gMACTxFrameInfo.msdu[5] = srcAddr >> 8;
gMACTxFrameInfo.msdu[6] = radiusCounter;
gMACTxFrameInfo.msdu[7] = dataSeqNumber;
for(int i=0;i<nsduLength;i++)
{
gMACTxFrameInfo.msdu[i+8] = *(nsdu+i);
}
gMACTxFrameInfo.msduLength = nsduLength + NWK_aDataFrameOverheadSize;
gMACTxFrameInfo.msduStatus = TRUE;
BYTE frameType=MAC_FCF_DATA;
BOOL securityEnabled=FALSE, framePending=FALSE, ackRequest, intraPan=TRUE ,beaconrequest;
if(txOption == MAC_TXOPTION_ACKTRANSMISSION)
{
ackRequest = TRUE;
}
else
{
ackRequest = FALSE;
}
/*///////信标条件//////
if(txOption == MAC_TXOPTION_GTSTRANSMISSION)
{
beaconrequest = TRUE;
}
else
{
beaconrequest = FALSE;
}
*///////////////////
WORD addrMode=MAC_FCF_SHORTADDR;
WORD macFrameControlField;
macFrameControlField = frameType;
if(securityEnabled)
{
macFrameControlField |= BM(MAC_FCF_SECURITYENABLED);
}
if(framePending)
{
macFrameControlField |= BM(MAC_FCF_FRAMEPENDING);
}
if(ackRequest)
{
macFrameControlField |= BM(MAC_FCF_ACKREQUEST);
}
if(intraPan)
{
macFrameControlField |= BM(MAC_FCF_INTRAPAN);
}
/////// 信标类型/////////////
// if(beaconrequest)
// {
// macFrameControlField |= BM(MAC_FCF_BEACON);
// }
macFrameControlField |= addrMode;//10001000
WORD panId=PANID;
macFrameControlField =0x8040;
return Beacon_MCPSDATA_request(macFrameControlField, dataSeqNumber, panId, destAddr, srcAddr, gMACTxFrameInfo.msduLength, gMACTxFrameInfo.msdu, txOption);
}
/*
void NLDEDATA_indication()
{
BOOL ackReceived;
WORD framecontrolfield;
UINT8 dsicoverRoute;
BOOL security;
UINT16 destAddr, srcAddr;
UINT8 radiusCounter;
UINT8 dataSeqNumber;
UINT8 nsduLength;
BYTE *nsdu;
BOOL nsduStatus;
if(gMACRxFrameInfo.msduStatus)
{
while(pNWKRxFrameInfo->nsduStatus);
if(gMACRxFrameInfo.ackReceived)
{
ackReceived = TRUE;
gMACRxFrameInfo.ackReceived = FALSE;
}
else
{
framecontrolfield = (gMACRxFrameInfo.msdu[0] << 8) | gMACRxFrameInfo.msdu[1];
destAddr = (gMACRxFrameInfo.msdu[2] << 8) | gMACRxFrameInfo.msdu[3];
srcAddr = (gMACRxFrameInfo.msdu[4] << 8) | gMACRxFrameInfo.msdu[5];
radiusCounter = gMACRxFrameInfo.msdu[6];
dataSeqNumber = gMACRxFrameInfo.msdu[7];
nsduLength = gMACRxFrameInfo.msduLength - NWK_aFrameOverheadSize;
for(int i=0;i<nsduLength;i++)
{
nsdu[i] = gMACRxFrameInfo.msdu[i+8];
}
nsduStatus = TRUE;
gMACRxFrameInfo.msduStatus = FALSE;
}
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -