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

📄 ieee_lrwpan_defs.h

📁 本程序是基于Zigbee协议的无线温度传感器网络系统
💻 H
字号:
/*
 *2006/08/16 WXL 2.0
 *
 */

/*
V0.2 added PC-based binding         21/July/2006
V0.1 Initial Release                10/July/2006

*/


#ifndef IEEE_LRWPAN_DEFS_H
#define IEEE_LRWPAN_DEFS_H
//IEEE 802.15.4 Frame definitions here

#define LRWPAN_BCAST_SADDR       0xFFFF
#define LRWPAN_BCAST_PANID       0xFFFF
#define LRWPAN_SADDR_USE_LADDR   0xFFFE

#define LRWPAN_ACKFRAME_LENGTH 5

#define LRWPAN_MAX_MACHDR_LENGTH 23
#define LRWPAN_MAX_NETHDR_LENGTH 8
#define LRWPAN_MAX_APSHDR_LENGTH 5

#define LRWPAN_MAXHDR_LENGTH (LRWPAN_MAX_MACHDR_LENGTH+LRWPAN_MAX_NETHDR_LENGTH+LRWPAN_MAX_APSHDR_LENGTH)



#define LRWPAN_MAX_FRAME_SIZE 127

#define LRWPAN_FRAME_TYPE_BEACON 0
#define LRWPAN_FRAME_TYPE_DATA 1
#define LRWPAN_FRAME_TYPE_ACK 2
#define LRWPAN_FRAME_TYPE_MAC 3

//BYTE masks
#define LRWPAN_FCF_SECURITY_MASK 0x8
#define LRWPAN_FCF_FRAMEPEND_MASK 0x10
#define LRWPAN_FCF_ACKREQ_MASK 0x20
#define LRWPAN_FCF_INTRAPAN_MASK 0x40



#define LRWPAN_SET_FRAME_TYPE(x,f)     (x=x|f)
#define LRWPAN_GET_FRAME_TYPE(x)     (x&0x03)

#define LRWPAN_SET_SECURITY_ENABLED(x) BITSET(x,3)
#define LRWPAN_SET_FRAME_PENDING(x)    BITSET(x,4)
#define LRWPAN_SET_ACK_REQUEST(x)      BITSET(x,5)
#define LRWPAN_SET_INTRAPAN(x)         BITSET(x,6)

#define LRWPAN_CLR_SECURITY_ENABLED(x) BITCLR(x,3)
#define LRWPAN_CLR_FRAME_PENDING(x)    BITCLR(x,4)
#define LRWPAN_CLR_ACK_REQUEST(x)      BITCLR(x,5)
#define LRWPAN_CLR_INTRAPAN(x)         BITCLR(x,6)

#define LRWPAN_GET_SECURITY_ENABLED(x) BITTST(x,3)
#define LRWPAN_GET_FRAME_PENDING(x)    BITTST(x,4)
#define LRWPAN_GET_ACK_REQUEST(x)      BITTST(x,5)
#define LRWPAN_GET_INTRAPAN(x)         BITTST(x,6)


#define LRWPAN_ADDRMODE_NOADDR 0
#define LRWPAN_ADDRMODE_SADDR  2
#define LRWPAN_ADDRMODE_LADDR  3

#define LRWPAN_GET_DST_ADDR(x) ((x>>2)&0x3)
#define LRWPAN_GET_SRC_ADDR(x) ((x>>6)&0x3)
#define LRWPAN_SET_DST_ADDR(x,f) (x=x|(f<<2))
#define LRWPAN_SET_SRC_ADDR(x,f) (x=x|(f<<6))

#define LRWPAN_FCF_DSTMODE_MASK   (0x03<<2)
#define LRWPAN_FCF_DSTMODE_NOADDR (LRWPAN_ADDRMODE_NOADDR<<2)
#define LRWPAN_FCF_DSTMODE_SADDR (LRWPAN_ADDRMODE_SADDR<<2)
#define LRWPAN_FCF_DSTMODE_LADDR (LRWPAN_ADDRMODE_LADDR<<2)

#define LRWPAN_FCF_SRCMODE_MASK   (0x03<<6)
#define LRWPAN_FCF_SRCMODE_NOADDR (LRWPAN_ADDRMODE_NOADDR<<6)
#define LRWPAN_FCF_SRCMODE_SADDR (LRWPAN_ADDRMODE_SADDR<<6)
#define LRWPAN_FCF_SRCMODE_LADDR (LRWPAN_ADDRMODE_LADDR<<6)

#define LRWPAN_IS_ACK(x) (LRWPAN_GET_FRAME_TYPE(x) == LRWPAN_FRAME_TYPE_ACK)
#define LRWPAN_IS_BCN(x) (LRWPAN_GET_FRAME_TYPE(x) == LRWPAN_FRAME_TYPE_BEACON)
#define LRWPAN_IS_MAC(x) (LRWPAN_GET_FRAME_TYPE(x) == LRWPAN_FRAME_TYPE_MAC)
#define LRWPAN_IS_DATA(x) (LRWPAN_GET_FRAME_TYPE(x) == LRWPAN_FRAME_TYPE_DATA)

//The ASSOC Req and Rsp are not 802 compatible as more information is
//added to these packets than is in the spec.

#ifdef IEEE_802_COMPLY
#define LRWPAN_MACCMD_ASSOC_REQ       0x01
#define LRWPAN_MACCMD_ASSOC_RSP       0x02
#else
#define LRWPAN_MACCMD_ASSOC_REQ       0x81
#define LRWPAN_MACCMD_ASSOC_RSP       0x82
#endif

#define LRWPAN_MACCMD_DISASSOC        0x03
#define LRWPAN_MACCMD_DATA_REQ        0x04
#define LRWPAN_MACCMD_PAN_CONFLICT    0x05
#define LRWPAN_MACCMD_ORPHAN          0x06
#define LRWPAN_MACCMD_BCN_REQ         0x07
#define LRWPAN_MACCMD_COORD_REALIGN   0x08
#define LRWPAN_MACCMD_GTS_REQ         0x09

#ifdef IEEE_802_COMPLY
#define LRWPAN_MACCMD_ASSOC_REQ_PAYLOAD_LEN 2
#define LRWPAN_MACCMD_ASSOC_RSP_PAYLOAD_LEN 4
#else
#define LRWPAN_MACCMD_ASSOC_REQ_PAYLOAD_LEN 6  //has four extra bytes in it, 'magic number'
#define LRWPAN_MACCMD_ASSOC_RSP_PAYLOAD_LEN 7  //has three extra bytes, shortAddr & depth of parent
#endif

#define LRWPAN_MACCMD_COORD_REALIGN_PAYLOAD_LEN 8


//this is only for our beacons
#ifdef LRWPAN_ZIGBEE_BEACON_COMPLY
#define LRWPAN_NWK_BEACON_SIZE (9+4)    //9 byte payload, 4 byte header
#else
#define LRWPAN_NWK_BEACON_SIZE (9+4+4) //add in an extra four-byte magic number
#endif



#define LRWPAN_GET_CAPINFO_ALTPAN(x)       BITTST(x,0)
#define LRWPAN_GET_CAPINFO_DEVTYPE(x)      BITTST(x,1)
#define LRWPAN_GET_CAPINFO_PWRSRC(x)       BITTST(x,2)
#define LRWPAN_GET_CAPINFO_RONIDLE(x)      BITTST(x,3)
#define LRWPAN_GET_CAPINFO_SECURITY(x)     BITTST(x,6)
#define LRWPAN_GET_CAPINFO_ALLOCADDR(x)    BITTST(x,7)

#define LRWPAN_SET_CAPINFO_ALTPAN(x)       BITSET(x,0)
#define LRWPAN_SET_CAPINFO_DEVTYPE(x)      BITSET(x,1)
#define LRWPAN_SET_CAPINFO_PWRSRC(x)       BITSET(x,2)
#define LRWPAN_SET_CAPINFO_RONIDLE(x)      BITSET(x,3)
#define LRWPAN_SET_CAPINFO_SECURITY(x)     BITSET(x,6)
#define LRWPAN_SET_CAPINFO_ALLOCADDR(x)    BITSET(x,7)

#define LRWPAN_CLR_CAPINFO_ALTPAN(x)       BITCLR(x,0)
#define LRWPAN_CLR_CAPINFO_DEVTYPE(x)      BITCLR(x,1)
#define LRWPAN_CLR_CAPINFO_PWRSRC(x)       BITCLR(x,2)
#define LRWPAN_CLR_CAPINFO_RONIDLE(x)      BITCLR(x,3)
#define LRWPAN_CLR_CAPINFO_SECURITY(x)     BITCLR(x,6)
#define LRWPAN_CLR_CAPINFO_ALLOCADDR(x)    BITCLR(x,7)

//BEACON defs
#define LRWPAN_BEACON_SF_ASSOC_PERMIT_MASK (1<<7)
#define LRWPAN_BEACON_SF_PAN_COORD_MASK    (1<<6)

#define LRWPAN_GET_BEACON_SF_ASSOC_PERMIT(x) ( (x) & (LRWPAN_BEACON_SF_ASSOC_PERMIT_MASK))


//Association status
#define LRWPAN_ASSOC_STATUS_SUCCESS 0
#define LRWPAN_ASSOC_STATUS_NOROOM  1
#define LRWPAN_ASSOC_STATUS_DENIED  2
#define LRWPAN_ASSOC_STATUS_MASK    3

#define LRWPAN_GET_ASSOC_STATUS(x) ((x)&LRWPAN_ASSOC_STATUS_MASK)





#endif

⌨️ 快捷键说明

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