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

📄 znwk_type.h

📁 ZIGBEE 2006协议栈 BAT测试代码 RADIO PULSE MG2455
💻 H
📖 第 1 页 / 共 2 页
字号:


typedef struct
{
	UINT8	Ena;
	UINT16	ShortAddr;
} S_DiscardAddr;


////////////////////////////////////////////////////////////////
/////////////////////// NWK Define Parameters ////////////////////
////////////////////////////////////////////////////////////////

#define	nFT_DATA		0x00
#define	nFT_CMD		0x01

#define	nBROAD_ALL		0xFFFF
#define	nBROAD_RSV		0xFFFE
#define	nBROAD_RXON	0xFFFD
#define	nBROAD_ZCZR	0xFFFC
#define	nBROAD_LOWEST	0xFFF8

#define	nASSO_STA_SUCCESS	0x00
#define	nASSO_STA_PAN_CAPA	0x01
#define	nASSO_STA_DENIED		0x02

////////////////////////////////////////////////////////////////
/////////////////////// NWK Primitive ID Code /////////////////////
////////////////////////////////////////////////////////////////

#define	nID_REQ			0x04
#define	nID_RSP				0x05
#define	nID_CON			0x06
#define	nID_IND				0x07

#define	nID_DATA			0x00
#define	nID_NET_DIS		0x10
#define	nID_NET_FOR		0x20
#define	nID_PERMIT_JOIN	0x30
#define	nID_START_ROU		0x40
#define	nID_JOIN			0x50
#define	nID_DIRECT_JOIN	0x60
#define	nID_LEAVE			0x70
#define	nID_RESET			0x80
#define	nID_SYNC			0x90
#define	nID_SET				0xA0
#define	nID_GET			0xB0
#define	nID_ROU_DIS		0xC0
#define	nID_ROU_ERR		0xD0
#define	nID_FORCE_JOIN		0xE0
#define	nID_GET_TABLE		0xF0

////////////////////////////////////////////////////////////////
/////////////////////// NWK Status Code /////////////////////////
////////////////////////////////////////////////////////////////

#define	nSTA_SUCCESS			0x00
#define	nSTA_INVALID_PARA		0xC1
#define	nSTA_INVALID_REQ		0xC2
#define	nSTA_NOT_PERMIT		0xC3
#define	nSTA_STARTUP_FAIL		0xC4
#define	nSTA_ALREADY_PRESENT	0xC5
#define	nSTA_SYNC_FAIL		0xC6
#define	nSTA_NEIGH_TAB_FULL	0xC7
#define	nSTA_UNKNOWN_DEVICE	0xC8
#define	nSTA_UNSUPPORT_ATTRI	0xC9
#define	nSTA_NO_NETWORKS		0xCA
#define	nSTA_LEAVE_UNCONFIRM	0xCB
#define	nSTA_MAX_FRM_CNTR	0xCC
#define	nSTA_NO_KEY			0xCD
#define	nSTA_BAD_CCM_OUTPUT	0xCE
#define	nSTA_NO_ROUTE_CAPA	0xCF
#define	nSTA_ROUTE_DISC_FAIL	0xD0
#define	nSTA_ROUTE_ERROR		0xD1
#define	nSTA_BT_TABLE_FULL	0xD2
#define	nSTA_FRAME_NO_BUFFER	0xD3

#define	nSTA_RP_NOT_DEFINED	0xD7	// by RadioPulse
#define	nSTA_RP_NQ_BUSY		0xDB	// by RadioPulse
#define	nSTA_RP_NO_IMPLEMENT	0xDC	// by RadioPulse
#define	nSTA_RP_ROUTE_FIRST	0xDE	// by RadioPulse
#define	nSTA_RP_FAKE_RETURN	0xDF	// by RadioPulse

////////////////////////////////////////////////////////////////
/////////////////////// Route Error Command ErrorCode /////////////
////////////////////////////////////////////////////////////////

#define	nROU_ERR_NO_ROUTE_AVAIL	0x00
#define	nROU_ERR_TREE_LINK			0x01
#define	nROU_ERR_NON_TREE_LINK	0x02
#define	nROU_ERR_LOW_BATTERY		0x03
#define	nROU_ERR_NO_ROUTE_CAPA	0x04
#define	nROU_ERR_NO_INDIR_CAPA	0x05
#define	nROU_ERR_INDIRECT_EXPIRE	0x06
#define	nROU_ERR_TARGET_UNAVAIL	0x07
#define	nROU_ERR_TARGET_UNALLOC	0x08
#define	nROU_ERR_PARENT_LINK		0x09
#define	nROU_ERR_VALIDATE_ROUTE	0x0A
#define	nROU_ERR_SOURCE_ROUTE	0x0B
#define	nROU_ERR_MANY2ONE_ROUTE	0x0C

////////////////////////////////////////////////////////////////
/////////////////////// RT Entry Status ///////////////////////////
////////////////////////////////////////////////////////////////

#define	nRTSTA_ACTIVE			0x00
#define	nRTSTA_DISC_UNDER		0x01
#define	nRTSTA_DISC_FAIL		0x02
#define	nRTSTA_INACTIVE		0x03
#define	nRTSTA_VALID_UNDER	0x04

////////////////////////////////////////////////////////////////
/////////////////////// NWK Command Code //////////////////////
////////////////////////////////////////////////////////////////

#define	nCMD_ROU_REQUEST	0x01	// Payload = 6Byte
#define	nCMD_ROU_REPLY	0x02	// Payload = 8Byte
#define	nCMD_ROU_ERROR	0x03	// Payload = 4Byte
#define	nCMD_LEAVE			0x04	// Payload = 2Byte
#define	nCMD_ROU_RECORD	0x05	// Payload = 2Byte + 2*RelayCount
#define	nCMD_REJOIN_REQ	0x06	// Payload = 2Byte
#define	nCMD_REJOIN_RSP	0x07	// Payload = 4Byte

////////////////////////////////////////////////////////////////
/////////////////////// NWK Constants ///////////////////////////
////////////////////////////////////////////////////////////////

#define	nwkcCoordCapa			1			// 0 or 1, pre-configured
#define	nwkcDefSecLevel		0x03
#define	nwkcDiscRetryLimit		0x03
#define	nwkcMaxDepth			0x0F
#define	nwkcMinHeadOverhead	0x08
#define	nwkcProtocolVersion		0x02		// 2=ZigBee 2006
#define	nwkcWaitBeforeValid		0x500		// 1280 ms
#define	nwkcRepairThreshold	0x03
#define	nwkcRouteDiscTime		0x2710		// 10000 ms
//#define	nwkcRouteDiscTime		2000		// 2000 ms
#define	nwkcMaxBroadJitter		0x40		// 64 ms
#define	nwkcInitRREQRetry		0x03
#define	nwkcRREQRetry			0x02
#define	nwkcRREQRetryInterval	0xFE		// 255 ms
#define	nwkcMinRREQJitter		0x01		// in 2 millisecond slots
#define	nwkcMaxRREQJitter		0x40		// in 2 millisecond slots
#define	nwkcMaxNSDU			96			// by RadioPulse

#define	nNQ_IDLE	0x00
#define	nNQ_TRANS	0x01
#define	nNQ_WAIT	0x02

#define	nNQ_IDX_RREQ_M2O		0x80
#define	nNQ_IDX_RREQ_DST		0x81
#define	nNQ_IDX_RREQ_REBROAD	0x82
#define	nNQ_IDX_DATA_REBROAD	0x83
#define	nNQ_IDX_DATA_BROAD	0x84

////////////////////////////////////////////////////////////////
/////////////////////// NWK Table ///////////////////////////////
////////////////////////////////////////////////////////////////

typedef struct
{
	UINT16	PanID;
	UINT8	EPID[8];
	UINT8	Chan;
	UINT8	Ver_Stack;
	UINT8	SO_BO;
	UINT8	PermitJoin;
	
	UINT16	NwkAddr;		// out of spec. defined by RadioPulse
	UINT8	ProtoID;			// out of spec. defined by RadioPulse
	UINT8	Depth;			// out of spec. defined by RadioPulse
	UINT8	EnaDESC;		// out of spec. defined by RadioPulse
} NS_DESC;

typedef struct
{
	UINT16	FT		: 2 	;	// bit[1:0]
	UINT16	ProVer	: 4	;	// bit[5:2]
	UINT16	DiscRou	: 2	;	// bit[7:6]
	UINT16	Multi	: 1	;	// bit[8]
	UINT16	Secure	: 1	;	// bit[9]
	UINT16	SrcRou	: 1	;	// bit[10]
	UINT16	DstIEEE	: 1	;	// bit[11]
	UINT16	SrcIEEE	: 1	;	// bit[12]
	UINT16	rsv		: 3	;	// bit[15:13]
} NS_FC_Sub;

typedef union
{
	UINT16		All;		// full word
	NS_FC_Sub	b;
} NS_FC;

typedef struct
{
	UINT8	MultiMode	: 2 	;	// 0=NonMember Mode, 1=Member Mode
	UINT8	NonMemRad	: 3 	;
	UINT8	MaxNonMem	: 3 	;	
} NS_MC_Sub;

typedef union
{
	UINT8		All;		// Full Byte
	NS_MC_Sub	b;
} NS_MC;

typedef struct
{
	UINT8	Cnt;
	UINT8	Index;
	UINT16	List[4];
} NS_SR;

typedef struct {
	NS_FC	FC;
	UINT16	DstAddr;
	UINT16	SrcAddr;
	UINT8	Radius;
	UINT8	SN;
	UINT8	DstIEEEAddr[8];	// if FC.DstIEEE=1, present
	UINT8	SrcIEEEAddr[8];	// if FC.SrcIEEE=1, present	
	NS_MC	MultiCtrl;		// if FC.Multi=1, present
	NS_SR	SrcRoute;		// if FC.SrcRoute=1, present
} NS_HEAD;

typedef struct {
	UINT8	CID;		// Command ID=0x01
	// bit[7] 		: 1=Route Repair
	// bit[6]		: 1=Multicast
	// bit[5:0] 	: rsv
	UINT8	Opt;
	UINT8	RID;		// Request ID
	UINT16	DstAddr;
	UINT8	PathCost;
} NS_RREQ_CMD;

typedef struct {
	UINT8	CID;		// Command ID=0x02
	// bit[7] 		: 1=Route Repair
	// bit[6]		: 1=Multicast
	// bit[5:0] 	: rsv	
	UINT8	Opt;
	UINT8	RID;		// Request ID
	UINT16	OrgAddr;	// RREQ's source
	UINT16	RspAddr;	// RREQ's destination
	UINT8	PathCost;
} NS_RREP_CMD;

typedef struct {
	UINT8	CID;		// Command ID=0x03
	UINT8	ERR;		// Error Code
	UINT16	DstAddr;
} NS_RERR_CMD;

typedef struct {
	UINT8	CID;		// Command ID=0x04
	// bit[7]		: Rm Child. 	1=Remove Children
	// bit[6]		: Request.	1=Rm Device, 0=I will leave
	// bit[5]		: Rejoin.		1=Rejoin after leaving
	// bit[4:0]	: rsv
	UINT8	Opt;
} NS_LEAVE_CMD;

typedef struct {
	UINT8	CID;		// Command ID=0x05
	UINT8	RelayCnt;	
//	UINT16	RelayList[2];
} NS_RREC_CMD;

typedef struct {
	UINT8	CID;		// Command ID=0x06
	//-- CapaInfo
	//	bit[7]	: 1=Allocate Addr. Always 1 in ZigBee 2006
	//	bit[6]	: 1=MAC Security enabled
	//	bit[5:4]	: rsv
	//	bit[3]	: 1=RxOnWhenIdle
	//	bit[2]	: 1=Mains-powered
	//	bit[1]	: 1=(Joining Device is ZR) && (JoinAsRouter=1)
	//	bit[0]	: 1=Alternative Coordinator		
	UINT8	CapaInfo;	
} NS_RejREQ_CMD;

typedef struct {
	UINT8	CID;		// Command ID=0x07
	UINT16	SrcAddr;
	UINT8	RejSta;
} NS_RejRSP_CMD;

typedef union
{
	NS_RREQ_CMD 	RouREQ;
	NS_RREP_CMD	RouREP;
	NS_RERR_CMD	RouERR;
	NS_LEAVE_CMD	Leave;
	NS_RREC_CMD	RouREC;
	NS_RejREQ_CMD	RejREQ;
	NS_RejRSP_CMD	RejRSP;
} NS_PAY;


// Routing Table
typedef struct
{
	UINT16	DstAddr;		
	// bit[7:6]	: rsv
	// bit[5]		: GroupID Flag
	// bit[4]		: Route Record Required
	// bit[3] 		: Many-To-One
	// bit[2:0]	: rsv
	UINT8	RtOption;
	UINT8	Sta;			// nRTSTA_ACTIVE ....
	UINT16	NextHop;
	UINT8	EnaRT;
} NS_RT;

typedef struct
{
	UINT16	GroupID;
	UINT8	EnaGID;
} NS_GID;

#define	AND_RT_OPT_GID	0x20
#define	AND_RT_OPT_RouRec	0x10
#define	AND_RT_OPT_M2O	0x08
#define	AND_RT_OPT_Sta	0x07

// Route Discovery Table
typedef struct
{
	UINT8	RouID;
	UINT16	SrcAddr;
	UINT16	SenderAddr;
	UINT8	ForCost;		// cost from Route Request Source To Me
	UINT8	ResCost;	// cost from Me to Route Destination
	UINT16	RdtExpTime;	// if ExpTime != 0, valid entry

	UINT16	DstAddr;	// out of spec. by RadioPulse
} NS_RDT;


// Neighbor Table
typedef struct
{	
	UINT8	IEEEAddr[8];
	UINT16	NwkAddr;
	UINT8	DevType;	// DeviceType. 0=ZC, 1=ZR, 2=ZED	
	UINT8	RxOnWhenIdle;
	UINT8	Relation;	// RelationShip. 0=neighbor is parent, 1=child, 2=sibling, 3=no relation, 4=previous child
	UINT8	FailCnt;
	UINT8	LQI;
	UINT32	BeaconTime;	// optional field
	UINT32	BeaconOffset;	// optional field
	UINT8	EnaNT;
} NS_NT;

#define	nNT_RELATION_PARENT		0x00
#define	nNT_RELATION_CHILD		0x01
#define	nNT_RELATION_SIBLING		0x02
#define	nNT_RELATION_NO			0x03
#define	nNT_RELATION_PREV_CHILD	0x04
#define	nNT_DEVTYPE_ZC	0x00
#define	nNT_DEVTYPE_ZR	0x01
#define	nNT_DEVTYPE_ZED	0x02


// Additional Neighbor Table
typedef struct
{
	UINT8	EPID[8];		// Extended PAN ID
	UINT8	CH;
	UINT8	Depth;
	UINT8	BO;
	// bit[7:2]	: rsv
	// bit[1]		: PotenParent;
	// bit[0]		: PermitJoin;
	UINT8	Option;
} NS_ANT;

// Broadcast Transaction Table
typedef struct
{
	UINT16	SrcAddr;
	UINT8	SeqNum;
	UINT16	BttExpTime;		// Max 10000 ms
} NS_BTT;

typedef struct
{
	UINT16	SrcAddr;
	UINT8	EnaSRT;
} NS_SRT;

// MAC Beacon Payload
typedef struct
{
	UINT8	ProtocolID;

⌨️ 快捷键说明

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