mac.c

来自「自己写的无线sinffer,可以通过串口查看空间内所有无线数据」· C语言 代码 · 共 69 行

C
69
字号
#include "mac.h"
#include<stdlib.h>

extern volatile BYTE RxStatus;
extern volatile BYTE TxStatus;

__no_init TX_PACKET_STRUCT txData @ "PM0_XDATA";

void MacInit(void)
{
   txData.srcAddress.lowaddress=SHORTADDRL;
   txData.srcAddress.highaddress=SHORTADDRH;
   txData.destpanid.low=PANIDL;
   txData.destpanid.high=PANIDH;
   txData.srcpanid.low=PANIDL;
   txData.srcpanid.high=PANIDH;
   txData.dsn=0;
}


BOOL SendFrame(UINT16 destAddress)
{
   BOOL status = TRUE;
   BYTE retries;
   BYTE res;


   txData.destAddress.lowaddress= destAddress&0x00FF;
   txData.destAddress.highaddress=(destAddress>>8)&0x00ff;
   txData.srcAddress.lowaddress=SHORTADDRL;
   txData.srcAddress.highaddress=SHORTADDRH;
   txData.destpanid.low=PANIDL;
   txData.destpanid.high=PANIDH;
   txData.srcpanid.low=PANIDL;
   txData.srcpanid.high=PANIDH;
   txData.dsn+=1;
   txData.dsn%=100;
   txData.fcf.low=1;
   txData.fcf.high=0x88;

   retries = RETRYNUM;  	//重试3次
   txData.payloadLength = 0;
   while(retries)
   {
      res = SendPacket(&txData);
      if(res == FALSE)
      {
         retries--;
         if(retries == 0)
         {
            status = FALSE;
         }
      }
      else
      {
         retries = 0;
      }
   }
   //ReceivePacket(&rxData1); //发完就跳到接收
      //while(sppTxStatus == TX_IN_PROGRESS);//有TX_IN_PROGRESS,就一定会有RF中断发生,就会sppTxStatus变成TX_SUCCESSFUL的

   return status;
}

BOOL ReceiveFrame(BYTE** receiveData, BYTE* length, WORD timeout)
{
   return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?