zaps_type.h
来自「ZIGBEE 2006协议栈 BAT测试代码 RADIO PULSE MG245」· C头文件 代码 · 共 444 行
H
444 行
////////////////////////////////////////////////////////////////
/////////////////////// APS Primitive ID Code /////////////////////
////////////////////////////////////////////////////////////////
#define aID_REQ 0x00
#define aID_RSP 0x01
#define aID_CON 0x02
#define aID_IND 0x03
#define aID_DATA 0x00
#define aID_BIND 0x10
#define aID_UNBIND 0x20
#define aID_SET 0x30
#define aID_GET 0x40
#define aID_ADD_GRP 0x50
#define aID_RM_GRP 0x60
#define aID_RM_ALL_GRP 0x70
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
#define apscMaxAddrMapEntry 1 // Minimum 1
#define apscMaxDescSize 64
#define apscMaxDiscoverSize 64
#define apscMaxFrameRetry 3
#define apscAckWaitDuration 5 // 0.05 * (2*nwkcMaxDepth) + (security encrypt delay)
#define apscMinRejectTableSize 1
#define aib_AddrMap 0xC0
#define aib_BindTable 0xC1
#define aib_GroupTable 0xC2
#define aSTA_SUCCESS 0x00
#define aSTA_NO_ACK 0xA1
#define aSTA_NO_BOUND_DEVICE 0xA2
#define aSTA_SECURITY_FAIL 0xA3
#define aSTA_ILLEGAL_DEVICE 0xA4
#define aSTA_INVALID_BINDING 0xA5
#define aSTA_NOT_SUPPORTED 0xA6
#define aSTA_ILLEGAL_REQUEST 0xA7
#define aSTA_RP_AQ_BUSY 0xAB // by RadioPulse
#define aSTA_RP_NSDU_OVER 0xAC // by RadioPulse
#define aAQ_IDLE 0x00
#define aAQ_STATE1 0x01
#define aAQ_STATE2 0x02
#define aAQ_STATE3 0x03
#define aAQ_STATE4 0x04
#define aAQ_STATE5 0x05
#define aAQ_STATE6 0x06
#define aCID_Nwk_Addr_Req 0x0000
#define aCID_IEEE_Addr_Req 0x0001
#define aCID_Node_Desc_Req 0x0002
#define aCID_Power_Desc_Req 0x0003
#define aCID_Simp_Desc_Req 0x0004
#define aCID_Active_EP_Req 0x0005
#define aCID_Match_Desc_Req 0x0006
#define aCID_Comp_Desc_Req 0x0010
#define aCID_User_Desc_Req 0x0011
#define aCID_Disc_Cache_Req 0x0012
#define aCID_End_Device_Ann 0x0013
#define aCID_User_Desc_Set 0x0014
#define aCID_Sys_Serv_Disc_Req 0x0015
#define aCID_Disc_Store_Req 0x0016
#define aCID_Node_Desc_Store_Req 0x0017
#define aCID_Power_Desc_Store_Req 0x0018
#define aCID_Active_EP_Store_Req 0x0019
#define aCID_Simp_Desc_Store_Req 0x001A
#define aCID_Rm_Node_Cache_Req 0x001B
#define aCID_Find_Node_Cache_Req 0x001C
#define aCID_End_Device_Bind_Req 0x0020
#define aCID_Bind_Req 0x0021
#define aCID_Unbind_Req 0x0022
#define aCID_Bind_Register_Req 0x0023
#define aCID_Replace_Device_Req 0x0024
#define aCID_Store_Back_Bind_Entry_Req 0x0025
#define aCID_Rm_Back_Bind_Entry_Req 0x0026
#define aCID_Back_Bind_Table_Req 0x0027
#define aCID_Reco_Bind_Table_Req 0x0028
#define aCID_Back_Src_Bind_Req 0x0029
#define aCID_Reco_Src_Bind_Req 0x002A
#define aCID_Mgmt_Nwk_Disc_Req 0x0030
#define aCID_Mgmt_LQI_Req 0x0031
#define aCID_Mgmt_Rtg_Req 0x0032
#define aCID_Mgmt_Bind_Req 0x0033
#define aCID_Mgmt_Leave_Req 0x0034
#define aCID_Mgmt_Direct_Join_Req 0x0035
#define aCID_Mgmt_Permit_Join_Req 0x0036
#define aCID_Mgmt_Cache_Req 0x0037
#define aCID_Nwk_Addr_Rsp 0x8000
#define aCID_IEEE_Addr_Rsp 0x8001
#define aCID_Node_Desc_Rsp 0x8002
#define aCID_Power_Desc_Rsp 0x8003
#define aCID_Simp_Desc_Rsp 0x8004
#define aCID_Active_EP_Rsp 0x8005
#define aCID_Match_Desc_Rsp 0x8006
#define aCID_Comp_Desc_Rsp 0x8010
#define aCID_User_Desc_Rsp 0x8011
#define aCID_User_Desc_Conf 0x8014
#define aCID_Sys_Serv_Disc_Rsp 0x8015
#define aCID_Disc_Store_Rsp 0x8016
#define aCID_Node_Desc_Store_Rsp 0x8017
#define aCID_Power_Desc_Store_Rsp 0x8018
#define aCID_Active_EP_Store_Rsp 0x8019
#define aCID_Simp_Desc_Store_Rsp 0x801A
#define aCID_Rm_Node_Cache_Rsp 0x801B
#define aCID_Find_Node_Cache_Rsp 0x801C
#define aCID_End_Device_Bind_Rsp 0x8020
#define aCID_Bind_Rsp 0x8021
#define aCID_Unbind_Rsp 0x8022
#define aCID_Bind_Register_Rsp 0x8023
#define aCID_Replace_Device_Rsp 0x8024
#define aCID_Store_Back_Bind_Entry_Rsp 0x8025
#define aCID_Rm_Back_Bind_Entry_Rsp 0x8026
#define aCID_Back_Bind_Table_Rsp 0x8027
#define aCID_Reco_Bind_Table_Rsp 0x8028
#define aCID_Back_Src_Bind_Rsp 0x8029
#define aCID_Reco_Src_Bind_Rsp 0x802A
#define aCID_Mgmt_Nwk_Disc_Rsp 0x8030
#define aCID_Mgmt_LQI_Rsp 0x8031
#define aCID_Mgmt_Rtg_Rsp 0x8032
#define aCID_Mgmt_Bind_Rsp 0x8033
#define aCID_Mgmt_Leave_Rsp 0x8034
#define aCID_Mgmt_Direct_Join_Rsp 0x8035
#define aCID_Mgmt_Permit_Join_Rsp 0x8036
#define aCID_Mgmt_Cache_Rsp 0x8037
typedef union
{
UINT8 Ext[8];
UINT16 Short;
} APS_AD;
typedef struct
{
UINT16 GroupID;
UINT8 EP_Count; // out of spec. by RadioPulse. the num of valid EP[]
UINT8 *pEP;
UINT8 EnaGT; // out of spec. by RadioPulse
} AS_GROUP_TABLE;
typedef struct
{
//- DstMode
// 1 : DstAddr_U is GroupID. DstEP field is invalid
// 3 : DstAddr_U is 64bit Ext Address. DstEP field is present
UINT8 Mode;
APS_AD Add_U;
UINT8 EP;
} AS_BIND_Dst; // Bind Dst Info
typedef struct
{
APS_AD SrcAdd_U;
UINT8 SrcEP;
UINT16 ClusID;
UINT8 Dst_Count; // out of spec. by RadioPulse. the num of valid DstAddr[], DstEP[]
AS_BIND_Dst *pDst; // out of soec. by RadioPulse.
UINT8 EnaBT; // out of spec. by RadioPulse
} AS_BIND_TABLE;
typedef struct
{
UINT8 IEEEAddr[8];
UINT16 NwkAddr;
UINT8 EnaAM; // out of spec. by RadioPulse
} AS_ADDR_MAP;
typedef struct
{
AS_ADDR_MAP *papsAddrMap;
AS_BIND_TABLE *papsBindTable;
AS_GROUP_TABLE *papsGroupTable;
} APS_PIB;
typedef struct
{
UINT8 DSN;
UINT8 SIZE_AM; // Size of Address Map
UINT8 SIZE_BT; // Size of Binding Table
UINT8 SIZE_BT_DST; // Size of Binding Table's Destination List
UINT8 SIZE_GT; // Size of Group Address Table
UINT8 SIZE_GT_EP; // Size of Group Address Table's EP List
UINT8 AQ0_PS;
} APS_PARA;
typedef struct
{
//-- DstMode
// 0 : DstAddr = not present. DstEP not present
// 1 : DstAddr = 16 bit Group Addr. DstEP not present
// 2 : DstAddr = 16 bit Addr. DstEP present
// 3 : DstAddr = 64 bit Addr. DstEP present
UINT8 DstMode;
APS_AD DstAdd_U;
UINT8 DstEP;
UINT16 ProfileID; // Profile ID
UINT16 ClusID; // Cluster ID
UINT8 SrcEP;
UINT8 asduLen; // length
//-- TxOption
// bit[7:4] : OOB Code. by RadioPulse
// bit[3] : MAC Security. by RadioPulse
// bit[2] : AckReq
// bit[1] : Use NWK Key
// bit[0] : Security
UINT8 TxOption;
UINT8 Radius;
UINT8 *pasdu;
} APSDE_DATA_req;
typedef struct
{
//-- DstMode
// 0 : DstAddr = not present. DstEP not present
// 1 : DstAddr = 16 bit Group Addr. DstEP not present
// 2 : DstAddr = 16 bit Addr. DstEP present
// 3 : DstAddr = 64 bit Addr. DstEP present
UINT8 DstMode;
APS_AD DstAdd_U;
UINT8 DstEP;
UINT8 SrcEP;
UINT8 Sta;
} APSDE_DATA_con;
typedef struct
{
//-- DstMode
// 0 : DstAddr = not present. DstEP not present
// 1 : DstAddr = 16 bit Group Addr. DstEP not present
// 2 : DstAddr = 16 bit Addr. DstEP present
// 3 : DstAddr = 64 bit Addr. DstEP present
UINT8 DstMode;
APS_AD DstAdd_U;
UINT8 DstEP;
//-- SrcMode
// 0 : SrcAddr = not present. SrcEP not present
// 1 : rsv
// 2 : SrcAddr = 16 bit SrcAddr. SrcEP present
// 3 : SrcAddr = 64 bit SrcAddr. SrcEP present
UINT8 SrcMode;
APS_AD SrcAdd_U;
UINT8 SrcEP;
UINT16 ProfileID; // Profile ID
UINT16 ClusID; // Cluster ID
UINT8 asduLen; // length
UINT8 Broadcast;
UINT8 Secure;
//UINT8 LQI; // out of spec. by RadioPulse
INT8 dBm; // out of spec. by RadioPulse
UINT8 *pasdu;
} APSME_DATA_ind;
typedef struct
{
APS_AD SrcAdd_U;
UINT8 SrcEP;
UINT16 ClusID;
UINT8 DstMode;
APS_AD DstAdd_U;
UINT8 DstEP;
} APSME_BIND_req;
typedef struct
{
UINT8 Sta;
APS_AD SrcAdd_U;
UINT8 SrcEP;
UINT16 ClusID;
UINT8 DstMode;
APS_AD DstAdd_U;
UINT8 DstEP;
} APSME_BIND_con;
typedef struct
{
APS_AD SrcAdd_U;
UINT8 SrcEP;
UINT16 ClusID;
UINT8 DstMode;
APS_AD DstAdd_U;
UINT8 DstEP;
} APSME_UNBIND_req;
typedef struct
{
UINT8 Sta;
APS_AD SrcAdd_U;
UINT8 SrcEP;
UINT16 ClusID;
UINT8 DstMode;
APS_AD DstAdd_U;
UINT8 DstEP;
} APSME_UNBIND_con;
typedef struct
{
UINT8 Attribute;
} APSME_GET_req;
typedef struct
{
UINT8 Sta;
UINT8 Attribute;
UINT8 AttributeLength; // length of entry
UINT8 *pAttributeValue;
} APSME_GET_con;
typedef struct
{
UINT8 Attribute;
UINT8 AttributeLength;
UINT8 *pAttributeValue;
} APSME_SET_req;
typedef struct
{
UINT8 Sta;
UINT8 Attribute;
} APSME_SET_con;
typedef struct
{
UINT16 GroupAddr;
UINT8 EndPoint;
} APSME_ADD_GROUP_req;
typedef struct
{
UINT8 Sta;
UINT16 GroupAddr;
UINT8 EndPoint;
} APSME_ADD_GROUP_con;
typedef struct
{
UINT16 GroupAddr;
UINT8 EndPoint;
} APSME_REMOVE_GROUP_req;
typedef struct
{
UINT8 Sta;
UINT16 GroupAddr;
UINT8 EndPoint;
} APSME_REMOVE_GROUP_con;
typedef struct
{
UINT8 EndPoint;
} APSME_REMOVE_ALL_GROUP_req;
typedef struct
{
UINT8 Sta;
UINT8 EndPoint;
} APSME_REMOVE_ALL_GROUP_con;
typedef union
{
APSDE_DATA_req DATA_REQ;
APSDE_DATA_con DATA_CON;
APSME_DATA_ind DATA_IND;
APSME_BIND_req BIND_REQ;
APSME_BIND_con BIND_CON;
APSME_UNBIND_req UNBIND_REQ;
APSME_UNBIND_con UNBIND_CON;
APSME_GET_req GET_REQ;
APSME_GET_con GET_CON;
APSME_SET_req SET_REQ;
APSME_SET_con SET_CON;
APSME_ADD_GROUP_req ADD_GROUP_REQ;
APSME_ADD_GROUP_con ADD_GROUP_CON;
APSME_REMOVE_GROUP_req REMOVE_GROUP_REQ;
APSME_REMOVE_GROUP_con REMOVE_GROUP_CON;
APSME_REMOVE_ALL_GROUP_req REMOVE_ALL_GROUP_REQ;
APSME_REMOVE_ALL_GROUP_con REMOVE_ALL_GROUP_CON;
} APSDME_PKT;
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
typedef struct
{
UINT8 FT : 2 ;
UINT8 DM : 2 ;
UINT8 IAM : 1 ;
UINT8 Sec : 1 ;
UINT8 Ack : 1 ;
UINT8 Rsv : 1 ;
} AS_FC_Sub;
typedef union
{
UINT8 All;
AS_FC_Sub b;
} AS_FC;
typedef struct
{
//--Frame Control --
// bit[7] : rsv
// bit[6] : AckReq
// bit[5] : Security
// bit[4] : Indirect Mode. When Delivery Mode=1 --> 0=SrcEP is not present, 1=DstEP is not present
// bit[3:2] : Delivery Mode. 0=Normal, 1=Indirect, 2=Broadcast, 3=Group
// bit[1:0] : Frame Type. 0=Data, 1=Command, 2=Ack
UINT8 FC;
UINT8 DstEP;
UINT16 GroupAddr;
UINT16 ClusID;
UINT16 ProfileID;
UINT8 SrcEP;
UINT8 DSN;
// bit[4] : SrcEP is present
// bit[3] : Profile ID is present
// bit[2] : ClusID is present
// bit[1] : GroupAddress is present
// bit[0] : DstEP is present
UINT8 FieldPresent;
} AS_HEAD;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?