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

📄 mac.h

📁 该演示程序实现温度的采集与显示功能
💻 H
📖 第 1 页 / 共 2 页
字号:

#ifndef MAC_H
#define MAC_H




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////// 公用相关配置 ///// ////////////////////////////////////////////////////////////////////////////////////
#define USE_TAGRSSI  //是否使用标签RSSI


 #define SMALLMODULE

 #define IAMTAG
//#define IAMSENSOR



#ifdef IAMTAG
   #define BAUD_RATE  (57600)   // (9600)//      (19200)//(115200)//
   #define REPDUBUGINFO       //是否显示调试信息(上报调试用的字符串等信息)
#else
   #define BAUD_RATE  (9600)//  (57600)   //     (19200)//(115200)//
   #define REPDUBUGINFO       //是否显示调试信息(上报调试用的字符串等信息)
#endif

#define DEFAULTID (1027)    //ID//
#define COMMCHANNEL  26     //公用信道(11-26)
#define DEBUGCHANNEL 25     //调试信道(11-26)


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////// 标签相关配置 ///// //////////////////////////////////////////////////////////////////////////////////

#define TAG_TXPOWER 7    //(0~7) //标签发送功率
////
//#define CC2420PHYSLEEP  //是否为关断休眠(物理休眠)
#define CAPTAINSLEEP
#define MEMBERSLEEP
//
//
//#define ADDITIONALLISTEN
#define AUTOCHANGECAPTAIN
#define MEMBERACKANYCAPTAIN

#define EVERYCALLINGTIMESREPLACE 5 //每几轮点名后进行一次更换团长




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////// 探头相关配置 ////////////////////////////////////////////////////////////////////////////////////////////
#define AUTO_REPORTDATA
//#define REPORTALLGROUPDATA
#define   REPORTSINGLEGROUPDATA

//#define   REPDATATOSTATION
#define REPDATATOCOMPUTER
#define USEHARDWAREADDR
#define SENSOR_TXPOWER 7 //0-7  发送功率



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


#define MAXGROUP  6

#define MINCHANNEL  11
#define MAXCHANNEL  26


#define  MAX_GROUPMENBER_NUM    (100)
#define  MAX_GROUPINSENSOR_NUM  (10)


#define TAG_LEAVEGROUPTIME      (CAPTAIN_MAXCALLINGTIME*3)
#define TAG_STARTUPWAITTIME     (1000)
#define TAG_JOINREQTIMEOUT      (100)

#define CAPTAIN_MAXCALLINGTIME  (2000)
#define CAPTAIN_UNITEERQTIMEOUT (300)
#define CAPTAIN_TAGCONNTIMEOUT  (4500)
#define CAPTAIN_BROADCASTTIME   (2000)
#define CAPTAIN_CALLINGTIMEOUT  (100)
#define CAPTAIN_SENDDATATOSENSORTIME (400)
#define CAPTAIN_RESENDDATATOSENSORINTERVAL (140)

#define SENSOR_BROADCASTTIME    (100)
#define SENSOR_GROUPCONNTIMEOUT (5000)
#define SENSOR_REPORTTIME       (500)





#define MAC_DST_NO_ADDR             (0x00)
#define MAC_DST_SHORT_ADDR          (0x08)
#define MAC_DST_LONG_ADDR           (0x0c)
#define MAC_DST_ADDR_RESERVED       (0x04)

#define MAC_SRC_NO_ADDR             (0x00)
#define MAC_SRC_SHORT_ADDR          (0x80)
#define MAC_SRC_LONG_ADDR           (0xc0)
#define MAC_SRC_ADDR_RESERVED       (0x40)

#define MAC_FRAME_TYPE_MASK         (0x03)
#define MAC_FRAME_BEACON            (0x00)
#define MAC_FRAME_DATA              (0x01)
#define MAC_FRAME_ACK               (0x02)
#define MAC_FRAME_CMD               (0x03)

#define MAC_CMD_ASSOCIATE_REQ       (0x01)
#define MAC_CMD_ASSOCIATE_RPLY      (0x02)
#define MAC_CMD_DISASSOCIATE_NOTICE (0x03)
#define MAC_CMD_DATA_REQ            (0x04)
#define MAC_CMD_PAN_ID_CONFLICT     (0x05)
#define MAC_CMD_ORPHAN_NOTICE       (0x06)
#define MAC_CMD_BEACON_REQ          (0x07)
#define MAC_CMD_COORD_REALIGNMENT   (0x08)
#define MAC_CMD_GTS_REQ             (0x09)
#define MAC_FRAME_INVALID           (0x07)
#define MAC_SECURITY_YES            (0x08)
#define MAC_SECURITY_NO             (0x00)
#define MAC_FRAME_PENDING_YES       (0x10)
#define MAC_FRAME_PENDING_NO        (0x00)
#define MAC_ACK_YES                 (0x20)
#define MAC_ACK_NO                  (0x00)
#define MAC_INTRA_PAN_YES           (0x40)
#define MAC_INTRA_PAN_NO            (0x00)
#define MAC_BEACON_YES              (0x40)
#define MAC_BEACON_NO               (0x00)



#define MACSetLongAddrByte0(b)          (macInfo.longAddr.v[0] = b)
#define MACSetLongAddrByte1(b)          (macInfo.longAddr.v[1] = b)
#define MACSetLongAddrByte2(b)          (macInfo.longAddr.v[2] = b)
#define MACSetLongAddrByte3(b)          (macInfo.longAddr.v[3] = b)
#define MACSetLongAddrByte4(b)          (macInfo.longAddr.v[4] = b)
#define MACSetLongAddrByte5(b)          (macInfo.longAddr.v[5] = b)
#define MACSetLongAddrByte6(b)          (macInfo.longAddr.v[6] = b)
#define MACSetLongAddrByte7(b)          (macInfo.longAddr.v[7] = b)
#define MACGetLongAddrByte0()           (macInfo.longAddr.v[0])
#define MACGetLongAddrByte1()           (macInfo.longAddr.v[1])
#define MACGetLongAddrByte2()           (macInfo.longAddr.v[2])
#define MACGetLongAddrByte3()           (macInfo.longAddr.v[3])
#define MACGetLongAddrByte4()           (macInfo.longAddr.v[4])
#define MACGetLongAddrByte5()           (macInfo.longAddr.v[5])
#define MACGetLongAddrByte6()           (macInfo.longAddr.v[6])
#define MACGetLongAddrByte7()           (macInfo.longAddr.v[7])
#define MACSetShortAddrLSB(b)           (macInfo.shortAddr.byte.LSB = b)
#define MACSetShortAddrMSB(b)           (macInfo.shortAddr.byte.MSB = b)
#define MACGetShortAddrLSB()            (macInfo.shortAddr.byte.LSB)
#define MACGetShortAddrMSB()            (macInfo.shortAddr.byte.MSB)
#define MACSetPANIdLSB(b)               (macInfo.panID.byte.LSB = b)
#define MACSetPANIdMSB(b)               (macInfo.panID.byte.MSB = b)
#define MACGetPANIdLSB()                (macInfo.panID.byte.LSB)
#define MACGetPANIdMSB()                (macInfo.panID.byte.MSB)


#define aMaxBE 5
#define aMinBE 0
#define aUnitBackoffPeriod 20        //in symbols
#define macMaxCSMABackoffs 4


#define MAC_RXBUFF_SIZE LRWPAN_MAX_MAC_RX_PKTS+1

typedef struct _MAC_PIB {
	UINT32 macAckWaitDuration;
	union _MAC_PIB_flags {
		UINT32 val;
		struct {
			unsigned macAssociationPermit:1;
			unsigned macAutoRequest:1;
			unsigned macBattLifeExt:1;
			unsigned macGTSPermit:1;
			unsigned macPromiscousMode:1;
			unsigned macPanCoordinator:1;
			unsigned ackPending:1;
			unsigned TxInProgress:1;   //MAC TX FSM state
			unsigned GotBeaconResponse:1;      //set to a '1' when get Beacon Response
			unsigned WaitingForBeaconResponse:1; //set to '1' when waiting for Response
			unsigned macPending:1;       //mac CMD pending in the RX buffer
			unsigned macIsAssociated:1;
			unsigned WaitingForAssocResponse:1;
			unsigned GotOrphanResponse:1;
			unsigned WaitingForOrphanResponse:1;

		}bits;
	}flags;
	LADDR macCoordExtendedAddress;
	SADDR macCoordShortAddress;
	UINT16 macPANID;
	BYTE macDSN;
	BYTE depth;            //depth in the network
	BYTE macCapInfo;
    //BYTE macMaxAckRetries;
	struct  {
		unsigned maxMaxCSMABackoffs:3;
		unsigned macMinBE:2;
	}misc;
	UINT32 tx_start_time;    //time that packet was sent
      UINT32 last_data_rx_time;    //time that last data rx packet was received that was accepted by this node

    BYTE bcnDepth;
	SADDR bcnSADDR;
	UINT16 bcnPANID;
	BYTE bcnRSSI;

	//BYTE currentAckRetries;
	BYTE rxTail;             //tail pointer of rxBuff
    BYTE rxHead;             //head pointer of rxBuff
	//fifo for RX pkts, holds LRWPAN_MAX_MAC_RX_PKTS
	MACPKT  rxBuff[MAC_RXBUFF_SIZE];  //buffer for packets not yet processed

}MAC_PIB;



typedef struct _MAC_RX_DATA {
	MACPKT *orgpkt;       //original packet
	BYTE fcflsb;
	BYTE fcfmsb;
	UINT16 DestPANID;
	LADDR_UNION DestAddr; //dst address, either short or long
	UINT16 SrcPANID;
	LADDR_UNION SrcAddr;  //src address, either short or long
	BYTE pload_offset;    //start of payload
}MAC_RX_DATA;

typedef struct _MAX_TX_DATA {
	UINT16 DestPANID;
	LADDR_UNION DestAddr; //dst address, either short or long
	UINT16 SrcPANID;
	SADDR SrcAddr;         //src address, either short or long, this holds short address version
	                       //if long is needed, then get this from HAL layer
	BYTE fcflsb;          //frame control bits specify header bits
	BYTE fcfmsb;
	union  {
		BYTE val;
		struct _MAC_TX_DATA_OPTIONS_bits {
			unsigned gts:1;
			unsigned indirect:1;
		}bits;
	}options;		
}MAC_TX_DATA;


typedef struct _LONG_ADDR
{
    BYTE v[8];
} LONG_ADDR;

typedef union _SHORT_ADDR
{
    struct
    {
        BYTE LSB;
        BYTE MSB;
    } byte;
    WORD Val;
    BYTE v[2];
} SHORT_ADDR;


typedef SHORT_ADDR PAN_ADDR;



extern MAC_PIB mac_pib;

⌨️ 快捷键说明

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