⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hh_nwk.c

📁 zigbee中心节点源代码
💻 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 + -