📄 znwk_type.h
字号:
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 + -