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

📄 ieee_lrwpan_defs.h

📁 该演示程序实现温度的采集与显示功能
💻 H
字号:


/*
  V0.1 Initial Release   10/July/2006  RBR

*/


#ifndef IEEE_LRWPAN_DEFS_H
#define IEEE_LRWPAN_DEFS_H

#include"generic.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
#define LRWPAN_NWK_BEACON_SIZE 9    //our beacons are currently 9 bytes after the header

#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)


typedef DWORD TICK;

#endif

⌨️ 快捷键说明

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